scripts/trylink CONFIG_EXTRA_LDLIBS quoting issue

Denys Vlasenko vda.linux at googlemail.com
Sun Apr 6 11:06:43 UTC 2025


-      "$(CONFIG_EXTRA_LDLIBS)" \
+      $(CONFIG_EXTRA_LDLIBS) \


CONFIG_xyz strings already have double quotes: their value
is '"LIB LIB2"', therefore $(CONFIG_EXTRA_LDLIBS) above must NOT be written
as "$(CONFIG_EXTRA_LDLIBS)", it would be passed as ""LIB LIB2"",
and LIB2 would end up in $9, not $8.

On Sun, Feb 23, 2025 at 5:42 PM Jacob Burkholder
<jake.burkholder2 at gmail.com> wrote:
>
> I ran in to an issue with scripts/trylink when CONFIG_EXTRA_LDLIBS
> contains more than 1 library, the list gets passed to scripts/trylink
> without quotes so only the first library is used.
>
> CONFIG_EXTRA_LDLIBS="$8"
>
> The first library is $8, the other ones are $9, etc.
>
> I worked around it by putting the libraries in CONFIG_EXTRA_LDFLAGS
> but this doesn't always work for static linking.  I applied this patch
> which worked without using CONFIG_EXTRA_LDFLAGS.  I didn't try to
> change the quoting in Makefile which may also work.
>
> diff -Nru busybox-1.36.1.orig/scripts/trylink busybox-1.36.1/scripts/trylink
> --- busybox-1.36.1.orig/scripts/trylink 2021-03-01 08:38:12.000000000 -0800
> +++ busybox-1.36.1/scripts/trylink 2025-02-23 08:16:41.609366567 -0800
> @@ -84,7 +84,8 @@
>  # a real utmp library in LDLIBS, dropping it "works" but resulting binary
>  # does not work properly).
>  LDLIBS="$7"
> -CONFIG_EXTRA_LDLIBS="$8"
> +shift 7
> +CONFIG_EXTRA_LDLIBS="$*"
>
>  # The --sort-section option is not supported by older versions of ld
>  SORT_SECTION="-Wl,--sort-section,alignment"
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> https://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list