diff options
author | Alex Coplan <alex.coplan@arm.com> | 2020-05-29 16:04:50 +0100 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-06-02 00:10:40 +0930 |
commit | c39c821c1da3e8a64eff5984a39e104eb798e8b8 (patch) | |
tree | e624f399a22271c5a1ff6d681387468e31f31c16 /gas/testsuite | |
parent | 2fdb65f247379befd548a33ea185172968b9ebb9 (diff) | |
download | gdb-c39c821c1da3e8a64eff5984a39e104eb798e8b8.zip gdb-c39c821c1da3e8a64eff5984a39e104eb798e8b8.tar.gz gdb-c39c821c1da3e8a64eff5984a39e104eb798e8b8.tar.bz2 |
gas: Fix checking for backwards .org with negative offset
This patch fixes internal errors in (at least) arm and aarch64 GAS
when assembling code that attempts a negative .org. The bug appears
to be a regression introduced in binutils-2.29 by commit 9875b36538d.
* write.c (relax_segment): Fix handling of negative offset when
relaxing an rs_org frag.
* testsuite/gas/aarch64/org-neg.d: New test.
* testsuite/gas/aarch64/org-neg.l: Error output for test.
* testsuite/gas/aarch64/org-neg.s: Input for test.
* testsuite/gas/arm/org-neg.d: New test.
* testsuite/gas/arm/org-neg.l: Error output for test.
* testsuite/gas/arm/org-neg.s: Input for test.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/aarch64/org-neg.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/org-neg.l | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/org-neg.s | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/org-neg.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/org-neg.l | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/org-neg.s | 2 |
6 files changed, 14 insertions, 0 deletions
diff --git a/gas/testsuite/gas/aarch64/org-neg.d b/gas/testsuite/gas/aarch64/org-neg.d new file mode 100644 index 0000000..83e6af6 --- /dev/null +++ b/gas/testsuite/gas/aarch64/org-neg.d @@ -0,0 +1,3 @@ +#name: negative org should not cause internal error +#source: org-neg.s +#error_output: org-neg.l diff --git a/gas/testsuite/gas/aarch64/org-neg.l b/gas/testsuite/gas/aarch64/org-neg.l new file mode 100644 index 0000000..f8414ad --- /dev/null +++ b/gas/testsuite/gas/aarch64/org-neg.l @@ -0,0 +1,2 @@ +[^:]*: Assembler messages: +.*: Error: attempt to move .org backwards diff --git a/gas/testsuite/gas/aarch64/org-neg.s b/gas/testsuite/gas/aarch64/org-neg.s new file mode 100644 index 0000000..403e70d --- /dev/null +++ b/gas/testsuite/gas/aarch64/org-neg.s @@ -0,0 +1,2 @@ +.=-1 +ret diff --git a/gas/testsuite/gas/arm/org-neg.d b/gas/testsuite/gas/arm/org-neg.d new file mode 100644 index 0000000..83e6af6 --- /dev/null +++ b/gas/testsuite/gas/arm/org-neg.d @@ -0,0 +1,3 @@ +#name: negative org should not cause internal error +#source: org-neg.s +#error_output: org-neg.l diff --git a/gas/testsuite/gas/arm/org-neg.l b/gas/testsuite/gas/arm/org-neg.l new file mode 100644 index 0000000..f8414ad --- /dev/null +++ b/gas/testsuite/gas/arm/org-neg.l @@ -0,0 +1,2 @@ +[^:]*: Assembler messages: +.*: Error: attempt to move .org backwards diff --git a/gas/testsuite/gas/arm/org-neg.s b/gas/testsuite/gas/arm/org-neg.s new file mode 100644 index 0000000..f60486e --- /dev/null +++ b/gas/testsuite/gas/arm/org-neg.s @@ -0,0 +1,2 @@ +.=-1 +nop |