diff options
author | Renlin Li <renlin.li@arm.com> | 2015-04-27 11:36:12 +0100 |
---|---|---|
committer | Jiong Wang <jiong.wang@arm.com> | 2015-04-27 11:36:12 +0100 |
commit | eb9d6cc91a423f7825a46317e1882e2e9297c76f (patch) | |
tree | fb7b2d64b9df154265e8b9be032303a02d73d256 | |
parent | 417c80f9e456477935cdc74461d35630dfdbfdff (diff) | |
download | gdb-eb9d6cc91a423f7825a46317e1882e2e9297c76f.zip gdb-eb9d6cc91a423f7825a46317e1882e2e9297c76f.tar.gz gdb-eb9d6cc91a423f7825a46317e1882e2e9297c76f.tar.bz2 |
[AArch64] Don't try to align insn in non-executale section
2015-04-27 Renlin Li <renlin.li@arm.com>
gas/
* config/tc-aarch64.c (s_aarch64_inst): Don't align code for non-text
section.
(md_assemble): Likewise, move the align code outside the loop.
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-aarch64.c | 22 |
2 files changed, 16 insertions, 12 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 29870dd..5b9b50c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-04-27 Renlin Li <renlin.li@arm.com> + + * config/tc-aarch64.c (s_aarch64_inst): Don't align code for non-text + section. + (md_assemble): Likewise, move the align code outside the loop. + 2015-04-24 Jim Wilson <jim.wilson@linaro.org> * config/tc-aarch64.c (aarch64_cpus): Add CRC and CRYPTO features diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index dec50c75..646deb6 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -1858,10 +1858,9 @@ s_aarch64_inst (int ignored ATTRIBUTE_UNUSED) /* Sections are assumed to start aligned. In executable section, there is no MAP_DATA symbol pending. So we only align the address during MAP_DATA --> MAP_INSN transition. - For other sections, this is not guaranteed, align it anyway. */ + For other sections, this is not guaranteed. */ enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; - if (!need_pass_2 && ((subseg_text_p (now_seg) && mapstate == MAP_DATA) - || !subseg_text_p (now_seg))) + if (!need_pass_2 && subseg_text_p (now_seg) && mapstate == MAP_DATA) frag_align_code (2, 0); #ifdef OBJ_ELF @@ -5690,6 +5689,14 @@ md_assemble (char *str) init_operand_error_report (); + /* Sections are assumed to start aligned. In executable section, there is no + MAP_DATA symbol pending. So we only align the address during + MAP_DATA --> MAP_INSN transition. + For other sections, this is not guaranteed. */ + enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; + if (!need_pass_2 && subseg_text_p (now_seg) && mapstate == MAP_DATA) + frag_align_code (2, 0); + saved_cond = inst.cond; reset_aarch64_instruction (&inst); inst.cond = saved_cond; @@ -5705,15 +5712,6 @@ md_assemble (char *str) dump_opcode_operands (opcode); #endif /* DEBUG_AARCH64 */ - /* Sections are assumed to start aligned. In executable section, there is no - MAP_DATA symbol pending. So we only align the address during - MAP_DATA --> MAP_INSN transition. - For other sections, this is not guaranteed, align it anyway. */ - enum mstate mapstate = seg_info (now_seg)->tc_segment_info_data.mapstate; - if (!need_pass_2 && ((subseg_text_p (now_seg) && mapstate == MAP_DATA) - || !subseg_text_p (now_seg))) - frag_align_code (2, 0); - mapping_state (MAP_INSN); inst_base = &inst.base; |