]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
PROVIDE in linker script vs. built-in symbols
authorAlan Modra <amodra@gmail.com>
Sat, 7 Jun 2014 04:28:53 +0000 (13:58 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 12 Jun 2014 15:29:06 +0000 (00:59 +0930)
* ldexp.c (exp_fold_tree_1 <etree_provide>): Make PROVIDEd
linker script symbol value override a built-in linker symbol.

ld/ChangeLog
ld/ldexp.c

index 9e3303d905fc1293239e0a240057c9eb57912f47..0a8eb7260554f3aa3a9479c26d10c0987233be5c 100644 (file)
@@ -1,6 +1,10 @@
 2014-06-12  Alan Modra  <amodra@gmail.com>
 
        Backport mainline patches
+       2014-06-07  Alan Modra  <amodra@gmail.com>
+       * ldexp.c (exp_fold_tree_1 <etree_provide>): Make PROVIDEd
+       linker script symbol value override a built-in linker symbol.
+
        2014-02-19  Alan Modra  <amodra@gmail.com>
        * emultempl/ppc64elf.em (params): Init new field.
        (ppc_create_output_section_statements): Set params.save_restore_funcs
index 49e7c65f4176f1d5990ec856a433e30fb978c385..6556b08dfbce367e9097e758fe637e5baa02e057 100644 (file)
@@ -889,7 +889,10 @@ exp_fold_tree_1 (etree_type *tree)
              if (h == NULL
                  || (h->type != bfd_link_hash_new
                      && h->type != bfd_link_hash_undefined
-                     && h->type != bfd_link_hash_common))
+                     && h->type != bfd_link_hash_common
+                     && !(h->type == bfd_link_hash_defined
+                          && (h->u.def.section->flags
+                              & SEC_LINKER_CREATED) != 0)))
                {
                  /* Do nothing.  The symbol was never referenced, or was
                     defined by some object.  */