]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[AArch64] use subseg_text_p to check .text
authorRenlin Li <renlin.li@arm.com>
Tue, 7 Apr 2015 17:10:33 +0000 (18:10 +0100)
committerJiong Wang <jiong.wang@arm.com>
Tue, 7 Apr 2015 17:10:33 +0000 (18:10 +0100)
2015-04-07  Renlin Li  <renlin.li@arm.com>

gas/
  * config/tc-aarch64.c (mapping_state): Use subseg_text_p.
  (s_aarch64_inst): Likewise.
  (md_assemble): Likewise.

gas/ChangeLog
gas/config/tc-aarch64.c

index c896dea09c843481b567c182a4733a5ba737a6e7..6f9118daf52d5e92ba5c8bf35301f8b22008457c 100644 (file)
@@ -1,3 +1,9 @@
+2015-04-07  Renlin Li  <renlin.li@arm.com>
+
+       * config/tc-aarch64.c (mapping_state): Use subseg_text_p.
+       (s_aarch64_inst): Likewise.
+       (md_assemble): Likewise.
+
 2015-04-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * write.c (compress_debug): Use bfd_putb64 to write uncompressed
index 2163d5394788fa4ba51f61baa3e43d91ad462f51..5492ff42462dca856a39c6f539e0722edbf725eb 100644 (file)
@@ -1472,8 +1472,8 @@ mapping_state (enum mstate state)
     record_alignment (now_seg, 2);
 
 #define TRANSITION(from, to) (mapstate == (from) && state == (to))
-  if (TRANSITION (MAP_UNDEFINED, MAP_DATA) && now_seg != text_section)
-    /* Emit MAP_DATA within text section in order. Otherwise, it will be
+  if (TRANSITION (MAP_UNDEFINED, MAP_DATA) && !subseg_text_p (now_seg))
+    /* Emit MAP_DATA within executable section in order.  Otherwise, it will be
        evaluated later in the next else.  */
     return;
   else if (TRANSITION (MAP_UNDEFINED, MAP_INSN))
@@ -1855,13 +1855,13 @@ s_aarch64_inst (int ignored ATTRIBUTE_UNUSED)
       return;
     }
 
-  /* Sections are assumed to start aligned. In text section, there is no
+  /* 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 && ((now_seg == text_section && mapstate == MAP_DATA)
-                      || now_seg != text_section))
+  if (!need_pass_2 && ((subseg_text_p (now_seg) && mapstate == MAP_DATA)
+                      || !subseg_text_p (now_seg)))
     frag_align_code (2, 0);
 
 #ifdef OBJ_ELF
@@ -5705,14 +5705,14 @@ md_assemble (char *str)
        dump_opcode_operands (opcode);
 #endif /* DEBUG_AARCH64 */
 
-    /* Sections are assumed to start aligned. In text section, there is no
+    /* 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 && ((now_seg == text_section && mapstate == MAP_DATA)
-                        || now_seg != text_section))
-       frag_align_code (2, 0);
+    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);