Message ID | 20161231153017.10545-1-marcinch7@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
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))
>>>>> "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 --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))
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(+)