--- a/arch/alpha/kernel/module.c 2006-09-19 20:42:06.000000000 -0700 +++ b/arch/alpha/kernel/module.c 2007-02-25 21:15:57.000000000 -0800 @@ -212,7 +212,7 @@ case R_ALPHA_LITERAL: hi = got + r_got_offset; lo = hi - gp; - if ((short)lo != lo) + if ((unsigned short)lo != lo) goto reloc_overflow; *(u16 *)location = lo; *(u64 *)hi = value; @@ -221,7 +221,7 @@ break; case R_ALPHA_GPDISP: value = gp - (u64)location; - lo = (short)value; + lo = (unsigned short)value; hi = (int)(value - lo); if (hi + lo != value) goto reloc_overflow; @@ -274,7 +274,7 @@ break; case R_ALPHA_GPREL16: value -= gp; - if ((short) value != value) + if ((unsigned short) value != value) goto reloc_overflow; *(u16 *)location = value; break; @@ -285,12 +285,12 @@ reloc_overflow: if (ELF64_ST_TYPE (sym->st_info) == STT_SECTION) printk(KERN_ERR - "module %s: Relocation overflow vs section %d\n", - me->name, sym->st_shndx); + "module %s: Relocation overflow vs section %d of type %lu\n", + me->name, sym->st_shndx,r_type); else printk(KERN_ERR - "module %s: Relocation overflow vs %s\n", - me->name, strtab + sym->st_name); + "module %s: Relocation overflow vs %s of type %lu\n", + me->name, strtab + sym->st_name,r_type); return -ENOEXEC; } }