* [Buildroot] [PATCH lvm2] acinclude.m4: Link when trying CCFLAGS
@ 2024-08-11 9:04 J. Neuschäfer via buildroot
[not found] ` <20240811215226.GK10433@brightrain.aerifal.cx>
0 siblings, 1 reply; 2+ messages in thread
From: J. Neuschäfer via buildroot @ 2024-08-11 9:04 UTC (permalink / raw)
To: lvm-devel; +Cc: musl, J. Neuschäfer, buildroot
Through a build failure of LVM2 on musl-libc 1.2.5 in the Buildroot
autobuild service[1], I noticed that musl-libc's Scrt1 for microblaze
produces a relocation targeting the .text section, which subsequently
leads to a crash at run-time because musl-libc does not support
textrels[2]. Buildroot uses the "-z text" linker option to catch
textrels early, on musl-libc.
The error can be reduced to the following test case:
$ cat hello.c
#include <stdio.h>
int main(void) { puts("Hello world!"); return 0; }
$ host/bin/microblaze-buildroot-linux-musl-gcc hello.c -z text -pie -fPIC
microblaze-buildroot-linux-musl/bin/ld: microblaze-buildroot-linux-musl/sysroot/lib/Scrt1.o:
warning: relocation against `_start_c' in read-only section `.text'
microblaze-buildroot-linux-musl/bin/ld: read-only segment has dynamic relocations
collect2: error: ld returned 1 exit status
LVM2 uses -pie only after the AC_TRY_CCFLAG macro has determined that it
can be used. This is where the problem begins: AC_TRY_CCFLAG only tries
compiling, it does not try linking the resulting object file.
To catch problems like this, this patch changes AC_TRY_CCFLAG to link in
addition to compiling. By detecting correctly that -pie does not work on
musl-libc/microblaze with -ztext, the build failure in Buildroot is fixed.
[1]: http://autobuild.buildroot.net/results/dc4/dc4fc33eaeafe5d6707d26a373560402533954f6/build-end.log
[2]: https://www.openwall.com/lists/musl/2020/09/25/4
Signed-off-by: J. Neuschäfer <j.neuschaefer@gmx.net>
---
Hi, I'm cross-posting this to the LVM2, Buildroot, and musl mailing
lists to get potential feedback early on.
---
acinclude.m4 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/acinclude.m4 b/acinclude.m4
index 47fdd59c3..9b1d3a605 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -25,7 +25,7 @@ AC_DEFUN([AC_TRY_CCFLAG],
ac_save_CFLAGS=$CFLAGS
CFLAGS=$1
AC_CACHE_CHECK([whether $CC accepts $1 flag], [ac_cv_flag_$2],
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM()],
[AS_VAR_SET([ac_cv_flag_$2], [yes])],
[AS_VAR_SET([ac_cv_flag_$2], [no])])])
CFLAGS=$ac_save_CFLAGS
---
base-commit: 90a845a7087478a7cdc7a60d89d2e7ee1366160e
change-id: 20240811-microblaze-8ff8a6217471
Best regards,
--
J. Neuschäfer <j.neuschaefer@gmx.net>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-08-23 22:16 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-11 9:04 [Buildroot] [PATCH lvm2] acinclude.m4: Link when trying CCFLAGS J. Neuschäfer via buildroot
[not found] ` <20240811215226.GK10433@brightrain.aerifal.cx>
2024-08-23 22:15 ` [Buildroot] [musl] " J. Neuschäfer via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox