diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index f631a02..1714ec8 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -20970,27 +20970,29 @@ arm_init_frag (fragS * fragP, int max_chars ATTRIBUTE_UNUSED) void arm_init_frag (fragS * fragP, int max_chars) { + int frag_thumb_mode; /* If the current ARM vs THUMB mode has not already been recorded into this frag then do so now. */ if ((fragP->tc_frag_data.thumb_mode & MODE_RECORDED) == 0) - { - fragP->tc_frag_data.thumb_mode = thumb_mode | MODE_RECORDED; + fragP->tc_frag_data.thumb_mode = thumb_mode | MODE_RECORDED; - /* Record a mapping symbol for alignment frags. We will delete this - later if the alignment ends up empty. */ - switch (fragP->fr_type) - { - case rs_align: - case rs_align_test: - case rs_fill: - mapping_state_2 (MAP_DATA, max_chars); - break; - case rs_align_code: - mapping_state_2 (thumb_mode ? MAP_THUMB : MAP_ARM, max_chars); - break; - default: - break; - } + frag_thumb_mode = fragP->tc_frag_data.thumb_mode ^ MODE_RECORDED; + + + /* Record a mapping symbol for alignment frags. We will delete this + later if the alignment ends up empty. */ + switch (fragP->fr_type) + { + case rs_align: + case rs_align_test: + case rs_fill: + mapping_state_2 (MAP_DATA, max_chars); + break; + case rs_align_code: + mapping_state_2 (frag_thumb_mode ? MAP_THUMB : MAP_ARM, max_chars); + break; + default: + break; } } diff --git a/gas/testsuite/gas/arm/thumb2_vpool_be.d b/gas/testsuite/gas/arm/thumb2_vpool_be.d index 816cddc..15aafa5 100644 --- a/gas/testsuite/gas/arm/thumb2_vpool_be.d +++ b/gas/testsuite/gas/arm/thumb2_vpool_be.d @@ -125,8 +125,7 @@ Disassembly of section .text: 000001c8 0ff00fff .word 0x0ff00fff 000001cc f0000000 .word 0xf0000000 000001d0 ed9f 1b01 vldr d1, \[pc, #4\] ; 000001d8 -000001d4 0000 movs r0, r0 -000001d6 0000 movs r0, r0 +000001d4 00000000 .word 0x00000000 000001d8 0000fff0 .word 0x0000fff0 000001dc 00000000 .word 0x00000000 000001e0 f101 0000 add.w r0, r1, #0 @@ -150,8 +149,7 @@ Disassembly of section .text: 00000228 eddf 7a03 vldr s15, \[pc, #12\] ; 00000238 0000022c eddf 0b14 vldr d16, \[pc, #80\] ; 00000280 00000230 eddf 1b15 vldr d17, \[pc, #84\] ; 00000288 -00000234 0000 movs r0, r0 -00000236 0000 movs r0, r0 +00000234 00000000 .word 0x00000000 00000238 0000fff0 .word 0x0000fff0 0000023c 00000000 .word 0x00000000 00000240 ff000000 .word 0xff000000 diff --git a/gas/testsuite/gas/arm/vldconst_be.d b/gas/testsuite/gas/arm/vldconst_be.d index cf3dbf9..f99371b 100644 --- a/gas/testsuite/gas/arm/vldconst_be.d +++ b/gas/testsuite/gas/arm/vldconst_be.d @@ -236,7 +236,7 @@ Disassembly of section .text: 00000388 0000fff0 .word 0x0000fff0 0000038c 00000000 .word 0x00000000 00000390 ed9f1b00 vldr d1, \[pc\] ; 00000398 -00000394 00000000 andeq r0, r0, r0 +00000394 00000000 .word 0x00000000 00000398 0000fff0 .word 0x0000fff0 0000039c 00000000 .word 0x00000000 000003a0 e2810000 add r0, r1, #0 @@ -260,7 +260,7 @@ Disassembly of section .text: 000003e8 eddf7a02 vldr s15, \[pc, #8\] ; 000003f8 000003ec eddf0b13 vldr d16, \[pc, #76\] ; 00000440 000003f0 eddf1b14 vldr d17, \[pc, #80\] ; 00000448 -000003f4 00000000 andeq r0, r0, r0 +000003f4 00000000 .word 0x00000000 000003f8 0000fff0 .word 0x0000fff0 000003fc 00000000 .word 0x00000000 00000400 ff000000 .word 0xff000000 diff --git a/ld/testsuite/ld-arm/ifunc-10.dd b/ld/testsuite/ld-arm/ifunc-10.dd index 88bae50..d96c086 100644 --- a/ld/testsuite/ld-arm/ifunc-10.dd +++ b/ld/testsuite/ld-arm/ifunc-10.dd @@ -267,7 +267,7 @@ Disassembly of section \.text: 0000a010 : a010: 46f7 mov pc, lr - a012: 0000 movs r0, r0 + a012: 0000 .short 0x0000 a014: e1a0f00e mov pc, lr a018: e1a0f00e mov pc, lr a01c: e1a0f00e mov pc, lr diff --git a/ld/testsuite/ld-arm/ifunc-2.dd b/ld/testsuite/ld-arm/ifunc-2.dd index f6d57fa..91eab54 100644 --- a/ld/testsuite/ld-arm/ifunc-2.dd +++ b/ld/testsuite/ld-arm/ifunc-2.dd @@ -84,10 +84,10 @@ Disassembly of section \.text: 0000a00c : a00c: 46f7 mov pc, lr - a00e: 0000 movs r0, r0 + a00e: 0000 .short 0x0000 a010: e1a0f00e mov pc, lr a014: 46f7 mov pc, lr - a016: 0000 movs r0, r0 + a016: 0000 .short 0x0000 a018: e1a0f00e mov pc, lr a01c: 46f7 mov pc, lr \.\.\.