* config/obj-elf.c (elf_frob_symbol): Report S_SET_SIZE symbol

on .size expression errors rather than symbols in the size expression.
This commit is contained in:
Alan Modra 2011-03-18 11:21:33 +00:00
parent 144886fa6b
commit 869fe6ea85
2 changed files with 9 additions and 41 deletions

View File

@ -1,3 +1,8 @@
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.

View 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;