OSDN Git Service

* config/obj-elf.c (elf_frob_symbol): Report S_SET_SIZE symbol
authoramodra <amodra>
Fri, 18 Mar 2011 11:21:33 +0000 (11:21 +0000)
committeramodra <amodra>
Fri, 18 Mar 2011 11:21:33 +0000 (11:21 +0000)
on .size expression errors rather than symbols in the size expression.

gas/ChangeLog
gas/config/obj-elf.c

index 9f65957..a2a43cd 100644 (file)
@@ -1,5 +1,10 @@
 2011-03-18  Alan Modra  <amodra@gmail.com>
 
+       * config/obj-elf.c (elf_frob_symbol): Report S_SET_SIZE symbol
+       on .size expression errors rather than symbols in the size expression.
+
+2011-03-18  Alan Modra  <amodra@gmail.com>
+
        * input-scrub.c (line_numberT): Delete.
        (input_scrub_close): Reset line counters.
        * messages.c (as_show_where): Don't print invalid line number.
index 37a8020..afb4811 100644 (file)
@@ -1896,49 +1896,12 @@ elf_frob_symbol (symbolS *symp, int *puntp)
        S_SET_SIZE (symp, size->X_add_number);
       else
        {
-         const char *op_name = NULL;
-         const char *add_name = NULL;
-         PRINTF_LIKE ((*as_error));
-
          if (flag_size_check == size_check_error)
-           as_error = as_bad;
+           as_bad (_(".size expression for %s "
+                     "does not evaluate to a constant"), S_GET_NAME (symp));
          else
-           as_error = as_warn;
-
-         if (size->X_op == O_subtract)
-           {
-             op_name = S_GET_NAME (size->X_op_symbol);
-             add_name = S_GET_NAME (size->X_add_symbol);
-             if (strcmp (op_name, FAKE_LABEL_NAME) == 0)
-               op_name = NULL;
-             if (strcmp (add_name, FAKE_LABEL_NAME) == 0)
-               add_name = NULL;
-
-             if (op_name && add_name)
-               as_error (_(".size expression with symbols `%s' and "
-                           "`%s' does not evaluate to a constant"),
-                         op_name, add_name);
-             else
-               {
-                 const char *name;
-
-                 if (op_name)
-                   name = op_name;
-                 else if (add_name)
-                   name = add_name;
-                 else
-                   name = NULL;
-
-                 if (name)
-                   as_error (_(".size expression with symbol `%s' "
-                               "does not evaluate to a constant"),
-                             name);
-               }
-           }
-         
-         if (!op_name && !add_name)
-           as_error (_(".size expression does not evaluate to a "
-                       "constant"));
+           as_warn (_(".size expression for %s "
+                      "does not evaluate to a constant"), S_GET_NAME (symp));
        }
       free (sy_obj->size);
       sy_obj->size = NULL;