From: Renlin Li Date: Wed, 6 May 2015 11:18:19 +0000 (+0100) Subject: [AArch64] Record instruction alignment for .inst directive X-Git-Tag: users/hjl/linux/release/2.25.51.0.2~2^2~5^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=448eb63d72d960524ffe169f08419daf590b86d7;p=thirdparty%2Fbinutils-gdb.git [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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index c87327001a6..3d2feb92766 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 12012de3f2e..ae0e2d64f75 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 29649e11749..41604ef675c 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 00000000000..08f4c25fe62 --- /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 00000000000..b27cc6bff82 --- /dev/null +++ b/gas/testsuite/gas/aarch64/codealign_1.s @@ -0,0 +1,3 @@ +.text + .byte 0xf + .inst 0xd503201f