[Buildroot] [PATCH] package/elf2flt: fix riscv64 noMMU build

Waldemar Brodkorb wbx at openadk.org
Wed Apr 24 16:11:36 UTC 2024


Signed-off-by: Waldemar Brodkorb <wbx at openadk.org>
---
 ...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 <wbx at openadk.org>
+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 <wbx at openadk.org>
+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 at _ssro_size = @SYMBOL_PREFIX at _essro - @SYMBOL_PREFIX at _ssro;
+ 		PROVIDE(@SYMBOL_PREFIX at _SDA2_BASE_ = @SYMBOL_PREFIX at _ssro + (@SYMBOL_PREFIX at _ssro_size / 2));
+ 
+-		. = ALIGN(4) ;
++		. = ALIGN(8) ;
+ TOR:		@SYMBOL_PREFIX at __CTOR_LIST__ = .;
+ TOR:		LONG((@SYMBOL_PREFIX at __CTOR_END__ - @SYMBOL_PREFIX at __CTOR_LIST__) / 4 - 2)
+ SINGLE_LINK:	/* gcc uses crtbegin.o to find the start of
+-- 
+2.30.2
+
-- 
2.30.2




More information about the buildroot mailing list