[llvm-commits] [llvm] r141901 - in /llvm/trunk: lib/Object/ELFObjectFile.cpp test/Object/objdump-relocations.test

Michael J. Spencer bigcheesegs at gmail.com
Thu Oct 13 15:30:10 PDT 2011


Author: mspencer
Date: Thu Oct 13 17:30:10 2011
New Revision: 141901

URL: http://llvm.org/viewvc/llvm-project?rev=141901&view=rev
Log:
ELF: Fix the section that relocations apply to. Add test to verify. Patch by Danil Malyshev!

Modified:
    llvm/trunk/lib/Object/ELFObjectFile.cpp
    llvm/trunk/test/Object/objdump-relocations.test

Modified: llvm/trunk/lib/Object/ELFObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELFObjectFile.cpp?rev=141901&r1=141900&r2=141901&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ELFObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/ELFObjectFile.cpp Thu Oct 13 17:30:10 2011
@@ -762,7 +762,7 @@
   const Elf_Shdr *sec = reinterpret_cast<const Elf_Shdr *>(Sec.p);
   typename RelocMap_t::const_iterator ittr = SectionRelocMap.find(sec);
   if (sec != 0 && ittr != SectionRelocMap.end()) {
-    RelData.w.a = getSection(ittr->second[0])->sh_link;
+    RelData.w.a = getSection(ittr->second[0])->sh_info;
     RelData.w.b = ittr->second[0];
     RelData.w.c = 0;
   }
@@ -780,7 +780,7 @@
     // Get the index of the last relocation section for this section.
     std::size_t relocsecindex = ittr->second[ittr->second.size() - 1];
     const Elf_Shdr *relocsec = getSection(relocsecindex);
-    RelData.w.a = relocsec->sh_link;
+    RelData.w.a = relocsec->sh_info;
     RelData.w.b = relocsecindex;
     RelData.w.c = relocsec->sh_size / relocsec->sh_entsize;
   }
@@ -1114,7 +1114,7 @@
       SymbolTableSections.push_back(sh);
     }
     if (sh->sh_type == ELF::SHT_REL || sh->sh_type == ELF::SHT_RELA) {
-      SectionRelocMap[getSection(sh->sh_link)].push_back(i);
+      SectionRelocMap[getSection(sh->sh_info)].push_back(i);
     }
     ++sh;
   }

Modified: llvm/trunk/test/Object/objdump-relocations.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/objdump-relocations.test?rev=141901&r1=141900&r2=141901&view=diff
==============================================================================
--- llvm/trunk/test/Object/objdump-relocations.test (original)
+++ llvm/trunk/test/Object/objdump-relocations.test Thu Oct 13 17:30:10 2011
@@ -7,18 +7,22 @@
 RUN: llvm-objdump -r %p/TestObjectFiles/trivial-object-test.elf-x86-64 \
 RUN:              | FileCheck %s -check-prefix ELF-x86-64
 
+COFF-i386: .text
 COFF-i386: IMAGE_REL_I386_DIR32 L_.str
 COFF-i386: IMAGE_REL_I386_REL32 _puts
 COFF-i386: IMAGE_REL_I386_REL32 _SomeOtherFunction
 
+COFF-x86-64: .text
 COFF-x86-64: IMAGE_REL_AMD64_REL32 L.str
 COFF-x86-64: IMAGE_REL_AMD64_REL32 puts
 COFF-x86-64: IMAGE_REL_AMD64_REL32 SomeOtherFunction
 
+ELF-i386: .text
 ELF-i386: R_386_32
 ELF-i386: R_386_PC32
 ELF-i386: R_386_PC32
 
+ELF-x86-64: .text
 ELF-x86-64: R_X86_64_32S .rodata.str1.1
 ELF-x86-64: R_X86_64_PC32 puts
 ELF-x86-64: R_X86_64_PC32 SomeOtherFunction





More information about the llvm-commits mailing list