[2/4] gcc: fix build on riscv64

Message ID 20230809175806.2624-2-arne_f@ipfire.org
State Staged
Commit a04ae8c43ba0fb4add68e4b0ebfeec393d91feab
Headers
Series [1/4] qemu_environ: set G_SLICE="always_malloc" for riscv64 |

Commit Message

Arne Fitzenreiter Aug. 9, 2023, 5:58 p.m. UTC
  Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
---
 lfs/gcc                                           |  2 ++
 ..._use_log2_from_cheader_without_namespace.patch | 15 +++++++++++++++
 2 files changed, 17 insertions(+)
 create mode 100644 src/patches/gcc/gcc-13.1.0-riscv_use_log2_from_cheader_without_namespace.patch
  

Patch

diff --git a/lfs/gcc b/lfs/gcc
index 2468e6c85..0e01fe660 100644
--- a/lfs/gcc
+++ b/lfs/gcc
@@ -212,6 +212,8 @@  $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) $(DIR_SRC)/gcc-build && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/gcc/gcc-13.1.0-riscv_use_log2_from_cheader_without_namespace.patch
+
 	@mkdir $(DIR_SRC)/gcc-build
 
 	cd $(DIR_APP) && sed -i 's/install_to_$$(INSTALL_DEST) //' libiberty/Makefile.in
diff --git a/src/patches/gcc/gcc-13.1.0-riscv_use_log2_from_cheader_without_namespace.patch b/src/patches/gcc/gcc-13.1.0-riscv_use_log2_from_cheader_without_namespace.patch
new file mode 100644
index 000000000..346817952
--- /dev/null
+++ b/src/patches/gcc/gcc-13.1.0-riscv_use_log2_from_cheader_without_namespace.patch
@@ -0,0 +1,15 @@ 
+diff -Naur gcc-13.1.0.org/gcc/config/riscv/genrvv-type-indexer.cc gcc-13.1.0/gcc/config/riscv/genrvv-type-indexer.cc
+--- gcc-13.1.0.org/gcc/config/riscv/genrvv-type-indexer.cc	2023-04-26 09:09:39.000000000 +0200
++++ gcc-13.1.0/gcc/config/riscv/genrvv-type-indexer.cc	2023-08-02 11:28:53.615913583 +0200
+@@ -115,9 +115,9 @@
+   if (sew == eew)
+     elmul_log2 = lmul_log2;
+   else if (sew > eew)
+-    elmul_log2 = lmul_log2 - std::log2 (sew / eew);
++    elmul_log2 = lmul_log2 - log2 (sew / eew);
+   else /* sew < eew */
+-    elmul_log2 = lmul_log2 + std::log2 (eew / sew);
++    elmul_log2 = lmul_log2 + log2 (eew / sew);
+ 
+   if (float_p)
+     return floattype (eew, elmul_log2);