From 9ebe5cfeb6be9358d649929c2dcbda0ffcda9f7a Mon Sep 17 00:00:00 2001 From: Meri Khamoyan Date: Mon, 27 Feb 2023 15:28:08 +0100 Subject: [PATCH 1/3] Pass wasi invariant mode through env variable --- eng/testing/tests.wasi.targets | 6 ++++-- src/mono/wasi/runtime/CMakeLists.txt | 4 ---- src/mono/wasi/runtime/driver.c | 7 +++++-- src/mono/wasi/wasi.proj | 1 - 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/testing/tests.wasi.targets b/eng/testing/tests.wasi.targets index 7adc77cc2a7aba..951de400e2e403 100644 --- a/eng/testing/tests.wasi.targets +++ b/eng/testing/tests.wasi.targets @@ -42,10 +42,12 @@ <_XHarnessArgs Condition="'$(WasmXHarnessArgs)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgs) <_XHarnessArgs Condition="'$(_XHarnessTestsTimeout)' != '' " >$(_XHarnessArgs) "--timeout=$(_XHarnessTestsTimeout)" <_XHarnessArgs Condition="'$(WasmXHarnessArgsCli)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgsCli) + + <_InvariantGlobalization Condition="'$(InvariantGlobalization)' == 'true'">--env=INVARIANT_GLOBALIZATION=1 - $HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_AppArgs) %24WasmTestAppArgs - %HARNESS_RUNNER% $(_XHarnessArgs) %XHARNESS_ARGS% %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_AppArgs) %WasmTestAppArgs% + $HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_InvariantGlobalization) %24_InvariantGlobalization $(_AppArgs) %24WasmTestAppArgs + %HARNESS_RUNNER% $(_XHarnessArgs) %XHARNESS_ARGS% %WasmXHarnessArgs% -- $(WasmXHarnessMonoArgs) %WasmXHarnessMonoArgs% $(_InvariantGlobalization) %_InvariantGlobalization% $(_AppArgs) %WasmTestAppArgs% diff --git a/src/mono/wasi/runtime/CMakeLists.txt b/src/mono/wasi/runtime/CMakeLists.txt index 750e47d275f768..ee61cd99ca71a1 100644 --- a/src/mono/wasi/runtime/CMakeLists.txt +++ b/src/mono/wasi/runtime/CMakeLists.txt @@ -9,11 +9,7 @@ set(CMAKE_EXECUTABLE_SUFFIX ".wasm") add_executable(dotnet driver.c pinvoke.c stubs.c synthetic-pthread.c) target_include_directories(dotnet PUBLIC ${MONO_INCLUDES} ${MONO_OBJ_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}/include/wasm) -if(INVARIANT_GLOBALIZATION) -target_compile_options(dotnet PUBLIC @${NATIVE_BIN_DIR}/src/wasi-default.rsp @${NATIVE_BIN_DIR}/src/wasi-compile.rsp -DCORE_BINDINGS -DGEN_PINVOKE=1 -DINVARIANT_GLOBALIZATION=1) -else() target_compile_options(dotnet PUBLIC @${NATIVE_BIN_DIR}/src/wasi-default.rsp @${NATIVE_BIN_DIR}/src/wasi-compile.rsp -DCORE_BINDINGS -DGEN_PINVOKE=1) -endif() set_target_properties(dotnet PROPERTIES COMPILE_FLAGS ${CONFIGURATION_WASICC_FLAGS}) diff --git a/src/mono/wasi/runtime/driver.c b/src/mono/wasi/runtime/driver.c index b6b24bd94f2fa1..3230a171bcc74d 100644 --- a/src/mono/wasi/runtime/driver.c +++ b/src/mono/wasi/runtime/driver.c @@ -369,11 +369,14 @@ mono_wasm_load_runtime (const char *unused, int debug_level) { const char *interp_opts = ""; + char* invariant_globalization = monoeg_g_getenv ("INVARIANT_GLOBALIZATION"); + if (strcmp(invariant_globalization, "1") == 0) + monoeg_g_setenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "true", 1); + else { #ifndef INVARIANT_GLOBALIZATION load_icu_data(); -#else - monoeg_g_setenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "true", 1); #endif + } #ifdef DEBUG monoeg_g_setenv ("MONO_LOG_LEVEL", "debug", 0); diff --git a/src/mono/wasi/wasi.proj b/src/mono/wasi/wasi.proj index a7f58f0aac4f63..ee0d22ce3be45a 100644 --- a/src/mono/wasi/wasi.proj +++ b/src/mono/wasi/wasi.proj @@ -178,7 +178,6 @@ $(CMakeBuildRuntimeConfigureCmd) -DICU_LIB_DIR="$(ICULibDir.TrimEnd('\/'))" $(CMakeBuildRuntimeConfigureCmd) -DMONO_ARTIFACTS_DIR="$(MonoArtifactsPath.TrimEnd('\/'))" $(CMakeBuildRuntimeConfigureCmd) -DNATIVE_BIN_DIR="$(NativeBinDir.TrimEnd('\/'))" - $(CMakeBuildRuntimeConfigureCmd) -DINVARIANT_GLOBALIZATION=1 $(CMakeBuildRuntimeConfigureCmd) -DWASM_OPT_ADDITIONAL_FLAGS="--enable-simd" $(CMakeBuildRuntimeConfigureCmd) -DDISABLE_THREADS=0 $(CMakeBuildRuntimeConfigureCmd) -DDISABLE_WASM_USER_THREADS=1 From a3161524528cf9b7285a8f361164faf25d37ce65 Mon Sep 17 00:00:00 2001 From: Meri Khamoyan Date: Tue, 28 Feb 2023 08:35:17 +0100 Subject: [PATCH 2/3] Refactored --- eng/testing/tests.wasi.targets | 2 +- src/libraries/tests.proj | 1 + src/mono/wasi/build/WasiApp.Native.targets | 1 - src/mono/wasi/runtime/driver.c | 11 +++-------- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/eng/testing/tests.wasi.targets b/eng/testing/tests.wasi.targets index 951de400e2e403..1841dd20ae9a01 100644 --- a/eng/testing/tests.wasi.targets +++ b/eng/testing/tests.wasi.targets @@ -43,7 +43,7 @@ <_XHarnessArgs Condition="'$(_XHarnessTestsTimeout)' != '' " >$(_XHarnessArgs) "--timeout=$(_XHarnessTestsTimeout)" <_XHarnessArgs Condition="'$(WasmXHarnessArgsCli)' != ''" >$(_XHarnessArgs) $(WasmXHarnessArgsCli) - <_InvariantGlobalization Condition="'$(InvariantGlobalization)' == 'true'">--env=INVARIANT_GLOBALIZATION=1 + <_InvariantGlobalization Condition="'$(InvariantGlobalization)' == 'true'">--env=DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true $HARNESS_RUNNER $(_XHarnessArgs) %24XHARNESS_ARGS %24WasmXHarnessArgs -- $(WasmXHarnessMonoArgs) %24WasmXHarnessMonoArgs $(_InvariantGlobalization) %24_InvariantGlobalization $(_AppArgs) %24WasmTestAppArgs diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index b9896f104b24cc..47fc849ed6ede4 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -544,6 +544,7 @@ + diff --git a/src/mono/wasi/build/WasiApp.Native.targets b/src/mono/wasi/build/WasiApp.Native.targets index 9fa1d9f0b9d1c3..282baf96aca6e6 100644 --- a/src/mono/wasi/build/WasiApp.Native.targets +++ b/src/mono/wasi/build/WasiApp.Native.targets @@ -169,7 +169,6 @@ <_WasmCommonCFlags Include="-DGEN_PINVOKE=1" /> - <_WasmCommonCFlags Include="-DINVARIANT_GLOBALIZATION=1" Condition="'$(InvariantGlobalization)' == 'true'"/> diff --git a/src/mono/wasi/runtime/driver.c b/src/mono/wasi/runtime/driver.c index 3230a171bcc74d..9c2b59060c9fd8 100644 --- a/src/mono/wasi/runtime/driver.c +++ b/src/mono/wasi/runtime/driver.c @@ -369,14 +369,9 @@ mono_wasm_load_runtime (const char *unused, int debug_level) { const char *interp_opts = ""; - char* invariant_globalization = monoeg_g_getenv ("INVARIANT_GLOBALIZATION"); - if (strcmp(invariant_globalization, "1") == 0) - monoeg_g_setenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT", "true", 1); - else { -#ifndef INVARIANT_GLOBALIZATION - load_icu_data(); -#endif - } + char* invariant_globalization = monoeg_g_getenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"); + if (strcmp(invariant_globalization, "true") != 0) + load_icu_data(); #ifdef DEBUG monoeg_g_setenv ("MONO_LOG_LEVEL", "debug", 0); From e727e8ed6bba7968ae6f4de91301745d81d04e9b Mon Sep 17 00:00:00 2001 From: Meri Khamoyan Date: Tue, 28 Feb 2023 09:44:11 +0100 Subject: [PATCH 3/3] Updated invariant_globalization value checking --- src/mono/wasi/runtime/driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/wasi/runtime/driver.c b/src/mono/wasi/runtime/driver.c index 9c2b59060c9fd8..b317de5024ae71 100644 --- a/src/mono/wasi/runtime/driver.c +++ b/src/mono/wasi/runtime/driver.c @@ -370,7 +370,7 @@ mono_wasm_load_runtime (const char *unused, int debug_level) const char *interp_opts = ""; char* invariant_globalization = monoeg_g_getenv ("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"); - if (strcmp(invariant_globalization, "true") != 0) + if (strcmp(invariant_globalization, "true") != 0 && strcmp(invariant_globalization, "1") != 0) load_icu_data(); #ifdef DEBUG