This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] [AArch64] use subseg_text_p to check .text


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a97902de74aba337b2ba28ff8f322f5b4a3602bf

commit a97902de74aba337b2ba28ff8f322f5b4a3602bf
Author: Renlin Li <renlin.li@arm.com>
Date:   Tue Apr 7 18:10:33 2015 +0100

    [AArch64] use subseg_text_p to check .text
    
    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.

Diff:
---
 gas/ChangeLog           |  6 ++++++
 gas/config/tc-aarch64.c | 18 +++++++++---------
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index c896dea..6f9118da 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 2163d53..5492ff4 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]