From 448eb63d72d960524ffe169f08419daf590b86d7 Mon Sep 17 00:00:00 2001 From: Renlin Li Date: Wed, 6 May 2015 12:18:19 +0100 Subject: [PATCH] [AArch64] Record instruction alignment for .inst directive 2015-05-06 Renlin Li gas/ * config/tc-aarch64.c (mapping_state): Recording alignment before exit. gas/testsuite/ * gas/aarch64/codealign_1.s: New. * gas/aarch64/codealign_1.d: New. --- gas/ChangeLog | 4 ++++ gas/config/tc-aarch64.c | 10 +++++----- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/aarch64/codealign_1.d | 13 +++++++++++++ gas/testsuite/gas/aarch64/codealign_1.s | 3 +++ 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/codealign_1.d create mode 100644 gas/testsuite/gas/aarch64/codealign_1.s diff --git a/gas/ChangeLog b/gas/ChangeLog index c87327001a..3d2feb9276 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2015-05-06 Renlin Li + + * config/tc-aarch64.c (mapping_state): Recording alignment before exit. + 2015-05-05 Renlin Li * config/tc-aarch64.c (aarch64_init_frag): Always generate mapping diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 12012de3f2..ae0e2d64f7 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -1460,17 +1460,17 @@ mapping_state (enum mstate state) { enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; - if (mapstate == state) - /* The mapping symbol has already been emitted. - There is nothing else to do. */ - return; - if (state == MAP_INSN) /* AArch64 instructions require 4-byte alignment. When emitting instructions into any section, record the appropriate section alignment. */ record_alignment (now_seg, 2); + if (mapstate == state) + /* The mapping symbol has already been emitted. + There is nothing else to do. */ + return; + #define TRANSITION(from, to) (mapstate == (from) && state == (to)) if (TRANSITION (MAP_UNDEFINED, MAP_DATA) && !subseg_text_p (now_seg)) /* Emit MAP_DATA within executable section in order. Otherwise, it will be diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 29649e1174..41604ef675 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-05-06 Renlin Li + + * gas/aarch64/codealign_1.s: New. + * gas/aarch64/codealign_1.d: New. + 2015-05-05 Renlin Li * gas/aarch64/mapping_5.d: New. diff --git a/gas/testsuite/gas/aarch64/codealign_1.d b/gas/testsuite/gas/aarch64/codealign_1.d new file mode 100644 index 0000000000..08f4c25fe6 --- /dev/null +++ b/gas/testsuite/gas/aarch64/codealign_1.d @@ -0,0 +1,13 @@ +#objdump: --section-headers +# Minimum code alignment should be set. + +.*: +file format.*aarch64.* + +Sections: +Idx Name Size VMA LMA File off Algn + 0 \.text .* .* .* .* 2\*\*2 + .*CODE.* + 1 \.data .* .* .* .* 2\*\*0 + .*DATA.* + 2 \.bss .* .* .* .* 2\*\*0 +.* diff --git a/gas/testsuite/gas/aarch64/codealign_1.s b/gas/testsuite/gas/aarch64/codealign_1.s new file mode 100644 index 0000000000..b27cc6bff8 --- /dev/null +++ b/gas/testsuite/gas/aarch64/codealign_1.s @@ -0,0 +1,3 @@ +.text + .byte 0xf + .inst 0xd503201f -- 2.34.1