[lld] r191567 - [ELF] Handle copy relocations for PC32.
Michael J. Spencer
bigcheesegs at gmail.com
Fri Sep 27 14:30:28 PDT 2013
Author: mspencer
Date: Fri Sep 27 16:30:27 2013
New Revision: 191567
URL: http://llvm.org/viewvc/llvm-project?rev=191567&view=rev
Log:
[ELF] Handle copy relocations for PC32.
This will eventually need to be refactored to better handle COPY relocations,
as other relocations can also generate them. I'm not yet sure the exact
circumstances in which they are needed yet.
Added:
lld/trunk/test/elf/Inputs/undef-pc32.o
Modified:
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
lld/trunk/test/elf/undef-from-main-dso.test
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=191567&r1=191566&r2=191567&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp Fri Sep 27 16:30:27 2013
@@ -407,7 +407,10 @@ public:
if (auto sla = dyn_cast<SharedLibraryAtom>(ref.target())) {
if (sla->type() == SharedLibraryAtom::Type::Code)
return handlePLT32(ref);
- else
+ else if (sla->type() == SharedLibraryAtom::Type::Data) {
+ const_cast<Reference &>(ref).setTarget(getObjectEntry(sla));
+ return error_code::success();
+ } else
return handleGOTPCREL(ref);
}
return handleIFUNC(ref);
Added: lld/trunk/test/elf/Inputs/undef-pc32.o
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/undef-pc32.o?rev=191567&view=auto
==============================================================================
Binary files lld/trunk/test/elf/Inputs/undef-pc32.o (added) and lld/trunk/test/elf/Inputs/undef-pc32.o Fri Sep 27 16:30:27 2013 differ
Modified: lld/trunk/test/elf/undef-from-main-dso.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/undef-from-main-dso.test?rev=191567&r1=191566&r2=191567&view=diff
==============================================================================
--- lld/trunk/test/elf/undef-from-main-dso.test (original)
+++ lld/trunk/test/elf/undef-from-main-dso.test Fri Sep 27 16:30:27 2013
@@ -1,6 +1,9 @@
RUN: lld -flavor gnu -e main -o %t -L%p/Inputs -lundef %p/Inputs/undef.o
RUN: llvm-readobj -relocations -symbols %t | FileCheck %s
+RUN: lld -flavor gnu -e main -o %t -L%p/Inputs -lundef %p/Inputs/undef-pc32.o
+RUN: llvm-readobj -relocations -symbols %t | FileCheck %s
+
# DSO source code:
# int x[2] = { 1, 2 };
#
More information about the llvm-commits
mailing list