]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
ltmain.in: overlinking dependency_libs when linking against a libtool library
authorAnthony Mallet <anthony.mallet@laas.fr>
Wed, 6 May 2026 21:20:33 +0000 (00:20 +0300)
committerIleana Dumitrescu <ileanadumitrescu95@gmail.com>
Wed, 3 Jun 2026 17:41:53 +0000 (20:41 +0300)
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.

build-aux/ltmain.in

index 3c30492bf631183d08f7aea096a8576dc4c79304..45e0668f3fd99e09c3869baec3feba9d17caa8ec 100644 (file)
@@ -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