From cf18b0902675981ff8aba08daa0daca42cc9d131 Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Sat, 11 Feb 2023 17:51:24 +0800 Subject: [PATCH] Add helper scripts from mageia to fix overlinking of shared libs --- fix-libtool-from-moving-options-after-libs | 15 +++++++++++++++ fix-libtool-ltmain-from-overlinking | 14 ++++++++++++++ macros | 4 ++++ system-rpm-config.spec | 11 ++++++++++- 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100755 fix-libtool-from-moving-options-after-libs create mode 100755 fix-libtool-ltmain-from-overlinking diff --git a/fix-libtool-from-moving-options-after-libs b/fix-libtool-from-moving-options-after-libs new file mode 100755 index 0000000..e8db899 --- /dev/null +++ b/fix-libtool-from-moving-options-after-libs @@ -0,0 +1,15 @@ +#!/bin/sh + +CONFIGURE_TOP="${1:-.}" +if [ -e $CONFIGURE_TOP/configure ] && grep -q -F '$deplibs $compiler_flags' $CONFIGURE_TOP/configure; then + echo "Fixing libtool inside configure to pass -Wl,xxx options before libraries" + + # a similar patch has been applied in libtool in libtool package (#47273) + # but this works even if autoreconf is not called + + sed -i \ + -e 's,$deplibs $compiler_flags,$compiler_flags $deplibs,' \ + -e 's,$deplibs $postdep_objects $compiler_flags,$compiler_flags $deplibs $postdep_objects,' \ + $CONFIGURE_TOP/configure +fi + diff --git a/fix-libtool-ltmain-from-overlinking b/fix-libtool-ltmain-from-overlinking new file mode 100755 index 0000000..b6b97e3 --- /dev/null +++ b/fix-libtool-ltmain-from-overlinking @@ -0,0 +1,14 @@ +#!/bin/sh + +if [ -e ltmain.sh ]; then + echo "Fixing libtool's ltmain.sh to prevent overlinking (cf http://wiki.mandriva.com/en/Overlinking)" + + # a similar patch has been applied in ltmain.sh in libtool package + # but this works even if autoreconf is not called + + mv ltmain.sh ltmain.sh.orig + echo link_all_deplibs=no > ltmain.sh + cat ltmain.sh.orig >> ltmain.sh + + sed -i -s 's/link) libs="$deplibs %DEPLIBS% $dependency_libs"/link) libs="$deplibs %DEPLIBS%"/' ltmain.sh +fi diff --git a/macros b/macros index 8fae000..4d0a93d 100644 --- a/macros +++ b/macros @@ -187,6 +187,8 @@ print(result) diff -u $file.backup $file && mv $file.backup $file \ done +%__fix_libtool_ltmain_from_overlinking /usr/lib/rpm/anolis/fix-libtool-ltmain-from-overlinking +%__fix_libtool_from_moving_options_after_libs /usr/lib/rpm/anolis/fix-libtool-from-moving-options-after-libs %__fix_dlsearch_path_in_libtool /usr/lib/rpm/anolis/fix-dlsearch-path-in-libtool %configure \ @@ -199,6 +201,8 @@ print(result) for i in $(find . -name ltmain.sh) ; do \ %{__sed} -i.backup -e 's~compiler_flags=$~compiler_flags="%{_hardened_ldflags}"~' $i \ done ; \ + %{__fix_libtool_ltmain_from_overlinking} ; \ + %{__fix_libtool_from_moving_options_after_libs} . ; \ %{__fix_dlsearch_path_in_libtool} . %{_lib} ; \ %{_configure} --build=%{_build} --host=%{_host} \\\ --program-prefix=%{?_program_prefix} \\\ diff --git a/system-rpm-config.spec b/system-rpm-config.spec index 21c93e3..62a382f 100644 --- a/system-rpm-config.spec +++ b/system-rpm-config.spec @@ -1,4 +1,4 @@ -%define anolis_release 24 +%define anolis_release 25 Summary: Anolis OS specific rpm configuration files Name: system-rpm-config @@ -62,6 +62,8 @@ Source405: relink_symlinks Source406: check-desktop-files Source407: clean_perl Source408: check_elf_files +Source409: fix-libtool-ltmain-from-overlinking +Source410: fix-libtool-from-moving-options-after-libs # 2022-05-25 Snapshots from http://git.savannah.gnu.org/gitweb/?p=config.git Source500: config.guess @@ -138,6 +140,8 @@ install -p -m 755 -t %{buildroot}%{rrcdir} gpgverify install -p -m 755 -t %{buildroot}%{rrcdir} brp-* install -p -m 755 -t %{buildroot}%{rrcdir} remove-info-dir install -p -m 755 -t %{buildroot}%{rrcdir} fix-dlsearch-path-in-libtool +install -p -m 755 -t %{buildroot}%{rrcdir} fix-libtool-ltmain-from-overlinking +install -p -m 755 -t %{buildroot}%{rrcdir} fix-libtool-from-moving-options-after-libs install -p -m 755 -t %{buildroot}%{rrcdir} generate-compatibility-deps install -p -m 755 -t %{buildroot}%{rrcdir} relink_symlinks install -p -m 755 -t %{buildroot}%{rrcdir} check-desktop-files @@ -179,6 +183,8 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %{rrcdir}/remove-info-dir %{rrcdir}/relink_symlinks %{rrcdir}/fix-dlsearch-path-in-libtool +%{rrcdir}/fix-libtool-from-moving-options-after-libs +%{rrcdir}/fix-libtool-ltmain-from-overlinking %{rrcdir}/generate-compatibility-deps %{_fileattrsdir}/*.attr %{_rpmconfigdir}/compatibility-deps.sh @@ -198,6 +204,9 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/anolis/srpm forge.lua %license MulanPSL %changelog +* Sat Feb 11 2023 Funda Wang - 1:23-25 +- Add helper scripts from mageia to fix overlinking of shared libs + * Mon Feb 6 2023 Funda Wang - 1:23-24 - Fix output of undefined symbols detections -- Gitee