[Buildroot] [PATCH 1/8] libunwind: fix C library dependency
Romain Naour
romain.naour at gmail.com
Mon Jan 25 21:59:40 UTC 2016
Hi Thomas, All,
Le 18/01/2016 21:24, Thomas Petazzoni a écrit :
> The libunwind package currently dependency on glibc *or* uclibc
> snapshot. However, we are going to remove the support for uclibc
> snapshot, and uClibc-ng has equivalent functionality as uclibc
> snapshot. Moreover, musl is also capable of building libunwind for
> certain architectures.
>
> Therefore, this commit reworks the architecture dependencies of
> libunwind, to make it available on all architectures for which it is
> supported, depending on the capabilities of the different C libraries,
> and the implementation of libunwind on each architecture.
>
> On some architectures, libunwind uses the C library *context()
> functions, which are not provided by musl at all, and not provided by
> uClibc on all architectures. But on some other architectures,
> libunwind does not use the C library *context() functions, which
> explains why it can be built with musl on such architectures.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> package/libunwind/Config.in | 31 ++++++++++++++++++++++++-------
> 1 file changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/package/libunwind/Config.in b/package/libunwind/Config.in
> index 85cb472..6f747ae 100644
> --- a/package/libunwind/Config.in
> +++ b/package/libunwind/Config.in
> @@ -1,15 +1,32 @@
> +# libunwind is only available for a certain subset of the
> +# architectures (as visible in the list of architectures supported
> +# with the glibc C library below).
> +#
> +# In addition to this, on some architectures libunwind requires the
> +# *context() function from the C library, which are only available on
> +# certain architectures in uClibc, and not available at all on
> +# musl. But on some other architectures, libunwind works without using
> +# the *context() functions, which allows it to be built with musl.
> +config BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
> + bool
> + default y if BR2_TOOLCHAIN_USES_GLIBC && \
> + (BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_mips64 || \
> + BR2_mips64el || BR2_powerpc || BR2_sh || BR2_sh64 || BR2_i386 || BR2_x86_64)
> + default y if BR2_TOOLCHAIN_USES_UCLIBC && \
> + (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || \
> + BR2_x86_64)
> + default y if BR2_TOOLCHAIN_USES_MUSL && \
> + (BR2_arm || BR2_armeb || BR2_i386 || BR2_x86_64)
> +
> config BR2_PACKAGE_LIBUNWIND
> bool "libunwind"
> depends on BR2_TOOLCHAIN_HAS_THREADS
> - depends on (BR2_UCLIBC_VERSION_SNAPSHOT || BR2_TOOLCHAIN_USES_GLIBC) # {g,s}etcontext
> - depends on BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_mips64 || \
> - BR2_mips64el || BR2_powerpc || BR2_sh || BR2_sh64 || BR2_i386 || BR2_x86_64
> + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
Build tested on musl and x86_64.
Checked that libunwind doesn't build with uClibc-snapshot and uClibc-ng.
Reviewed-by: Romain Naour <romain.naour at gmail.com>
Best regards,
Romain
> help
> C API to determine the call-chain of a program.
>
> http://www.nongnu.org/libunwind/index.html
>
> -comment "libunwind needs a uclibc snapshot or (e)glibc toolchain w/ threads"
> - depends on BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_mips64 || \
> - BR2_mips64el || BR2_powerpc || BR2_sh || BR2_sh64 || BR2_i386 || BR2_x86_64
> - depends on !BR2_TOOLCHAIN_HAS_THREADS || !(BR2_UCLIBC_VERSION_SNAPSHOT || BR2_TOOLCHAIN_USES_GLIBC)
> +comment "libunwind needs a toolchain w/ threads"
> + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS
> + depends on !BR2_TOOLCHAIN_HAS_THREADS
>
More information about the buildroot
mailing list