+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.
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;