Commit 601e7f024edbea8018de34c83a7398623214e636

Authored by Linus Torvalds
1 parent 6810b548b2

Revert "kbuild: fix modpost segfault for 64bit mipsel kernel"

This reverts commit c8d8b837ebe4b4f11e1b0c4a2bdc358c697692ed, which
caused problems for the x86 build. Quoth Sam:

  "It was discussed on mips list but apparently the fix was bogus.  I
   will not have time to look into it so mips can carry this local fix
   until we get a proper fix in mainline."

Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Showing 2 changed files with 2 additions and 28 deletions Side-by-side Diff

scripts/mod/modpost.c
... ... @@ -709,17 +709,10 @@
709 709 for (rela = start; rela < stop; rela++) {
710 710 Elf_Rela r;
711 711 const char *secname;
712   - unsigned int r_sym;
713 712 r.r_offset = TO_NATIVE(rela->r_offset);
714   - if (hdr->e_ident[EI_CLASS] == ELFCLASS64 &&
715   - hdr->e_machine == EM_MIPS) {
716   - r_sym = ELF64_MIPS_R_SYM(rela->r_info);
717   - r_sym = TO_NATIVE(r_sym);
718   - } else {
719   - r_sym = ELF_R_SYM(TO_NATIVE(rela->r_info));
720   - }
  713 + r.r_info = TO_NATIVE(rela->r_info);
721 714 r.r_addend = TO_NATIVE(rela->r_addend);
722   - sym = elf->symtab_start + r_sym;
  715 + sym = elf->symtab_start + ELF_R_SYM(r.r_info);
723 716 /* Skip special sections */
724 717 if (sym->st_shndx >= SHN_LORESERVE)
725 718 continue;
scripts/mod/modpost.h
... ... @@ -39,25 +39,6 @@
39 39 #define ELF_R_TYPE ELF64_R_TYPE
40 40 #endif
41 41  
42   -/* The 64-bit MIPS ELF ABI uses an unusual reloc format. */
43   -typedef struct
44   -{
45   - Elf32_Word r_sym; /* Symbol index */
46   - unsigned char r_ssym; /* Special symbol for 2nd relocation */
47   - unsigned char r_type3; /* 3rd relocation type */
48   - unsigned char r_type2; /* 2nd relocation type */
49   - unsigned char r_type1; /* 1st relocation type */
50   -} _Elf64_Mips_R_Info;
51   -
52   -typedef union
53   -{
54   - Elf64_Xword r_info_number;
55   - _Elf64_Mips_R_Info r_info_fields;
56   -} _Elf64_Mips_R_Info_union;
57   -
58   -#define ELF64_MIPS_R_SYM(i) \
59   - ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
60   -
61 42 #if KERNEL_ELFDATA != HOST_ELFDATA
62 43  
63 44 static inline void __endian(const void *src, void *dest, unsigned int size)