[binutils-gdb] [ARM] Use frag's thumb_mode information when available

Jiong Wang jiwang@sourceware.org
Thu Jun 4 08:37:00 GMT 2015


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

commit b968d18a6d3df13b92c98e813f3d2fb3bbd3d4ee
Author: Jiong Wang <jiong.wang@arm.com>
Date:   Thu Jun 4 09:36:35 2015 +0100

    [ARM] Use frag's thumb_mode information when available
    
    2015-06-04  Renlin Li  <renlin.li@arm.com>
    
    	* config/tc-arm.c (arm_init_frag): Use frag's thumb_mode information
    	when available.

Diff:
---
 gas/ChangeLog       | 5 +++++
 gas/config/tc-arm.c | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 57fc30a..96c1b32 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-04  Renlin Li  <renlin.li@arm.com>
+
+	* config/tc-arm.c (arm_init_frag): Use frag's thumb_mode information
+	when available.
+
 2015-06-03  Matthew Wahab  <matthew.wahab@arm.com>
 
 	* config/tc-arm.c (arm_archs): Add "armv8.1-a".
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index b57f85c..7ad55bf 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -21065,10 +21065,14 @@ arm_init_frag (fragS * fragP, int max_chars ATTRIBUTE_UNUSED)
 void
 arm_init_frag (fragS * fragP, int max_chars)
 {
+  int frag_thumb_mode;
+
   /* If the current ARM vs THUMB mode has not already
      been recorded into this frag then do so now.  */
   if ((fragP->tc_frag_data.thumb_mode & MODE_RECORDED) == 0)
-      fragP->tc_frag_data.thumb_mode = thumb_mode | MODE_RECORDED;
+    fragP->tc_frag_data.thumb_mode = thumb_mode | MODE_RECORDED;
+
+  frag_thumb_mode = fragP->tc_frag_data.thumb_mode ^ MODE_RECORDED;
 
   /* Record a mapping symbol for alignment frags.  We will delete this
      later if the alignment ends up empty.  */
@@ -21080,7 +21084,7 @@ arm_init_frag (fragS * fragP, int max_chars)
       mapping_state_2 (MAP_DATA, max_chars);
       break;
     case rs_align_code:
-      mapping_state_2 (thumb_mode ? MAP_THUMB : MAP_ARM, max_chars);
+      mapping_state_2 (frag_thumb_mode ? MAP_THUMB : MAP_ARM, max_chars);
       break;
     default:
       break;



More information about the Binutils-cvs mailing list