diff options
author | George Rimar <grimar@accesssoftek.com> | 2015-10-28 18:16:24 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2015-10-28 18:16:24 +0000 |
commit | 9413fa26af7fe9b01ec758b77cf9203ee9b94d77 (patch) | |
tree | 21628b7acfd46ad47511531bd85c837e7ce52789 | |
parent | da4e8aeec68136c86896cbd3e61a8ef5704d304b (diff) | |
download | bcm5719-llvm-9413fa26af7fe9b01ec758b77cf9203ee9b94d77.tar.gz bcm5719-llvm-9413fa26af7fe9b01ec758b77cf9203ee9b94d77.zip |
Revert r251536 as it broke buildbot: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/2104
llvm-svn: 251539
-rw-r--r-- | lld/ELF/Target.cpp | 10 | ||||
-rw-r--r-- | lld/test/elf2/dynamic-reloc-index.s | 4 | ||||
-rw-r--r-- | lld/test/elf2/dynamic-reloc.s | 20 |
3 files changed, 19 insertions, 15 deletions
diff --git a/lld/ELF/Target.cpp b/lld/ELF/Target.cpp index 8a33629fafe..1f1b344cb2d 100644 --- a/lld/ELF/Target.cpp +++ b/lld/ELF/Target.cpp @@ -262,9 +262,14 @@ bool X86_64TargetInfo::relocNeedsGot(uint32_t Type, const SymbolBody &S) const { } unsigned X86_64TargetInfo::getPLTRefReloc(unsigned Type) const { - if (Type == R_X86_64_PLT32) + switch (Type) { + case R_X86_64_32: + return R_X86_64_32; + case R_X86_64_PC32: + case R_X86_64_PLT32: return R_X86_64_PC32; - return Type; + } + llvm_unreachable("Unexpected relocation"); } bool X86_64TargetInfo::relocNeedsPlt(uint32_t Type, const SymbolBody &S) const { @@ -275,7 +280,6 @@ bool X86_64TargetInfo::relocNeedsPlt(uint32_t Type, const SymbolBody &S) const { default: return false; case R_X86_64_32: - case R_X86_64_64: case R_X86_64_PC32: // This relocation is defined to have a value of (S + A - P). // The problems start when a non PIC program calls a function in a shared diff --git a/lld/test/elf2/dynamic-reloc-index.s b/lld/test/elf2/dynamic-reloc-index.s index 3020ba700ce..feefd17add6 100644 --- a/lld/test/elf2/dynamic-reloc-index.s +++ b/lld/test/elf2/dynamic-reloc-index.s @@ -7,8 +7,8 @@ // We used to record the wrong symbol index for this test // CHECK: Relocations [ -// CHECK-NEXT: Section ({{.*}}) .rela.plt { -// CHECK-NEXT: 0x120C8 R_X86_64_JUMP_SLOT bar 0x0 +// CHECK-NEXT: Section ({{.*}}) .rela.dyn { +// CHECK-NEXT: 0x11000 R_X86_64_64 bar 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] diff --git a/lld/test/elf2/dynamic-reloc.s b/lld/test/elf2/dynamic-reloc.s index c5f91a1cc28..a580b466f6d 100644 --- a/lld/test/elf2/dynamic-reloc.s +++ b/lld/test/elf2/dynamic-reloc.s @@ -9,7 +9,7 @@ // CHECK: Index: 1 // CHECK-NEXT: Name: .dynsym -// CHECK: Name: .rela.plt +// CHECK: Name: .rela.dyn // CHECK-NEXT: Type: SHT_RELA // CHECK-NEXT: Flags [ // CHECK-NEXT: SHF_ALLOC @@ -28,25 +28,24 @@ // CHECK-NEXT: SHF_ALLOC // CHECK-NEXT: SHF_EXECINSTR // CHECK-NEXT: ] -// CHECK-NEXT: Address: 0x11000 +// CHECK-NEXT: Address: [[ADDR:.*]] // CHECK: Relocations [ -// CHECK-NEXT: Section ({{.*}}) .rela.plt { +// CHECK-NEXT: Section ({{.*}}) .rela.dyn { // CHECK-NEXT: Relocation { -// CHECK-NEXT: Offset: 0x120C8 -// CHECK-NEXT: Type: R_X86_64_JUMP_SLOT +// CHECK-NEXT: Offset: [[ADDR]] +// CHECK-NEXT: Type: R_X86_64_64 // CHECK-NEXT: Symbol: bar -// CHECK-NEXT: Addend: 0x0 +// CHECK-NEXT: Addend: 0x42 // CHECK-NEXT: } // CHECK-NEXT: } // CHECK-NEXT: ] // CHECK: DynamicSection [ // CHECK-NEXT: Tag Type Name/Value -// CHECK-NEXT: 0x0000000000000017 JMPREL 0x10200 -// CHECK-NEXT: 0x0000000000000002 PLTRELSZ 24 (bytes) -// CHECK-NEXT: 0x0000000000000003 PLTGOT 0x120B0 -// CHECK-NEXT: 0x0000000000000014 PLTREL RELA +// CHECK-NEXT: 0x0000000000000007 RELA [[RELAADDR]] +// CHECK-NEXT: 0x0000000000000008 RELASZ [[RELASIZE]] (bytes) +// CHECK-NEXT: 0x0000000000000009 RELAENT 24 (bytes) // CHECK-NEXT: 0x0000000000000006 SYMTAB // CHECK-NEXT: 0x000000000000000B SYMENT 24 (bytes) // CHECK-NEXT: 0x0000000000000005 STRTAB @@ -56,6 +55,7 @@ // CHECK-NEXT: 0x0000000000000000 NULL 0x0 // CHECK-NEXT: ] + .global _start _start: .quad bar + 0x42 |