Skip to content

Commit

Permalink
Revert "kbuild: fix modpost segfault for 64bit mipsel kernel"
Browse files Browse the repository at this point in the history
This reverts commit c8d8b83, 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>
  • Loading branch information
Linus Torvalds committed May 8, 2006
1 parent 6810b54 commit 601e7f0
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 28 deletions.
11 changes: 2 additions & 9 deletions scripts/mod/modpost.c
Original file line number Diff line number Diff line change
Expand Up @@ -709,17 +709,10 @@ static void check_sec_ref(struct module *mod, const char *modname,
for (rela = start; rela < stop; rela++) {
Elf_Rela r;
const char *secname;
unsigned int r_sym;
r.r_offset = TO_NATIVE(rela->r_offset);
if (hdr->e_ident[EI_CLASS] == ELFCLASS64 &&
hdr->e_machine == EM_MIPS) {
r_sym = ELF64_MIPS_R_SYM(rela->r_info);
r_sym = TO_NATIVE(r_sym);
} else {
r_sym = ELF_R_SYM(TO_NATIVE(rela->r_info));
}
r.r_info = TO_NATIVE(rela->r_info);
r.r_addend = TO_NATIVE(rela->r_addend);
sym = elf->symtab_start + r_sym;
sym = elf->symtab_start + ELF_R_SYM(r.r_info);
/* Skip special sections */
if (sym->st_shndx >= SHN_LORESERVE)
continue;
Expand Down
19 changes: 0 additions & 19 deletions scripts/mod/modpost.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,25 +39,6 @@
#define ELF_R_TYPE ELF64_R_TYPE
#endif

/* The 64-bit MIPS ELF ABI uses an unusual reloc format. */
typedef struct
{
Elf32_Word r_sym; /* Symbol index */
unsigned char r_ssym; /* Special symbol for 2nd relocation */
unsigned char r_type3; /* 3rd relocation type */
unsigned char r_type2; /* 2nd relocation type */
unsigned char r_type1; /* 1st relocation type */
} _Elf64_Mips_R_Info;

typedef union
{
Elf64_Xword r_info_number;
_Elf64_Mips_R_Info r_info_fields;
} _Elf64_Mips_R_Info_union;

#define ELF64_MIPS_R_SYM(i) \
((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)

#if KERNEL_ELFDATA != HOST_ELFDATA

static inline void __endian(const void *src, void *dest, unsigned int size)
Expand Down

0 comments on commit 601e7f0

Please sign in to comment.