[ARM] Use frag's thumb_mode information when available
authorJiong Wang <jiong.wang@arm.com>
Thu, 4 Jun 2015 08:36:35 +0000 (09:36 +0100)
committerJiong Wang <jiong.wang@arm.com>
Thu, 4 Jun 2015 08:36:35 +0000 (09:36 +0100)
2015-06-04  Renlin Li  <renlin.li@arm.com>

* config/tc-arm.c (arm_init_frag): Use frag's thumb_mode information
when available.

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

index 57fc30a..96c1b32 100644 (file)
@@ -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".
index b57f85c..7ad55bf 100644 (file)
@@ -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;