[Buildroot] [PATCH v2 07/11] package/flex: disable reallocarray

Adrian Perez de Castro aperez at igalia.com
Thu Sep 14 08:25:27 UTC 2017


Hi everybody,

On Wed, 13 Sep 2017 21:54:31 +0200, Romain Naour <romain.naour at gmail.com> wrote:
> Hi Jörg,
> 
> Le 13/09/2017 à 20:53, Jörg Krause a écrit :
> > Hi,
> > 
> > On Thu, 2017-09-07 at 23:32 +0200, Romain Naour wrote:
> >> Hi Thomas,
> >>
> >> Le 03/09/2017 à 09:14, Thomas Petazzoni a écrit :
> >>> Hello,
> >>>
> >>> On Sun, 3 Sep 2017 00:23:40 +0200, Romain Naour wrote:
> >>>
> >>>>> This commit log is a bit mysterious: if reallocarray() has been
> >>>>> introduced in glibc 2.26, why isn't flex able to use it ?  
> >>>>
> >>>> It's a nasty issue, when reallocarray() is available for the target, flex will
> >>>> build a small tool called stage1flex for the host (using _FOR_BUILD) but with
> >>>> the config.h generated for the target.
> >>>>
> >>>> My host doesn't have glibc 2.26, so reallocarray() is never defined while
> >>>> building stage1flex:
> >>>>
> >>>> misc.c:147:8: warning : implicit declaration of function « reallocarray »
> >>>> [-Wimplicit-function-declaration]
> >>>>   mem = reallocarray(NULL, (size_t) size, element_size);
> >>>>         ^~~~~~~~~~~~
> >>>> misc.c:147:6: warning : assignment makes pointer from integer without a cast
> >>>> [-Wint-conversion]
> >>>>   mem = reallocarray(NULL, (size_t) size, element_size);
> >>>>       ^
> >>>>
> >>>> I don't know how to fix this, except by disabling reallocarray() for the target...
> >>>
> >>> This should all be explained in the commit log, and a short comment in
> >>> flex.mk should be added as well.
> >>
> >> Actually I looked further into this issue after sending the patch.
> >>
> >>>
> >>> Generally speaking, the commit logs in this series are too terse: they
> >>> just say "fix build with glibc 2.26" with no explanations, or they
> >>> backport some seemingly random glibc patches, without explaining why
> >>> they are needed. Could you improve this a bit ?
> >>
> >> Well, the glibc bump is more complicated than expected and I need to spent more
> >> time on it to understand what's going on...
> >>
> >> At least we have a link to the upstream reference as a starting point.
> >> Ok, this patch is really too terse, I added it just before sending the series :-/
> >>
> >> I'll try to continue this week-end.
> > 
> > Fixed upstream:
> > https://github.com/westes/flex/commit/24fd0551333e7eded87b64dd36062da3d
> > f2f6380
> > 
> > Meanwhile, another patch was provided:
> > http://patchwork.ozlabs.org/patch/813474/
> 
> Tanks for the link but this is a different issue.
> 
> The issue reported here is when the toolchain provide glibc 2.26 and the host
> use an older glibc version which doesn't provide reallocarray().
> 
> The issue reported by Adrian is when glibc 2.26 is installed on the host.

This is correct, I've hit the host-has-2.26 issue.

> Sadly, the patch provided by Adrian doesn't fix this issue.

That's right as well. I remembered seeing Romain's patch flying by the mailing
list, so I took a look at it and it seemed to me like it would not fix my
build issue for “host-flex”.

I think we need *both* patches:

 - Romain's fixes building “flex” when Buildroot has glibc 2.26 and the host
   has any libc which does not have reallocarray().

 - Mine fixes building “host-flex” when the host has glibc 2.26, regardless
   if the libc being built by Buildroot.

Is there anything preventing both from being merged? Would it be useful if
we tried to merge both patches?

Best regards,


--
 Adrián 🎩
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20170914/da859d09/attachment.asc>


More information about the buildroot mailing list