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/config/obj-elf.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gas/config/obj-elf.c') 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