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.
+2020-06-01 Alex Coplan <alex.coplan@arm.com>
+
+ * 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.
+
2020-05-28 Stephen Casner <casner@acm.org>
Fix unexpected failures in gas testsuite for pdp11-aout target.
--- /dev/null
+#name: negative org should not cause internal error
+#source: org-neg.s
+#error_output: org-neg.l
--- /dev/null
+[^:]*: Assembler messages:
+.*: Error: attempt to move .org backwards
--- /dev/null
+#name: negative org should not cause internal error
+#source: org-neg.s
+#error_output: org-neg.l
--- /dev/null
+[^:]*: Assembler messages:
+.*: Error: attempt to move .org backwards
case rs_org:
{
- addressT target = offset;
+ offsetT target = offset;
addressT after;
if (symbolP)
/* Growth may be negative, but variable part of frag
cannot have fewer than 0 chars. That is, we can't
.org backwards. */
- if (address + fragP->fr_fix > target)
+ if ((offsetT) (address + fragP->fr_fix) > target)
{
growth = 0;