PR22471, undefined reference to linker-defined symbols
[deliverable/binutils-gdb.git] / bfd / elflink.c
index ddd088c1447732bca262135dca468f767d1fc452..fed7caa5f2f4bd139d3c3453a0a8820e174a98f0 100644 (file)
@@ -1471,10 +1471,15 @@ _bfd_elf_merge_symbol (bfd *abfd,
      treated as strong if the new symbol is from a dynamic library.
      This reflects the way glibc's ld.so works.
 
+     Also allow a weak symbol to override a linker script symbol
+     defined by an early pass over the script.  This is done so the
+     linker knows the symbol is defined in an object file, for the
+     DEFINED script function.
+
      Do this before setting *type_change_ok or *size_change_ok so that
      we warn properly when dynamic library symbols are overridden.  */
 
-  if (newdef && !newdyn && olddyn)
+  if (newdef && !newdyn && (olddyn || h->root.ldscript_def))
     newweak = FALSE;
   if (olddef && newdyn)
     oldweak = FALSE;
This page took 0.026412 seconds and 4 git commands to generate.