summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2011-03-18 11:21:33 +0000
committerAlan Modra <amodra@bigpond.net.au>2011-03-18 11:21:33 +0000
commit4126e9eb682bf74d34eca4b309e2a874c8e975d2 (patch)
treee2ae946b97c81e7d8bf0fc6b099da29f78eaa683
parente46e442ff38ee5317226fb172407f42f55647b37 (diff)
downloadbinutils-redhat-4126e9eb682bf74d34eca4b309e2a874c8e975d2.tar.gz
* config/obj-elf.c (elf_frob_symbol): Report S_SET_SIZE symbol
on .size expression errors rather than symbols in the size expression.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/obj-elf.c45
2 files changed, 9 insertions, 41 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9f65957411..a2a43cd49d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 37a8020c73..afb4811b4c 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -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;