aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRenlin Li <renlin.li@arm.com>2015-04-27 11:36:12 +0100
committerJiong Wang <jiong.wang@arm.com>2015-04-27 11:36:12 +0100
commiteb9d6cc91a423f7825a46317e1882e2e9297c76f (patch)
treefb7b2d64b9df154265e8b9be032303a02d73d256
parent417c80f9e456477935cdc74461d35630dfdbfdff (diff)
downloadgdb-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/ChangeLog6
-rw-r--r--gas/config/tc-aarch64.c22
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;