diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-05-03 19:57:04 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-05-03 19:57:04 +0000 |
commit | 930ca9843331c2cdce2a49517f661d60bfe61204 (patch) | |
tree | f434a95534279e21354ed733a6a6cbd95bfa4da5 /test/MC | |
parent | 72e96a51bffcda773a9b8c11789a7018ea72c768 (diff) | |
download | llvm-930ca9843331c2cdce2a49517f661d60bfe61204.tar.gz llvm-930ca9843331c2cdce2a49517f661d60bfe61204.tar.bz2 llvm-930ca9843331c2cdce2a49517f661d60bfe61204.tar.xz |
Fix pr19645.
The fix itself is fairly simple: move getAccessVariant to MCValue so that we
replace the old weak expression evaluation with the far more general
EvaluateAsRelocatable.
This then requires that EvaluateAsRelocatable stop when it finds a non
trivial reference kind. And that in turn requires the ELF writer to look
harder for weak references.
Last but not least, this found a case where we were being bug by bug
compatible with gas and accepting an invalid input. I reported pr19647
to track it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207920 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r-- | test/MC/ELF/relocation-386.s | 3 | ||||
-rw-r--r-- | test/MC/ELF/relocation.s | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s index 4ddfd00b12..ba12df0d3b 100644 --- a/test/MC/ELF/relocation-386.s +++ b/test/MC/ELF/relocation-386.s @@ -62,6 +62,7 @@ // CHECK-NEXT: 0x9E R_386_PC16 und_symbol 0x0 // Relocation 28 (und_symbol-bar2) is of type R_386_PC8 // CHECK-NEXT: 0xA0 R_386_PC8 und_symbol 0x0 +// CHECK-NEXT: 0xA3 R_386_GOTOFF und_symbol 0x0 // CHECK-NEXT: } // CHECK-NEXT: ] @@ -127,6 +128,8 @@ bar2: .word und_symbol-bar2 .byte und_symbol-bar2 + leal 1 + und_symbol@GOTOFF, %edi + .section zedsec,"awT",@progbits zed: .long 0 diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index 318d60fdc8..c0e6007dc4 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -25,6 +25,7 @@ bar: .word foo-bar .byte foo-bar + # this should probably be an error... zed = foo +2 call zed@PLT @@ -57,7 +58,7 @@ bar: // CHECK-NEXT: 0x85 R_X86_64_TPOFF64 baz 0x0 // CHECK-NEXT: 0x8D R_X86_64_PC16 foo 0x8D // CHECK-NEXT: 0x8F R_X86_64_PC8 foo 0x8F -// CHECK-NEXT: 0x91 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFE +// CHECK-NEXT: 0x91 R_X86_64_PLT32 zed 0xFFFFFFFFFFFFFFFC // CHECK-NEXT: 0x98 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB // CHECK-NEXT: 0x9D R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1 // CHECK-NEXT: 0xA3 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2 |