ld: Properly override the IR definition
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 22 Jul 2020 10:49:07 +0000 (03:49 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 22 Jul 2020 10:49:17 +0000 (03:49 -0700)
commit0e6a3f07f50723d1831291492b96fdf74bcbdc11
treea4b39ecfd8c04d2836ef2e5620e5e2169d65572c
parent1ad2776d3db6d82cb59cef1495642fc7fcd57ed5
ld: Properly override the IR definition

We change the previous definition in the IR object to undefweak only
after all LTO symbols have been read.

include/

PR ld/26262
PR ld/26267
* bfdlink.h (bfd_link_info): Add lto_all_symbols_read.

ld/

PR ld/26262
PR ld/26267
* ldlang.c (lang_process): Set lto_all_symbols_read after all
LTO IR symbols have been read.
* plugin.c (plugin_notice): Override the IR definition only if
all LTO IR symbols have been read or the new definition is
non-weak and the the IR definition is weak
* testsuite/ld-plugin/lto.exp: Run PR ld/26262 and ld/26267
tests.
* testsuite/ld-plugin/pr26262a.c: New file.
* testsuite/ld-plugin/pr26262b.c: Likewise.
* testsuite/ld-plugin/pr26262c.c: Likewise.
* testsuite/ld-plugin/pr26267.err: Likewise.
* testsuite/ld-plugin/pr26267a.c: Likewise.
* testsuite/ld-plugin/pr26267b.c: Likewise.
* testsuite/ld-plugin/pr26267c.c: Likewise.
13 files changed:
include/ChangeLog
include/bfdlink.h
ld/ChangeLog
ld/ldlang.c
ld/plugin.c
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr26262a.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26262b.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26262c.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26267.err [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26267a.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26267b.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr26267c.c [new file with mode: 0644]