about summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-09-29 14:51:12 +0200
committerAdam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com>2023-10-22 09:48:16 +0000
commit0a8e3e0748c41d3c1989b17738f589b8b1bb2378 (patch)
tree024827fd381941ed226912672cd526235377fe12 /pkgs/development/compilers
parent1c8e8ec870e6fcafa1a33acbf859c21f5f99367f (diff)
downloadnixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar.gz
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar.bz2
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar.lz
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar.xz
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.tar.zst
nixlib-0a8e3e0748c41d3c1989b17738f589b8b1bb2378.zip
gcc: create dummy crtstuff on loongarch64
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix23
1 files changed, 19 insertions, 4 deletions
diff --git a/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix b/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix
index e7dc570a560c..fc88e61c6560 100644
--- a/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix
+++ b/pkgs/development/compilers/gcc/common/libgcc-buildstuff.nix
@@ -31,7 +31,22 @@ let
   #
   SHLIB_LC = lib.optionalString stdenv.targetPlatform.isPower "-mnewlib";
 
-in ''
-    echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in
-    echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in
-  ''
+in
+''
+  echo 'libgcc.a: ${crtstuff-ofiles}' >> libgcc/Makefile.in
+  echo 'SHLIB_LC=${SHLIB_LC}' >> libgcc/Makefile.in
+''
+
+  # Meanwhile, crt{i,n}.S are not present on certain platforms
+  # (e.g. LoongArch64), resulting in the following error:
+  #
+  # No rule to make target '../../../gcc-xx.x.x/libgcc/config/loongarch/crti.S', needed by 'crti.o'.  Stop.
+  #
+  # For LoongArch64, a hacky workaround is to simply touch them,
+  # as the platform forces .init_array support.
+  #
+  # https://www.openwall.com/lists/musl/2022/11/09/3
+  #
+  + lib.optionalString stdenv.targetPlatform.isLoongArch64 ''
+  touch libgcc/config/loongarch/crt{i,n}.S
+''