* config/tc-arm.c (make_mapping_symbol): Hanle the case
authorJie Zhang <jie.zhang@analog.com>
Fri, 19 Mar 2010 14:43:09 +0000 (14:43 +0000)
committerJie Zhang <jie.zhang@analog.com>
Fri, 19 Mar 2010 14:43:09 +0000 (14:43 +0000)
that two mapping symbols have the same value.

testsuite/
* gas/arm/mapmisc.s: Add the test case for two mapping
symbols having the same value.
* gas/arm/mapmisc.d: Likewise.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/mapmisc.d
gas/testsuite/gas/arm/mapmisc.s

index 4736a3a28ce8a0d9928e85b4f51e2a68243d4145..8936235db5d62237c3f9f43ba7d8a88195ff91e6 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-19  Jie Zhang  <jie@codesourcery.com>
+
+       * config/tc-arm.c (make_mapping_symbol): Hanle the case
+       that two mapping symbols have the same value.
+
 2010-03-18  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * doc/c-arm.texi (.setfp): Correct example.
index 557b9f910e2881d90737196cfb2d0f99c543612d..117812d846bf9ac1d9b81d9efb032c9397a95ed4 100644 (file)
@@ -2500,7 +2500,15 @@ make_mapping_symbol (enum mstate state, valueT value, fragS *frag)
       frag->tc_frag_data.first_map = symbolP;
     }
   if (frag->tc_frag_data.last_map != NULL)
-    know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP));
+    {
+      know (S_GET_VALUE (frag->tc_frag_data.last_map) <= S_GET_VALUE (symbolP));
+      /* If .fill or other data filling directive generates zero sized data,
+        the mapping symbol for the following code will have the same value
+        as the one generated for the data filling directive.  In this case,
+        we replace the old symbol with the new one at the same address.  */
+      if (S_GET_VALUE (frag->tc_frag_data.last_map) == S_GET_VALUE (symbolP))
+       symbol_remove (frag->tc_frag_data.last_map, &symbol_rootP, &symbol_lastP);
+    }
   frag->tc_frag_data.last_map = symbolP;
 }
 
index 86d14dc011b42fde3434b756c8be62c3998625fd..bf25c724a41d79cde47f3ff65a492f902329ed09 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-19  Jie Zhang  <jie@codesourcery.com>
+
+       * gas/arm/mapmisc.s: Add the test case for two mapping
+       symbols having the same value.
+       * gas/arm/mapmisc.d: Likewise.
+
 2010-03-18  Wei Guozhi  <carrot@google.com>
 
        PR gas/11323
index 51170216dc24f83bcff8604b00bc78923873ad75..c130b65d3d907899dcabe2ba29eedec9ececb43a 100644 (file)
@@ -46,6 +46,7 @@ SYMBOL TABLE:
 0+9c l       .text     00000000 \$a
 0+a0 l       .text     00000000 \$d
 0+a4 l       .text     00000000 \$a
+0+a8 l       .text     00000000 \$a
 0+00 l    d  .ARM.attributes   00000000 .ARM.attributes
 
 
@@ -93,3 +94,4 @@ Disassembly of section .text:
   9c:  e1a00000        nop                     ; \(mov r0, r0\)
   a0:  7778797a        .word   0x7778797a
   a4:  e1a00000        nop                     ; \(mov r0, r0\)
+  a8:  e1a00000        nop                     ; \(mov r0, r0\)
index 25d9a739388bc100a21e9a439203a15b178d68f2..4749e8daab8ffcf93de976a7afd4c4bc354b09aa 100644 (file)
@@ -34,3 +34,5 @@ foo:
        nop
        .incbin "mapmisc.dat"
        nop
+       .fill 0, 0, 0
+       nop