[lld] r191566 - [ELF] Mark STT_GNU_IFUNC symbols as code.

Michael J. Spencer bigcheesegs at gmail.com
Fri Sep 27 14:30:05 PDT 2013


Author: mspencer
Date: Fri Sep 27 16:30:04 2013
New Revision: 191566

URL: http://llvm.org/viewvc/llvm-project?rev=191566&view=rev
Log:
[ELF] Mark STT_GNU_IFUNC symbols as code.

Added:
    lld/trunk/test/elf/Inputs/libifunc.x86-64.so
Modified:
    lld/trunk/lib/ReaderWriter/ELF/Atoms.h
    lld/trunk/test/elf/ifunc.test

Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=191566&r1=191565&r2=191566&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Fri Sep 27 16:30:04 2013
@@ -776,6 +776,7 @@ public:
   virtual Type type() const {
     switch (_symbol->getType()) {
     case llvm::ELF::STT_FUNC:
+    case llvm::ELF::STT_GNU_IFUNC:
       return Type::Code;
     case llvm::ELF::STT_OBJECT:
       return Type::Data;

Added: lld/trunk/test/elf/Inputs/libifunc.x86-64.so
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/Inputs/libifunc.x86-64.so?rev=191566&view=auto
==============================================================================
Binary files lld/trunk/test/elf/Inputs/libifunc.x86-64.so (added) and lld/trunk/test/elf/Inputs/libifunc.x86-64.so Fri Sep 27 16:30:04 2013 differ

Modified: lld/trunk/test/elf/ifunc.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/ifunc.test?rev=191566&r1=191565&r2=191566&view=diff
==============================================================================
--- lld/trunk/test/elf/ifunc.test (original)
+++ lld/trunk/test/elf/ifunc.test Fri Sep 27 16:30:04 2013
@@ -12,6 +12,11 @@ RUN:   -e main -static %p/Inputs/ifunc.c
 RUN: llvm-objdump -d -s %t| FileCheck %s --check-prefix=BIN
 RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELATIVEADDEND
 
+# Test that STT_GNU_IFUNC symbols have type Code in SharedLibraryAtom.
+RUN: lld -flavor gnu -target x86_64-linux --output-filetype=yaml \
+RUN:   --noinhibit-exec %p/Inputs/ifunc.cpp.x86-64 -L%p/Inputs -lifunc.x86-64 \
+RUN: | FileCheck %s --check-prefix=SHARED
+
 PLT: defined-atoms:
 
 // Make sure there's a got entry with a IRELATIVE relocation.
@@ -58,3 +63,7 @@ RELATIVEADDEND-NEXT:   Section (1) .rela
 RELATIVEADDEND-NEXT:     0x401000 R_X86_64_IRELATIVE - 0x4000E0
 RELATIVEADDEND-NEXT:   }
 RELATIVEADDEND-NEXT: ]
+
+SHARED: shared-library-atoms
+SHARED: name: hey
+SHARED-NOT: data





More information about the llvm-commits mailing list