From 8bf55f1da7094cd39de93d9a44d16219bb3d13c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=2E=20Neusch=C3=A4fer?= Date: Wed, 23 Oct 2024 23:43:20 +0200 Subject: [PATCH] package/musl: Fix -ztext build failures on microblaze MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The particular combination of LVM2 (which enables -PIE), musl-libc with dynamic linking (and thus -ztext, banning TEXTRELs), and microblaze leads to an error because a TEXTREL is produced in musl-libc's Scrt1.o. The upstream patch added in this commit fixes (or works around) the problem. Fixes: http://autobuild.buildroot.net/results/5bb283eff4b4a2b17d1028bbe0b3e1bea8fbeba8/ Signed-off-by: J. Neuschäfer Signed-off-by: Arnout Vandecappelle (cherry picked from commit 4033902ad095bdeb6a32c827a6275b49ad61a3bb) Signed-off-by: Peter Korsgaard --- ...ility-for-C-entry-point-function-_st.patch | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 package/musl/0003-use-hidden-visibility-for-C-entry-point-function-_st.patch diff --git a/package/musl/0003-use-hidden-visibility-for-C-entry-point-function-_st.patch b/package/musl/0003-use-hidden-visibility-for-C-entry-point-function-_st.patch new file mode 100644 index 0000000000..6359565cd7 --- /dev/null +++ b/package/musl/0003-use-hidden-visibility-for-C-entry-point-function-_st.patch @@ -0,0 +1,42 @@ +From 9c78557af0a5e521cdb46a4ca7630f2987d2523e Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Sat, 10 Aug 2024 19:49:24 -0400 +Subject: [PATCH] use hidden visibility for C entry point function _start_c + +the file-level crt_arch.h asm fragments generally make direct +(non-PLT) calls from _start to _start_c, which is only valid when +there is a local, non-interposable definition for _start_c. generally, +the linker is expected to know that local definitions in a main +executable (as opposed to shared library) output are non-interposable, +making this work, but historically there have been linker bugs in this +area, and microblaze is reportedly still broken, flagging the +relocation for the call as a textrel. + +the equivalent _dlstart_c, called from the same crt_arch.h asm +fragments, has always used hidden visibility without problem, and +semantically it should be hidden, so make it hidden. this ensures the +direct call is always valid regardless of whether the linker properly +special-cases main executable output. + +Upstream: https://git.musl-libc.org/cgit/musl/commit/?id=9c78557af0a5e521cdb46a4ca7630f2987d2523e +Signed-off-by: J. Neuschäfer +--- + crt/crt1.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crt/crt1.c b/crt/crt1.c +index 8fe8ab5d..10601215 100644 +--- a/crt/crt1.c ++++ b/crt/crt1.c +@@ -11,7 +11,7 @@ weak void _fini(); + int __libc_start_main(int (*)(), int, char **, + void (*)(), void(*)(), void(*)()); + +-void _start_c(long *p) ++hidden void _start_c(long *p) + { + int argc = p[0]; + char **argv = (void *)(p+1); +-- +2.45.2 +