From 00e6e13d12377b6463072a112eb1f58b701abd6e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 28 Jan 2002 13:34:39 +0000 Subject: * config/obj-elf.c (elf_frob_file_before_adjust): Remove symbols made because of .weak, if they are neither defined nor used in any way. --- gas/ChangeLog | 6 ++++++ gas/config/obj-elf.c | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 9696d64..9d98f75 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2002-01-28 Jakub Jelinek + + * config/obj-elf.c (elf_frob_file_before_adjust): Remove symbols + made because of .weak, if they are neither defined nor used in any + way. + 2002-01-27 Daniel Jacobowitz * configure: Regenerated. diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c index 6ec0882..13c7482 100644 --- a/gas/config/obj-elf.c +++ b/gas/config/obj-elf.c @@ -1995,9 +1995,9 @@ elf_frob_file_before_adjust () symbolS *symp; for (symp = symbol_rootP; symp; symp = symbol_next (symp)) - if (symbol_get_obj (symp)->versioned_name) + if (!S_IS_DEFINED (symp)) { - if (!S_IS_DEFINED (symp)) + if (symbol_get_obj (symp)->versioned_name) { char *p; @@ -2017,6 +2017,14 @@ elf_frob_file_before_adjust () && symbol_used_in_reloc_p (symp) == 0) symbol_remove (symp, &symbol_rootP, &symbol_lastP); } + + /* If there was .weak foo, but foo was neither defined nor + used anywhere, remove it. */ + + else if (S_IS_WEAK (symp) + && symbol_used_p (symp) == 0 + && symbol_used_in_reloc_p (symp) == 0) + symbol_remove (symp, &symbol_rootP, &symbol_lastP); } } } -- cgit v1.1