OSDN Git Service

* config/tc-arm.c (make_mapping_symbol): Hanle the case
[pf3gnuchains/pf3gnuchains4x.git] / gas / config / tc-arm.c
index 557b9f9..117812d 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;
 }