From 95f301fe98d357114f52b3a9ebb4cffae7ca0f7e Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 24 Apr 2024 18:11:36 +0200 Subject: [PATCH] package/elf2flt: fix riscv64 noMMU build Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6655119961 Signed-off-by: Waldemar Brodkorb Signed-off-by: Romain Naour (cherry picked from commit 8d366dbf562a959a3dca3ee6972d5a67f67aa885) Signed-off-by: Peter Korsgaard --- ...r-new-style-ctors-when-using-riscv64.patch | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 package/elf2flt/0001-fix-alignment-for-new-style-ctors-when-using-riscv64.patch diff --git a/package/elf2flt/0001-fix-alignment-for-new-style-ctors-when-using-riscv64.patch b/package/elf2flt/0001-fix-alignment-for-new-style-ctors-when-using-riscv64.patch new file mode 100644 index 0000000000..fea726dab2 --- /dev/null +++ b/package/elf2flt/0001-fix-alignment-for-new-style-ctors-when-using-riscv64.patch @@ -0,0 +1,34 @@ +From eead8d5e9f3911243182311f16178c25c6ea03c4 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sat, 23 Mar 2024 07:23:45 +0100 +Subject: [PATCH] fix alignment for new-style ctors when using riscv64 + +Recently uClibc-ng enabled UCLIBC_CTOR_DTOR for riscv64, so +that f.e. C++ applications are running fine. As a side effect +this breaks noMMU support. The problem is the alignment for +the ctors in elf2flt. This patch fixes it. + +Tested with Qemu for ARM, M68k and Xtensa with no regressions. + +Signed-off-by: Waldemar Brodkorb +Upstream: https://github.com/uclinux-dev/elf2flt/commit/eead8d5e9f3911243182311f16178c25c6ea03c4 +--- + elf2flt.ld.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/elf2flt.ld.in b/elf2flt.ld.in +index a99c69e..230c382 100644 +--- a/elf2flt.ld.in ++++ b/elf2flt.ld.in +@@ -139,7 +139,7 @@ R_RODAT: *(.gnu.linkonce.r*) + @SYMBOL_PREFIX@_ssro_size = @SYMBOL_PREFIX@_essro - @SYMBOL_PREFIX@_ssro; + PROVIDE(@SYMBOL_PREFIX@_SDA2_BASE_ = @SYMBOL_PREFIX@_ssro + (@SYMBOL_PREFIX@_ssro_size / 2)); + +- . = ALIGN(4) ; ++ . = ALIGN(8) ; + TOR: @SYMBOL_PREFIX@__CTOR_LIST__ = .; + TOR: LONG((@SYMBOL_PREFIX@__CTOR_END__ - @SYMBOL_PREFIX@__CTOR_LIST__) / 4 - 2) + SINGLE_LINK: /* gcc uses crtbegin.o to find the start of +-- +2.30.2 +