Hello. I am working on cross compilation using musl toolchains. I've failed to cross compile sys-devel/flex. Please see build log here https://gist.github.com/andrew-aladev/d16e4c39c2f7940b86d08fbccfecdb17. The reason of this segfault was well defined by Florian Weimer in the following post. https://developers.redhat.com/blog/2019/04/22/implicit-function-declarations-flexs-use-of-reallocarray/ I've investigated this bug and found that it is not related to flex, it is related to autotools itself. Autotools just adds "#define malloc rpl_malloc" and "#define realloc rpl_realloc" into config. It looks like nobody knows why and nobody will fix it https://lists.gnu.org/archive/html/automake/2003-05/msg00017.html. Autotools are abandoned and broken by design. This issue can be fixed properly by core flex developer only by moving from autotools to other build system. But we need some fix for now. I will attach my proposed workaround here. Thank you. Reproducible: Always
Created attachment 603698 [details, diff] rpl malloc and realloc declarations
thank you so much for the patch, it really saved the day! if you want to, please try to push the patched ebuild to the overlay for the time being, thanks
1. In future, please attach build.logs here - not external sites, as they may expire. 2. I was wondering why it goes rogue given the fix for bug 628744, but the answer is there: ``` checking for GNU libc compatible malloc... no configure: WARNING: result no guessed because of cross compilation checking for stdlib.h... (cached) yes checking for GNU libc compatible realloc... no configure: WARNING: result no guessed because of cross compilation ``` I'd prefer to just give the autoconf tests the correct result (force it) than patch. I'll do that.
Created attachment 785822 [details] build.log (original, reuploaded)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/proj/crossdev.git/commit/?id=51dfd93c5122df670d2753070807e5a172727ded commit 51dfd93c5122df670d2753070807e5a172727ded Author: Sam James <sam@gentoo.org> AuthorDate: 2022-06-17 02:39:46 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-06-17 02:43:42 +0000 site: add linux-musl Follow-up to 8b1b79e02cc36bc6f2b5583db6aeea333fb8d59b. Sets ``` ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ``` ... to sort out flex and a bunch of other packages, like procps. I was wondering why this never seemed to come up when doing cross for other "standard" targets which we know work and are used often; the answer is that we never had the -musl suffix CHOSTs covered. (e.g. linux-gnu already has this set.) Bug: https://bugs.gentoo.org/554032 Closes: https://bugs.gentoo.org/675368 Closes: https://bugs.gentoo.org/705800 See: 8b1b79e02cc36bc6f2b5583db6aeea333fb8d59b Signed-off-by: Sam James <sam@gentoo.org> wrappers/site/linux-musl | 4 ++++ 1 file changed, 4 insertions(+)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4d77781e2db7bb8bef7f390c43efc04ba58ff7bb commit 4d77781e2db7bb8bef7f390c43efc04ba58ff7bb Author: Sam James <sam@gentoo.org> AuthorDate: 2022-06-17 02:23:18 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-06-17 12:10:06 +0000 sys-devel/flex: fix segfault when cross-compiling Temporary workaround until new crossdev is tagged, stabled, and propagates. Closes: https://bugs.gentoo.org/705800 Signed-off-by: Sam James <sam@gentoo.org> sys-devel/flex/flex-2.6.4-r2.ebuild | 94 +++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+)
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8a1d005f7decdb50955cd653762f1b171a4e878e commit 8a1d005f7decdb50955cd653762f1b171a4e878e Author: Sam James <sam@gentoo.org> AuthorDate: 2022-06-17 18:34:17 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-06-17 18:44:02 +0000 sys-devel/crossdev: add 20220617 Bug: https://bugs.gentoo.org/675368 Bug: https://bugs.gentoo.org/554032 Bug: https://bugs.gentoo.org/705800 Signed-off-by: Sam James <sam@gentoo.org> sys-devel/crossdev/Manifest | 1 + sys-devel/crossdev/crossdev-20220617.ebuild | 35 +++++++++++++++++++++++++++++ sys-devel/crossdev/crossdev-99999999.ebuild | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-)
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bec6a7be57fc3493dccef497b5d4b513c315f5f1 commit bec6a7be57fc3493dccef497b5d4b513c315f5f1 Author: Sam James <sam@gentoo.org> AuthorDate: 2022-10-25 11:41:32 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-10-25 11:42:25 +0000 sys-devel/flex: backport "config.h" fix too We already have the patch to config.h/configure.ac backported but we don't have the fix to actually *use* config.h everywhere, and clearly from bug #705800 it wasn't sufficient to just backport it (for reasons covered in the bug & upstream bug). Bug: https://bugs.gentoo.org/628744 Bug: https://bugs.gentoo.org/705800 Signed-off-by: Sam James <sam@gentoo.org> .../flex/files/flex-2.6.4-implicit-func-decl.patch | 50 ++++++++++++ sys-devel/flex/flex-2.6.4-r3.ebuild | 95 ++++++++++++++++++++++ 2 files changed, 145 insertions(+)
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=af4a94a1b5b778c0d983fbe6370b5ded4e6b54e1 commit af4a94a1b5b778c0d983fbe6370b5ded4e6b54e1 Author: Sam James <sam@gentoo.org> AuthorDate: 2022-10-28 00:35:41 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-10-28 01:54:19 +0000 sys-devel/flex: backport further macro fixes The gist is that the original glibc-2.26 patch was incomplete and didn't help with cross-compilation or non-glibc environments fully. There were a succession of further upstream commits now backported here. Noticed when doing some more Clang 16 work. This complements bec6a7be57fc3493dccef497b5d4b513c315f5f1 in that more effort is taken to ensure all necessary macros are defined so needed functions are available. Bug: https://bugs.gentoo.org/628744 Bug: https://bugs.gentoo.org/705800 See: bec6a7be57fc3493dccef497b5d4b513c315f5f1 See: 4d77781e2db7bb8bef7f390c43efc04ba58ff7bb See: aa6c077d00c3a21b75ae646421aefadcad527f80 Signed-off-by: Sam James <sam@gentoo.org> sys-devel/flex/Manifest | 2 +- .../flex-2.6.4-fix-build-with-glibc2.26.patch | 219 +++++++++++++++++++++ .../{flex-2.6.4-r3.ebuild => flex-2.6.4-r4.ebuild} | 20 +- 3 files changed, 233 insertions(+), 8 deletions(-)
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=812e4a387f47eac3a832690655cbceffa51aab18 commit 812e4a387f47eac3a832690655cbceffa51aab18 Author: Sam James <sam@gentoo.org> AuthorDate: 2022-10-28 01:58:07 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-10-28 01:58:19 +0000 sys-process/procps: drop obsolete cross malloc workaround We set the right bits in crossdev for musl targets now and, in theory, while unlikely, it is possible that some cross targets don't have the right behaviour anyway (not that i'm aware of any in use). Bug: https://bugs.gentoo.org/705800 Signed-off-by: Sam James <sam@gentoo.org> sys-process/procps/procps-3.3.17-r1.ebuild | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=51ce26ce6dd264cab35669505333ce7bea95b545 commit 51ce26ce6dd264cab35669505333ce7bea95b545 Author: Sam James <sam@gentoo.org> AuthorDate: 2022-10-28 01:57:42 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2022-10-28 01:57:42 +0000 sys-devel/flex: drop obsolete cross malloc workaround We set the right bits in crossdev for musl targets now and, in theory, while unlikely, it is possible that some cross targets don't have the right behaviour anyway (not that i'm aware of any in use). Bug: https://bugs.gentoo.org/705800 Signed-off-by: Sam James <sam@gentoo.org> sys-devel/flex/flex-2.6.4-r4.ebuild | 9 --------- 1 file changed, 9 deletions(-)