Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Romain Naour <romain.naour@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/8] libunwind: fix C library dependency
Date: Mon, 25 Jan 2016 22:59:40 +0100	[thread overview]
Message-ID: <56A69ACC.1030505@gmail.com> (raw)
In-Reply-To: <1453148701-10036-2-git-send-email-thomas.petazzoni@free-electrons.com>

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@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@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
> 

  reply	other threads:[~2016-01-25 21:59 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-18 20:24 [Buildroot] [PATCH 0/8] Remove uClibc version selection: always use uClibc-ng Thomas Petazzoni
2016-01-18 20:24 ` [Buildroot] [PATCH 1/8] libunwind: fix C library dependency Thomas Petazzoni
2016-01-25 21:59   ` Romain Naour [this message]
2016-01-25 22:20     ` Thomas Petazzoni
2016-01-25 22:33       ` Romain Naour
2016-01-25 22:43         ` Thomas Petazzoni
2016-01-18 20:24 ` [Buildroot] [PATCH 2/8] lttng-babeltrace: make available for all C libraries Thomas Petazzoni
2016-01-18 20:35   ` Baruch Siach
2016-01-25 22:16   ` Romain Naour
2016-01-18 20:24 ` [Buildroot] [PATCH 3/8] mongrel2: allow using uClibc but only on certain architectures Thomas Petazzoni
2016-01-25 22:41   ` Romain Naour
2016-01-25 22:59     ` Thomas Petazzoni
2016-01-18 20:24 ` [Buildroot] [PATCH 4/8] vlc: remove dependency on C library Thomas Petazzoni
2016-01-25 22:55   ` Romain Naour
2016-01-18 20:24 ` [Buildroot] [PATCH 5/8] samba4: remove dependency on specific C libraries Thomas Petazzoni
2016-01-25 23:06   ` Romain Naour
2016-01-26  9:58     ` Thomas Petazzoni
2016-01-18 20:24 ` [Buildroot] [PATCH 6/8] uclibc: remove 0.9.33 version Thomas Petazzoni
2016-01-25 23:11   ` Romain Naour
2016-01-25 23:14     ` Romain Naour
2016-01-26 22:08       ` Arnout Vandecappelle
2016-01-18 20:25 ` [Buildroot] [PATCH 7/8] uclibc: remove support for the snapshot version Thomas Petazzoni
2016-01-25 23:16   ` Romain Naour
2016-01-18 20:25 ` [Buildroot] [PATCH 8/8] uclibc: remove version selection Thomas Petazzoni
2016-01-25 23:31   ` Romain Naour
2016-01-24 20:25 ` [Buildroot] [PATCH 0/8] Remove uClibc version selection: always use uClibc-ng Romain Naour
2016-01-24 20:32   ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56A69ACC.1030505@gmail.com \
    --to=romain.naour@gmail.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox