From f45b02a8f480c19f42a44feb655481a45b64fab8 Mon Sep 17 00:00:00 2001 From: Cheng Shao <terrorjack@type.dance> Date: Tue, 7 May 2024 20:35:47 +0000 Subject: [PATCH] hadrian: disable PIC for in-tree GMP on wasm32 This patch disables PIC for in-tree GMP on wasm32 target. Enabling PIC unconditionally adds undesired code size and runtime overhead for wasm32. (cherry picked from commit f9c1ae122ec642c0d9236dffc971bc2d1ca38fba) (cherry picked from commit 5f728fc4dd3121aa4d2809a68629a6422b53e95c) --- hadrian/src/Settings/Builders/Configure.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hadrian/src/Settings/Builders/Configure.hs b/hadrian/src/Settings/Builders/Configure.hs index e88a8bde4ae..99c82d6675c 100644 --- a/hadrian/src/Settings/Builders/Configure.hs +++ b/hadrian/src/Settings/Builders/Configure.hs @@ -14,7 +14,6 @@ configureBuilderArgs = do targetPlatform <- getSetting TargetPlatform buildPlatform <- getSetting BuildPlatform pure $ [ "--enable-shared=no" - , "--with-pic=yes" , "--host=" ++ targetPlatform -- GMP's host is our target , "--build=" ++ buildPlatform ] -- Disable GMP's alloca usage on wasm32, it may @@ -24,6 +23,10 @@ configureBuilderArgs = do -- more detailed explanation of this configure -- option. <> [ "--enable-alloca=malloc-reentrant" | targetArch == "wasm32" ] + -- Enable PIC unless target is wasm32, in which + -- case we don't want libgmp.a to be bloated due + -- to PIC overhead. + <> [ "--with-pic=yes" | targetArch /= "wasm32" ] , builder (Configure libffiPath) ? do top <- expr topDirectory -- GitLab