diff mbox

[1/1] toolchain/wrapper: fix building without glibc

Message ID 20161231153017.10545-1-marcinch7@gmail.com
State Changes Requested
Headers show

Commit Message

Marcin Chojnacki Dec. 31, 2016, 3:30 p.m. UTC
toolchain-wrapper.c now uses program_invocation_short_name, which is
a glibc specific extension. This causes build to fail when using a
system with libc different than glibc (musl, BSD libc, etc.)

This change makes toolchain-wrapper.c portable, by setting it's value
to getprogname() when __GLIBC__ is not defined, and thus makes running
buildroot possible on glibc-less systems.

Signed-off-by: Marcin Chojnacki <marcinch7@gmail.com>
---
 toolchain/toolchain-wrapper.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Baruch Siach Dec. 31, 2016, 10:56 p.m. UTC | #1
Hi Marcin,

On Sat, Dec 31, 2016 at 04:30:17PM +0100, Marcin Chojnacki wrote:
> toolchain-wrapper.c now uses program_invocation_short_name, which is
> a glibc specific extension. This causes build to fail when using a
> system with libc different than glibc (musl, BSD libc, etc.)
> 
> This change makes toolchain-wrapper.c portable, by setting it's value
> to getprogname() when __GLIBC__ is not defined, and thus makes running
> buildroot possible on glibc-less systems.

getprogname() is BSD specific[1]. None of the major Linux libcs (glibc, 
uclibc-ng, musl) provide it.

[1] https://www.freebsd.org/cgi/man.cgi?query=getprogname&sektion=3

baruch

> Signed-off-by: Marcin Chojnacki <marcinch7@gmail.com>
> ---
>  toolchain/toolchain-wrapper.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
> index 100aa18..8eb0aca 100644
> --- a/toolchain/toolchain-wrapper.c
> +++ b/toolchain/toolchain-wrapper.c
> @@ -141,6 +141,9 @@ static void check_unsafe_path(const char *arg,
>  			      int arg_has_path)
>  {
>  	const struct str_len_s *p;
> +#ifndef __GLIBC__
> +	const char *program_invocation_short_name = getprogname();
> +#endif
>  
>  	for (p=unsafe_paths; p->str; p++) {
>  		if (strncmp(path, p->str, p->len))
Peter Korsgaard Jan. 25, 2017, 9:31 p.m. UTC | #2
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

 > Hi Marcin,
 > On Sat, Dec 31, 2016 at 04:30:17PM +0100, Marcin Chojnacki wrote:
 >> toolchain-wrapper.c now uses program_invocation_short_name, which is
 >> a glibc specific extension. This causes build to fail when using a
 >> system with libc different than glibc (musl, BSD libc, etc.)
 >> 
 >> This change makes toolchain-wrapper.c portable, by setting it's value
 >> to getprogname() when __GLIBC__ is not defined, and thus makes running
 >> buildroot possible on glibc-less systems.

 > getprogname() is BSD specific[1]. None of the major Linux libcs (glibc, 
 > uclibc-ng, musl) provide it.

 > [1] https://www.freebsd.org/cgi/man.cgi?query=getprogname&sektion=3

Out of interest, what system are you trying to use Buildroot on? A BSD
variant? I would imagine a number of other things breaking on !Linux
systems.
diff mbox

Patch

diff --git a/toolchain/toolchain-wrapper.c b/toolchain/toolchain-wrapper.c
index 100aa18..8eb0aca 100644
--- a/toolchain/toolchain-wrapper.c
+++ b/toolchain/toolchain-wrapper.c
@@ -141,6 +141,9 @@  static void check_unsafe_path(const char *arg,
 			      int arg_has_path)
 {
 	const struct str_len_s *p;
+#ifndef __GLIBC__
+	const char *program_invocation_short_name = getprogname();
+#endif
 
 	for (p=unsafe_paths; p->str; p++) {
 		if (strncmp(path, p->str, p->len))