Allow plugin syms to mark as-needed shared libs needed.
This commit is contained in:
parent
7bb2daa612
commit
5305d155cb
83
binutils-plugin-as-needed.patch
Normal file
83
binutils-plugin-as-needed.patch
Normal file
@ -0,0 +1,83 @@
|
||||
diff -rup binutils.orig/ld/testsuite/ld-plugin/lto.exp binutils-2.35.1/ld/testsuite/ld-plugin/lto.exp
|
||||
--- binutils.orig/ld/testsuite/ld-plugin/lto.exp 2020-10-09 11:46:13.571665439 +0100
|
||||
+++ binutils-2.35.1/ld/testsuite/ld-plugin/lto.exp 2020-10-09 11:47:59.113302758 +0100
|
||||
@@ -319,27 +319,6 @@ set lto_link_elf_tests [list \
|
||||
[list "PR ld/13244" \
|
||||
"-shared -O2 -fPIC -flto -fuse-linker-plugin -nostdlib" "-O2 -fno-early-inlining -flto" \
|
||||
{pr13244.c} {{"readelf" {-s --wide} "pr13244.d"}} "pr13244.so" "c"] \
|
||||
- [list "Build libpr15146a.a" \
|
||||
- "$plug_opt" "-flto -O2" \
|
||||
- {pr15146a.c} {} "lib15146a.a"] \
|
||||
- [list "Build pr15146b.so" \
|
||||
- "-shared" "-O2 -fpic" \
|
||||
- {pr15146b.c} {} "pr15146b.so" "c"] \
|
||||
- [list "Build pr15146c.so" \
|
||||
- "-shared -Wl,--no-as-needed tmpdir/pr15146b.so" "-O2 -fpic" \
|
||||
- {pr15146c.c} {} "pr15146c.so" "c"] \
|
||||
- [list "PR ld/15146 (1)" \
|
||||
- "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146a.o tmpdir/pr15146c.so" "" \
|
||||
- {dummy.c} {{"readelf" {-d} "pr15146.d"}} "pr15146a.exe"] \
|
||||
- [list "Build libpr15146d.a" \
|
||||
- "$plug_opt" "-flto -O2" \
|
||||
- {pr15146d.c} {} "lib15146d.a"] \
|
||||
- [list "Build libpr16746a.a" \
|
||||
- "" "" \
|
||||
- {pr16746a.c pr16746b.c} {} "lib15146a.a"] \
|
||||
- [list "Build libpr16746b.a" \
|
||||
- "$plug_opt" "-O2 -flto" \
|
||||
- {pr16746c.c pr16746d.c} {} "lib15146b.a"] \
|
||||
[list "PR ld/16746 (1)" \
|
||||
"-O2 -flto -fuse-linker-plugin tmpdir/pr16746a.o tmpdir/pr16746c.o" "-O2 -flto" \
|
||||
{dummy.c} {} "pr16746a.exe"] \
|
||||
@@ -602,13 +581,6 @@ run_cc_link_tests $lto_compile_elf_tests
|
||||
# Restrict these to ELF targets that support shared libs and PIC.
|
||||
if { [is_elf_format] && [check_lto_shared_available] } {
|
||||
run_cc_link_tests $lto_link_elf_tests
|
||||
- set testname "PR ld/15146 (2)"
|
||||
- set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin -Wl,-rpath-link,. -Wl,--no-copy-dt-needed-entries -Wl,--no-as-needed tmpdir/pr15146d.o tmpdir/pr15146c.so"]
|
||||
- if { [ regexp "undefined reference to symbol '\\.?xxx'" $exec_output ] } {
|
||||
- pass $testname
|
||||
- } {
|
||||
- fail $testname
|
||||
- }
|
||||
set testname "PR ld/16746 (3)"
|
||||
set exec_output [run_host_cmd "$CC" "-O2 -flto -fuse-linker-plugin tmpdir/pr16746b.o tmpdir/pr16746d.o"]
|
||||
if { [ regexp "warning: \\.?foobar" $exec_output ] && ![ regexp "symbol from plugin" $exec_output ] } {
|
||||
|
||||
diff -rup binutils.orig/bfd/elflink.c binutils-2.35.1/bfd/elflink.c
|
||||
--- binutils.orig/bfd/elflink.c 2020-10-09 11:46:14.151663446 +0100
|
||||
+++ binutils-2.35.1/bfd/elflink.c 2020-10-09 11:46:27.222618528 +0100
|
||||
@@ -4970,11 +4970,7 @@ elf_link_add_object_symbols (bfd *abfd,
|
||||
object and a shared object. */
|
||||
bfd_boolean dynsym = FALSE;
|
||||
|
||||
- /* Plugin symbols aren't normal. Don't set def_regular or
|
||||
- ref_regular for them, or make them dynamic. */
|
||||
- if ((abfd->flags & BFD_PLUGIN) != 0)
|
||||
- ;
|
||||
- else if (! dynamic)
|
||||
+ if (! dynamic)
|
||||
{
|
||||
if (! definition)
|
||||
{
|
||||
@@ -5155,10 +5151,6 @@ elf_link_add_object_symbols (bfd *abfd,
|
||||
&& !bfd_link_relocatable (info))
|
||||
dynsym = FALSE;
|
||||
|
||||
- /* Nor should we make plugin symbols dynamic. */
|
||||
- if ((abfd->flags & BFD_PLUGIN) != 0)
|
||||
- dynsym = FALSE;
|
||||
-
|
||||
if (definition)
|
||||
{
|
||||
h->target_internal = isym->st_target_internal;
|
||||
@@ -5185,7 +5177,7 @@ elf_link_add_object_symbols (bfd *abfd,
|
||||
}
|
||||
}
|
||||
|
||||
- if (dynsym && h->dynindx == -1)
|
||||
+ if (dynsym && (abfd->flags & BFD_PLUGIN) == 0 && h->dynindx == -1)
|
||||
{
|
||||
if (! bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
goto error_free_vers;
|
||||
|
@ -2,7 +2,7 @@
|
||||
Summary: A GNU collection of binary utilities
|
||||
Name: %{?cross}binutils%{?_with_debug:-debug}
|
||||
Version: 2.35
|
||||
Release: 10%{?dist}
|
||||
Release: 11%{?dist}
|
||||
License: GPLv3+
|
||||
URL: https://sourceware.org/binutils
|
||||
|
||||
@ -237,6 +237,10 @@ Patch24: binutils-aarch64-plt-sh_entsize.patch
|
||||
Patch25: binutils-add-sym-cache-to-elf-link-hash.patch
|
||||
Patch26: binutils-elf-add-objects.patch
|
||||
|
||||
# Purpose: Allow plugin syms to mark as-needed shared libs needed.
|
||||
# Lifetime: Fixed in 2.36
|
||||
Patch27: binutils-plugin-as-needed.patch
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
Provides: bundled(libiberty)
|
||||
@ -810,6 +814,9 @@ exit 0
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
%changelog
|
||||
* Fri Oct 09 2020 Nick Clifton <nickc@redhat.com> - 2.35-11
|
||||
- Allow plugin syms to mark as-needed shared libs needed
|
||||
|
||||
* Fri Jul 31 2020 Jeff Law <nickc@redhat.com> - 2.35-10
|
||||
- Re-enable LTO
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user