diff options
author | Jan Beulich <jbeulich@novell.com> | 2017-11-23 11:02:30 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2017-11-23 11:02:30 +0100 |
commit | 43083a502b8d658b8d096111e54afcc73b0215a4 (patch) | |
tree | 0695c73e2bf6e60e243e0afcc023c7ef8fb96359 /ld/testsuite/ld-x86-64/apic.d | |
parent | 9bb129e82f0506fe78d61670ea2b4140388955dd (diff) | |
download | fsf-binutils-gdb-43083a502b8d658b8d096111e54afcc73b0215a4.zip fsf-binutils-gdb-43083a502b8d658b8d096111e54afcc73b0215a4.tar.gz fsf-binutils-gdb-43083a502b8d658b8d096111e54afcc73b0215a4.tar.bz2 |
x86-64: always use unsigned 32-bit reloc for 32-bit addressing w/o base reg
Except for %eip-relative addressing, where we don't have a suitable
relocation type silently wrapping at the 4G boundary, consistently
force use of R_X86_64_32 (in ELF terms) instead of its sign-extending
counterpart. This wasn't right in case there was no base register in
the addressing expression.
Diffstat (limited to 'ld/testsuite/ld-x86-64/apic.d')
-rw-r--r-- | ld/testsuite/ld-x86-64/apic.d | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/ld/testsuite/ld-x86-64/apic.d b/ld/testsuite/ld-x86-64/apic.d new file mode 100644 index 0000000..782c6fa --- /dev/null +++ b/ld/testsuite/ld-x86-64/apic.d @@ -0,0 +1,18 @@ +#name: 32-bit relocs w/ index but no base +#ld: --defsym APIC_BASE=0xfee00000 +#objdump: -dw + +.*: +file format .* + + +Disassembly of section \.text: + +#... +[0-9a-f]+[ ]+<apic_read>: +[ ]*[0-9a-f]+:[ ]+67 8b 04 bd 00 00 e0 fe[ ]+mov[ ]+(0xfee|-0x12)00000\(,%edi,4\),%eax +[ ]*[0-9a-f]+:[ ]+c3[ ]+retq?[ ]* +#... +[0-9a-f]+[ ]+<apic_write>: +[ ]*[0-9a-f]+:[ ]+67 89 34 bd 00 00 e0 fe[ ]+mov[ ]+%esi,(0xfee|-0x12)00000\(,%edi,4\) +[ ]*[0-9a-f]+:[ ]+c3[ ]+retq?[ ]* +#pass |