ELF: Hide symbols defined in discarded input sections
When assigning symbol version, we should hide debug symbols defined in discarded sections from IR objects so that they can be removed later. bfd/ PR ld/23818 * elflink.c (_bfd_elf_link_assign_sym_version): Hide symbols defined in discarded input sections. ld/ PR ld/23818 * testsuite/ld-plugin/lto.exp: Run PR ld/23818 test. * testsuite/ld-plugin/pr23818.d: New file. * testsuite/ld-plugin/pr23818.t: Likewise. * testsuite/ld-plugin/pr23818a.c: Likewise. * testsuite/ld-plugin/pr23818b.c: Likewise.
This commit is contained in:
parent
0e139b8787
commit
0a640d7196
|
@ -1,3 +1,9 @@
|
|||
2018-10-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23818
|
||||
* elflink.c (_bfd_elf_link_assign_sym_version): Hide symbols
|
||||
defined in discarded input sections.
|
||||
|
||||
2018-10-24 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf32-arm.c (elf32_arm_size_stubs): Ignore as-needed libs that
|
||||
|
|
|
@ -2359,13 +2359,21 @@ _bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bed = get_elf_backend_data (info->output_bfd);
|
||||
|
||||
/* We only need version numbers for symbols defined in regular
|
||||
objects. */
|
||||
if (!h->def_regular)
|
||||
return TRUE;
|
||||
{
|
||||
/* Hide symbols defined in discarded input sections. */
|
||||
if ((h->root.type == bfd_link_hash_defined
|
||||
|| h->root.type == bfd_link_hash_defweak)
|
||||
&& discarded_section (h->root.u.def.section))
|
||||
(*bed->elf_backend_hide_symbol) (info, h, TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
hide = FALSE;
|
||||
bed = get_elf_backend_data (info->output_bfd);
|
||||
p = strchr (h->root.root.string, ELF_VER_CHR);
|
||||
if (p != NULL && h->verinfo.vertree == NULL)
|
||||
{
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2018-10-24 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23818
|
||||
* testsuite/ld-plugin/lto.exp: Run PR ld/23818 test.
|
||||
* testsuite/ld-plugin/pr23818.d: New file.
|
||||
* testsuite/ld-plugin/pr23818.t: Likewise.
|
||||
* testsuite/ld-plugin/pr23818a.c: Likewise.
|
||||
* testsuite/ld-plugin/pr23818b.c: Likewise.
|
||||
|
||||
2018-10-23 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/ld-elf/shared.exp: Don't build pr19073 test on alpha.
|
||||
|
|
|
@ -219,6 +219,12 @@ set lto_link_tests [list \
|
|||
[list "Build pr22751.a" \
|
||||
"$plug_opt" "-flto $lto_no_fat $INT128_CFLAGS" \
|
||||
{pr22751.c} {} "pr22751.a"] \
|
||||
[list "Build libpr23818.so" \
|
||||
"-shared -flto -g -Wl,-version-script,pr23818.t" \
|
||||
"-g -flto $lto_fat" \
|
||||
{pr23818a.c pr23818b.c} \
|
||||
{{"readelf" {-s --wide} "pr23818.d"}} \
|
||||
"libpr23818.so"] \
|
||||
]
|
||||
|
||||
if { [at_least_gcc_version 4 7] } {
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
#failif
|
||||
#...
|
||||
.*0+ +[A-Z]+ +GLOBAL +DEFAULT +ABS foo
|
||||
#...
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
global: bar;
|
||||
local: *;
|
||||
};
|
|
@ -0,0 +1,4 @@
|
|||
void
|
||||
foo ()
|
||||
{
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
void foo (void);
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
foo ();
|
||||
}
|
Loading…
Reference in New Issue