From: Anthony Mallet Date: Wed, 6 May 2026 21:20:33 +0000 (+0300) Subject: ltmain.in: overlinking dependency_libs when linking against a libtool library X-Git-Tag: v2.6.1~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=538ebc82e5af64c8de8544544e6bcf46df7cba27;p=thirdparty%2Flibtool.git ltmain.in: overlinking dependency_libs when linking against a libtool library On NetBSD, linking a shared lib A with a libtool shared library B always adds B's dependency to the dependencies of A, which is wrong on ELF systems. Reported: https://savannah.gnu.org/support/?111406 * build-aux/ltmain.in: Move section of code to avoid overlinking dependency_libs on ELF systems. --- diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in index 3c30492bf..45e0668f3 100644 --- a/build-aux/ltmain.in +++ b/build-aux/ltmain.in @@ -6347,19 +6347,19 @@ func_mode_link () # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done continue fi # $pass = conv