+2020-03-04 Alexandre Oliva <oliva@adacore.com>
+
+ * config/tc-arm.c (md_apply_fix): Warn if a PC-relative load is
+ detected in a section which does not have at least 4 byte
+ alignment.
+ * testsuite/gas/arm/armv8-ar-it-bad.s: Add alignment directive.
+ * testsuite/gas/arm/ldr-t.s: Likewise.
+ * testsuite/gas/arm/sp-pc-usage-t.s: Likewise.
+ * testsuite/gas/arm/sp-pc-usage-t.d: Finish test at end of
+ disassembly, ignoring any NOPs that may have been inserted because
+ of section alignment.
+ * testsuite/gas/arm/ldr-t.d: Likewise.
+
2020-03-04 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (cpu_arch): Add .sev_es entry.
(((unsigned long) fixP->fx_frag->fr_address
+ (unsigned long) fixP->fx_where) & ~3)
+ (unsigned long) value);
+ else if (get_recorded_alignment (seg) < 2)
+ as_warn_where (fixP->fx_file, fixP->fx_line,
+ _("section does not have enough alignment to ensure safe PC-relative loads"));
if (value & ~0x3fc)
as_bad_where (fixP->fx_file, fixP->fx_line,
-.syntax unified
-
-.thumb
+ .syntax unified
+ .thumb
+ .align 2
@ Wide instruction in IT block is deprecated.
it eq
ldrdeq r0, [r1]
0+4e <[^>]+> f8c1 100a str.w r1, \[r1, #10\]
0+52 <[^>]+> f842 1f0a str.w r1, \[r2, #10\]!
0+56 <[^>]+> 50d1 str r1, \[r2, r3\]
-
+#pass
.thumb
.global foo
foo:
+ .align 4
@ldr-immediate
@!wback && (n == t)
000000f6 <foo\+0xf6> bf00 nop
000000f8 <foo\+0xf8> bf00 nop
000000fa <foo\+0xfa> bf00 nop
-
+#pass
.text
.thumb
.global foo
-foo:
+foo:
+ .align 4
@ Section A6.1.3 "Use of 0b1101 as a register specifier".
@ R13 as the source or destination register of a mov instruction.