Commit 601e7f024edbea8018de34c83a7398623214e636
1 parent
6810b548b2
Exists in
master
and in
4 other branches
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) |