This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Commit: [GAS][AARCH64]Positively emit symbols for alignment.
- From: Renlin Li <renlin dot li at arm dot com>
- To: Nicholas Clifton <nickc at redhat dot com>, "binutils at sourceware dot org" <binutils at sourceware dot org>
- Cc: Marcus Shawcroft <Marcus dot Shawcroft at arm dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>
- Date: Tue, 05 May 2015 16:22:11 +0100
- Subject: Commit: [GAS][AARCH64]Positively emit symbols for alignment.
- Authentication-results: sourceware.org; auth=none
- References: <553A3CAD dot 3050208 at arm dot com> <553A720C dot 7030102 at redhat dot com>
Hi Nick,
On 24/04/15 17:40, Nicholas Clifton wrote:
Hi Renlin,
gas checked without any new issues. Okay to commit?
Yes. please do.
By the way, Nick, aarch64 has the same issue. The same can be done to
aarch64_init_frag(). Another way is to remove
fragP->tc_frag_data.recorded. It's only used in a few places. But I am
sure what dose it intended to do, Could you please explain a little bit
for me?
I think that it is meant to be the equivalent of the MODE_RECORDED bit
used in tc-arm.c.
A patch to fix tc-aarch64.c in a similar way to tc-arm.c is pre-approved.
A similar patch (check the attachment) applies to aarch64 is committed.
Binutils, gas, ld checked without new issues.
Thank you,
Renlin Li
2015-05-05 Renlin Li <renlin.li@arm.com>
* config/tc-aarch64.c (aarch64_init_frag): Always generate
mapping symbols.
gas/testsuite/ChangeLog:
2015-05-05 Renlin Li <renlin.li@arm.com>
* gas/aarch64/mapping_5.d: New.
* gas/aarch64/mapping_5.s: New.
* gas/aarch64/mapping_6.d: New.
* gas/aarch64/mapping_6.s: New.
Cheers
Nick
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 646deb6..12012de 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -6028,21 +6028,20 @@ aarch64_init_frag (fragS * fragP, int max_chars)
/* Record a mapping symbol for alignment frags. We will delete this
later if the alignment ends up empty. */
if (!fragP->tc_frag_data.recorded)
+ fragP->tc_frag_data.recorded = 1;
+
+ switch (fragP->fr_type)
{
- fragP->tc_frag_data.recorded = 1;
- 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 (MAP_INSN, max_chars);
- break;
- default:
- break;
- }
+ 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 (MAP_INSN, max_chars);
+ break;
+ default:
+ break;
}
}
diff --git a/gas/testsuite/gas/aarch64/mapping_5.d b/gas/testsuite/gas/aarch64/mapping_5.d
new file mode 100644
index 0000000..4778b3d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/mapping_5.d
@@ -0,0 +1,13 @@
+#objdump: --syms --special-syms
+#name: AArch64 Mapping Symbols Test 5
+
+.*: +file format.*aarch64.*
+
+SYMBOL TABLE:
+[0]+00 l d .text [0]+00 .text
+[0]+00 l d .data [0]+00 .data
+[0]+00 l d .bss [0]+00 .bss
+[0]+00 l .text [0]+00 \$x
+[0]+04 l .text [0]+00 \$d
+[0]+08 l .text [0]+00 \$x
+[0]+10 l .text [0]+00 \$d
diff --git a/gas/testsuite/gas/aarch64/mapping_5.s b/gas/testsuite/gas/aarch64/mapping_5.s
new file mode 100644
index 0000000..2cb95ed
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/mapping_5.s
@@ -0,0 +1,5 @@
+ .text
+ nop
+ .long 0
+ .align 4
+ .word 0x12345678
diff --git a/gas/testsuite/gas/aarch64/mapping_6.d b/gas/testsuite/gas/aarch64/mapping_6.d
new file mode 100644
index 0000000..3a5dfb8
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/mapping_6.d
@@ -0,0 +1,14 @@
+#objdump: --syms --special-syms
+#name: AArch64 Mapping Symbols Test 6
+
+.*: +file format.*aarch64.*
+
+SYMBOL TABLE:
+[0]+00 l d .text [0]+00 .text
+[0]+00 l d .data [0]+00 .data
+[0]+00 l d .bss [0]+00 .bss
+[0]+00 l .text [0]+00 \$x
+[0]+04 l .text [0]+00 \$d
+[0]+10 l .text [0]+00 \$d
+[0]+09 l .text [0]+00 \$d
+[0]+0c l .text [0]+00 \$x
diff --git a/gas/testsuite/gas/aarch64/mapping_6.s b/gas/testsuite/gas/aarch64/mapping_6.s
new file mode 100644
index 0000000..4e0e2c5
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/mapping_6.s
@@ -0,0 +1,6 @@
+ .text
+ nop
+ .long 0
+ .byte 1
+ .align 4
+ .word 0x12345678