rust: fix rust cross-compile

reasoning:
sjlj (short jump long jump) exception handling makes no sense on x86_64, it's forcably slowing programs down as it produces a constant overhead. On x86_64 we have SEH (Structured Exception Handling) and we should use that. On i686, we do not have SEH, and have to use sjlj with dwarf2. Hence it's now conditional on x86_32
wip/yesman
Michael Bishop 4 years ago
parent dd8f077ff9
commit e27e475f0d
No known key found for this signature in database
GPG Key ID: DF6388A85A7C8D6E
  1. 8
      pkgs/development/compilers/gcc/common/configure-flags.nix

@ -58,8 +58,9 @@ let
"--with-gnu-as"
"--with-gnu-ld"
"--disable-debug"
"--enable-sjlj-exceptions"
"--disable-win32-registry"
] ++ lib.optionals (crossMingw && targetPlatform.isx86_32) [
"--enable-sjlj-exceptions"
] else [
(if crossDarwin then "--with-sysroot=${lib.getLib libcCross}/share/sysroot"
else "--with-headers=${lib.getDev libcCross}${libcCross.incdir or "/include"}")
@ -81,13 +82,14 @@ let
# musl at least, disable: https://git.buildroot.net/buildroot/commit/?id=873d4019f7fb00f6a80592224236b3ba7d657865
"--disable-libmpx"
] ++ lib.optionals crossMingw [
"--enable-sjlj-exceptions"
"--enable-hash-synchronization"
"--enable-libssp"
"--disable-nls"
"--with-dwarf2"
# To keep ABI compatibility with upstream mingw-w64
"--enable-fully-dynamic-string"
] ++ lib.optionals (crossMingw && targetPlatform.isx86_32) [
"--enable-sjlj-exceptions"
"--with-dwarf2"
] ++ lib.optional (targetPlatform.libc == "newlib") "--with-newlib"
++ lib.optional (targetPlatform.libc == "avrlibc") "--with-avrlibc"
);

Loading…
Cancel
Save