aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-05-20 06:01:28 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-05-20 06:01:28 -0700
commit4e21640f674499048157fa62f08b16f6039f78f6 (patch)
tree27085915ea4a643164975a5d4837d325a5532b56 /gas/testsuite
parent17c6c9d9f3e71459edb4b6af5ec75125f0d06f87 (diff)
downloadgdb-4e21640f674499048157fa62f08b16f6039f78f6.zip
gdb-4e21640f674499048157fa62f08b16f6039f78f6.tar.gz
gdb-4e21640f674499048157fa62f08b16f6039f78f6.tar.bz2
Preserve addend for R_386_GOT32 and R_X86_64_GOT32
We should preserve addend for R_386_GOT32 and R_X86_64_GOT32 as in "movl $foo@GOT + 4, %eax" and "movq $foo@GOT + 4, %rax". PR gas/19600 * config/tc-i386.c (md_apply_fix): Preserve addend for BFD_RELOC_386_GOT32 and BFD_RELOC_X86_64_GOT32. * testsuite/gas/i386/addend.d: New file. * testsuite/gas/i386/addend.s: Likewise. * testsuite/gas/i386/x86-64-addend.d: Likewise. * testsuite/gas/i386/x86-64-addend.s: Likewise. * testsuite/gas/i386/i386.exp: Run addend and x86-64-addend. * testsuite/gas/i386/reloc32.d: Updated.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/gas/i386/addend.d14
-rw-r--r--gas/testsuite/gas/i386/addend.s9
-rw-r--r--gas/testsuite/gas/i386/i386.exp4
-rw-r--r--gas/testsuite/gas/i386/reloc32.d2
-rw-r--r--gas/testsuite/gas/i386/x86-64-addend.d14
-rw-r--r--gas/testsuite/gas/i386/x86-64-addend.s9
6 files changed, 52 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/addend.d b/gas/testsuite/gas/i386/addend.d
new file mode 100644
index 0000000..db60c91
--- /dev/null
+++ b/gas/testsuite/gas/i386/addend.d
@@ -0,0 +1,14 @@
+#as: -mrelax-relocations=yes
+#objdump: -dwr
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+[ ]*[a-f0-9]+: b8 00 00 00 00 mov \$0x0,%eax 1: R_386_GOT32 foo
+[ ]*[a-f0-9]+: b8 04 00 00 00 mov \$0x4,%eax 6: R_386_GOT32 foo
+[ ]*[a-f0-9]+: b8 00 00 00 00 mov \$0x0,%eax b: R_386_GOT32 foo
+[ ]*[a-f0-9]+: b8 04 00 00 00 mov \$0x4,%eax 10: R_386_GOT32 foo
+#pass
diff --git a/gas/testsuite/gas/i386/addend.s b/gas/testsuite/gas/i386/addend.s
new file mode 100644
index 0000000..d7e68dd
--- /dev/null
+++ b/gas/testsuite/gas/i386/addend.s
@@ -0,0 +1,9 @@
+ .text
+_start:
+ movl $foo@GOT, %eax
+ movl $foo@GOT + 4, %eax
+
+ .intel_syntax noprefix
+
+ mov eax, offset foo@got
+ mov eax, offset foo@got + 4
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index df1518b..a18200e 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -412,6 +412,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_32_check]]
run_dump_test "got"
run_dump_test "got-no-relax"
+ run_dump_test "addend"
+
if {![istarget "*-*-nacl*"]} then {
run_dump_test "iamcu-1"
run_dump_test "iamcu-2"
@@ -797,6 +799,8 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-gotpcrel"
run_dump_test "x86-64-gotpcrel-no-relax"
+
+ run_dump_test "x86-64-addend"
}
set ASFLAGS "$old_ASFLAGS"
diff --git a/gas/testsuite/gas/i386/reloc32.d b/gas/testsuite/gas/i386/reloc32.d
index b6e1bbd..263a742 100644
--- a/gas/testsuite/gas/i386/reloc32.d
+++ b/gas/testsuite/gas/i386/reloc32.d
@@ -68,4 +68,6 @@ Disassembly of section \.data:
.*[ ]+R_386_PC8[ ]+xtrn
#...
.*[ ]+R_386_GOT32[ ]+xtrn
+#...
.*[ ]+R_386_GOT32[ ]+xtrn
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-addend.d b/gas/testsuite/gas/i386/x86-64-addend.d
new file mode 100644
index 0000000..d3d3d8b
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-addend.d
@@ -0,0 +1,14 @@
+#as: -mrelax-relocations=yes
+#objdump: -dwr
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax 3: R_X86_64_GOT32 foo
+[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax a: R_X86_64_GOT32 foo\+0x4
+[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax 11: R_X86_64_GOT32 foo
+[ ]*[a-f0-9]+: 48 c7 c0 00 00 00 00 mov \$0x0,%rax 18: R_X86_64_GOT32 foo\+0x4
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-addend.s b/gas/testsuite/gas/i386/x86-64-addend.s
new file mode 100644
index 0000000..7b04e72
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-addend.s
@@ -0,0 +1,9 @@
+ .text
+_start:
+ movq $foo@GOT, %rax
+ movq $foo@GOT + 4, %rax
+
+ .intel_syntax noprefix
+
+ mov rax, offset foo@got
+ mov rax, offset foo@got + 4