* ldcref.c (check_reloc_refs): Compare section for local syms.
authorAlan Modra <amodra@gmail.com>
Sat, 17 Feb 2007 00:24:00 +0000 (00:24 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 17 Feb 2007 00:24:00 +0000 (00:24 +0000)
ld/ChangeLog
ld/ldcref.c

index 6e857bec6fd1cec64b7a86fb22a9693693e1b89d..901cdc8e3d01aa6489e8a78762fa14c1854f4676 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-17  Alan Modra  <amodra@bigpond.net.au>
+
+       * ldcref.c (check_reloc_refs): Compare section for local syms.
+
 2007-02-13  Alan Modra  <amodra@bigpond.net.au>
 
        * emultempl/spu_ovl.S (__ovly_return, __ovly_load): Set sym size.
index fb1d3c907f3141947edc023c1a7fe0ac6f73d101..e016451680cde2bf57e50d71a5b3c676f42fb2e1 100644 (file)
@@ -1,6 +1,6 @@
 /* ldcref.c -- output a cross reference table
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
-   Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006,
+   2007 Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@cygnus.com>
 
 This file is part of GLD, the Gnu Linker.
@@ -710,11 +710,11 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg)
                                                   | BSF_WEAK)) != 0))
              || (!global
                  && ((*q->sym_ptr_ptr)->flags & (BSF_LOCAL
-                                                 | BSF_SECTION_SYM)) != 0))
+                                                 | BSF_SECTION_SYM)) != 0
+                 && bfd_get_section (*q->sym_ptr_ptr) == info->defsec))
          && (symname != NULL
              ? strcmp (bfd_asymbol_name (*q->sym_ptr_ptr), symname) == 0
-             : (((*q->sym_ptr_ptr)->flags & BSF_SECTION_SYM) != 0
-                && bfd_get_section (*q->sym_ptr_ptr) == info->defsec)))
+             : ((*q->sym_ptr_ptr)->flags & BSF_SECTION_SYM) != 0))
        {
          /* We found a reloc for the symbol.  The symbol is defined
             in OUTSECNAME.  This reloc is from a section which is