aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-ppc.c2
-rw-r--r--gas/write.c3
3 files changed, 9 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 63a84e1..e452f79 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2005-11-17 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/tc-ppc.c (ppc_frob_file_before_adjust): Do not reference
+ dotname.
+ * write.c (write_object_file): Do not remove used weakrefd.
+
2005-11-17 Jan Beulich <jbeulich@novell.com>
* dw2gencfi.c (dot_cfi): Put argument parsing for cases
diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c
index 35a5c2b..d5bdb9e 100644
--- a/gas/config/tc-ppc.c
+++ b/gas/config/tc-ppc.c
@@ -1931,7 +1931,7 @@ ppc_frob_file_before_adjust ()
dotname = xmalloc (len + 1);
dotname[0] = '.';
memcpy (dotname + 1, name, len);
- dotsym = symbol_find (dotname);
+ dotsym = symbol_find_noref (dotname, 1);
free (dotname);
if (dotsym != NULL && (symbol_used_p (dotsym)
|| symbol_used_in_reloc_p (dotsym)))
diff --git a/gas/write.c b/gas/write.c
index f86930b..5c336d8 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -1513,7 +1513,8 @@ write_object_file (void)
opposites. Sometimes the former checks flags and the
latter examines the name... */
|| (!S_IS_EXTERNAL (symp)
- && (punt || S_IS_LOCAL (symp) || S_IS_WEAKREFD (symp))
+ && (punt || S_IS_LOCAL (symp) ||
+ (S_IS_WEAKREFD (symp) && ! symbol_used_p (symp)))
&& ! symbol_used_in_reloc_p (symp)))
{
symbol_remove (symp, &symbol_rootP, &symbol_lastP);