Commit 471d20d0 authored by Mike Hommey's avatar Mike Hommey
Browse files

Bug 727959 - Don't error out when missing symbol for PLT relocations is weak. r=nfroyd

parent bf43c7e1
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -679,8 +679,11 @@ CustomElf::RelocateJumps()
      symptr = GetSymbolPtrInDeps(strtab.GetStringAt(sym.st_name));

    if (symptr == NULL) {
      log("%s: Error: relocation to NULL @0x%08" PRIxAddr " for symbol \"%s\"",
          GetPath(), rel->r_offset, strtab.GetStringAt(sym.st_name));
      log("%s: %s: relocation to NULL @0x%08" PRIxAddr " for symbol \"%s\"",
          GetPath(),
          (ELF_ST_BIND(sym.st_info) == STB_WEAK) ? "Warning" : "Error",
          rel->r_offset, strtab.GetStringAt(sym.st_name));
      if (ELF_ST_BIND(sym.st_info) != STB_WEAK)
        return false;
    }
    /* Apply relocation */
+6 −0
Original line number Diff line number Diff line
@@ -26,12 +26,18 @@
#define ELFCLASS ELFCLASS64
#define ELF_R_TYPE ELF64_R_TYPE
#define ELF_R_SYM ELF64_R_SYM
#ifndef ELF_ST_BIND
#define ELF_ST_BIND ELF64_ST_BIND
#endif
#define PRIxAddr "lx"
#else
#define Elf_(type) Elf32_ ## type
#define ELFCLASS ELFCLASS32
#define ELF_R_TYPE ELF32_R_TYPE
#define ELF_R_SYM ELF32_R_SYM
#ifndef ELF_ST_BIND
#define ELF_ST_BIND ELF32_ST_BIND
#endif
#define PRIxAddr "x"
#endif