summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/i386
diff options
context:
space:
mode:
Diffstat (limited to 'gas/testsuite/gas/i386')
-rw-r--r--gas/testsuite/gas/i386/i386.exp3
-rw-r--r--gas/testsuite/gas/i386/x86-64-gprel.d10
-rw-r--r--gas/testsuite/gas/i386/x86-64-gprel.s3
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval-gprel.l34
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval-gprel.s8
5 files changed, 58 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 67a7a13b259..427a758b35a 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -868,6 +868,9 @@ if [expr ([istarget "i*86-*-*"] || [istarget "x86_64-*-*"]) && [gas_64_check]] t
run_dump_test "x86-64-gotpcrel-no-relax"
run_dump_test "x86-64-addend"
+
+ run_dump_test "x86-64-gprel"
+ run_list_test "x86-64-inval-gprel" "-al"
}
set ASFLAGS "$old_ASFLAGS"
diff --git a/gas/testsuite/gas/i386/x86-64-gprel.d b/gas/testsuite/gas/i386/x86-64-gprel.d
new file mode 100644
index 00000000000..f70624ab42e
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-gprel.d
@@ -0,0 +1,10 @@
+#objdump: -drw
+#name: x86-64 gprel
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +[a-f0-9]+: 65 8b 04 25 00 00 00 00 mov %gs:0x0,%eax 4: R_X86_64_GPREL foo
+#pass
diff --git a/gas/testsuite/gas/i386/x86-64-gprel.s b/gas/testsuite/gas/i386/x86-64-gprel.s
new file mode 100644
index 00000000000..96b3ce90444
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-gprel.s
@@ -0,0 +1,3 @@
+ .text
+_start:
+ movl %gs:foo@GPREL, %eax
diff --git a/gas/testsuite/gas/i386/x86-64-inval-gprel.l b/gas/testsuite/gas/i386/x86-64-inval-gprel.l
new file mode 100644
index 00000000000..b6683b036d1
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-inval-gprel.l
@@ -0,0 +1,34 @@
+.*: Assembler messages:
+.*:3: Error: invalid GP relocation
+.*:3: Error: non-pc-relative relocation for pc-relative field
+.*:4: Error: invalid GP relocation
+.*:5: Error: invalid GP relocation
+.*:6: Error: invalid GP relocation
+.*:6: Error: non-pc-relative relocation for pc-relative field
+.*:7: Error: invalid GP relocation
+.*:8: Error: invalid GP relocation
+GAS LISTING .*
+
+
+[ ]*1[ ]+\.text
+[ ]*2[ ]+_start:
+[ ]*3[ ]+\?\?\?\? 648B0500 movl %fs:foo@GPREL\(%rip\), %eax
+\*\*\*\* Error: invalid GP relocation
+\*\*\*\* Error: non-pc-relative relocation for pc-relative field
+[ ]*3[ ]+000000
+[ ]*4[ ]+\?\?\?\? 648B8000 movl %fs:foo@GPREL\(%rax\), %eax
+\*\*\*\* Error: invalid GP relocation
+[ ]*4[ ]+000000
+[ ]*5[ ]+\?\?\?\? 8B844800 movl %ds:foo@GPREL\(%rax, %rcx, 2\), %eax
+\*\*\*\* Error: invalid GP relocation
+[ ]*5[ ]+000000
+[ ]*6[ ]+\?\?\?\? 8B050000 movl foo@GPREL\(%rip\), %eax
+\*\*\*\* Error: invalid GP relocation
+\*\*\*\* Error: non-pc-relative relocation for pc-relative field
+[ ]*6[ ]+0000
+[ ]*7[ ]+\?\?\?\? 8B800000 movl foo@GPREL\(%rax\), %eax
+\*\*\*\* Error: invalid GP relocation
+[ ]*7[ ]+0000
+[ ]*8[ ]+\?\?\?\? 8B042500 movl foo@GPREL, %eax
+\*\*\*\* Error: invalid GP relocation
+[ ]*8[ ]+000000
diff --git a/gas/testsuite/gas/i386/x86-64-inval-gprel.s b/gas/testsuite/gas/i386/x86-64-inval-gprel.s
new file mode 100644
index 00000000000..8507926860d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-inval-gprel.s
@@ -0,0 +1,8 @@
+ .text
+_start:
+ movl %fs:foo@GPREL(%rip), %eax
+ movl %fs:foo@GPREL(%rax), %eax
+ movl %ds:foo@GPREL(%rax, %rcx, 2), %eax
+ movl foo@GPREL(%rip), %eax
+ movl foo@GPREL(%rax), %eax
+ movl foo@GPREL, %eax