diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json index 926d654022362d..1f0da47dfc8b51 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json @@ -5697,6 +5697,14 @@ "any", "base" ], + "linux-riscv64": [ + "linux-riscv64", + "linux", + "unix-riscv64", + "unix", + "any", + "base" + ], "linux-musl": [ "linux-musl", "linux", @@ -10529,6 +10537,12 @@ "any", "base" ], + "unix-riscv64": [ + "unix-riscv64", + "unix", + "any", + "base" + ], "win": [ "win", "any", @@ -11159,4 +11173,4 @@ "any", "base" ] -} \ No newline at end of file +} diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json index eb865ee6422dee..7ebe3ffcc3362b 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json @@ -1994,6 +1994,12 @@ "unix-mips64" ] }, + "linux-riscv64": { + "#import": [ + "linux", + "unix-riscv64" + ] + }, "linux-musl": { "#import": [ "linux" @@ -4082,6 +4088,11 @@ "unix" ] }, + "unix-riscv64": { + "#import": [ + "unix" + ] + }, "win": { "#import": [ "any" @@ -4406,4 +4417,4 @@ ] } } -} \ No newline at end of file +} diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props index 08327c9c112c81..b265ad0d2c68aa 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props @@ -3,11 +3,11 @@ any - x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le + x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le;riscv64 unix - x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le + x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le;riscv64 linux diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index dab34b18c3bb41..2a8355cc8399c5 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -19,7 +19,7 @@ false $(MSBuildThisFileDirectory)ILLink\ true - true + true true diff --git a/src/native/external/libunwind.cmake b/src/native/external/libunwind.cmake index 2400d28e84b6e0..73815d821588e3 100644 --- a/src/native/external/libunwind.cmake +++ b/src/native/external/libunwind.cmake @@ -198,6 +198,7 @@ set(libunwind_la_SOURCES_riscv riscv/Lget_proc_info.c riscv/Linit.c riscv/Lis_signal_frame.c riscv/Lstep.c riscv/getcontext.S + riscv/setcontext.S riscv/Lget_save_loc.c riscv/Linit_local.c riscv/Lregs.c riscv/Lcreate_addr_space.c riscv/Lglobal.c riscv/Linit_remote.c riscv/Lresume.c diff --git a/src/native/external/libunwind/src/CMakeLists.txt b/src/native/external/libunwind/src/CMakeLists.txt index b63f5b3105e86d..2925b4d711ad72 100644 --- a/src/native/external/libunwind/src/CMakeLists.txt +++ b/src/native/external/libunwind/src/CMakeLists.txt @@ -326,6 +326,38 @@ SET(libunwind_loongarch64_la_SOURCES_loongarch loongarch64/Gis_signal_frame.c loongarch64/Gregs.c loongarch64/Gresume.c loongarch64/Gstep.c ) +# The list of files that go into libunwind and libunwind-riscv: +SET(libunwind_la_SOURCES_riscv_common + ${libunwind_la_SOURCES_common} + riscv/is_fpreg.c + riscv/regname.c +) + +# The list of files that go into libunwind: +SET(libunwind_la_SOURCES_riscv + ${libunwind_la_SOURCES_riscv_common} + ${libunwind_la_SOURCES_local} + riscv/setcontext.S + riscv/Lapply_reg_state.c riscv/Lreg_states_iterate.c + riscv/Lcreate_addr_space.c riscv/Lget_proc_info.c + riscv/Lget_save_loc.c riscv/Lglobal.c riscv/Linit.c + riscv/Linit_local.c riscv/Linit_remote.c + riscv/Lis_signal_frame.c riscv/Lregs.c riscv/Lresume.c + riscv/Lstep.c riscv/getcontext.S +) + +SET(libunwind_riscv_la_SOURCES_riscv + ${libunwind_la_SOURCES_riscv_common} + ${libunwind_la_SOURCES_generic} + riscv/Gapply_reg_state.c riscv/Greg_states_iterate.c + riscv/Gcreate_addr_space.c riscv/Gget_proc_info.c + riscv/Gget_save_loc.c riscv/Gglobal.c riscv/Ginit.c + riscv/Ginit_local.c riscv/Ginit_remote.c + riscv/Gis_signal_frame.c riscv/Gregs.c riscv/Gresume.c + riscv/Gstash_frame.c riscv/Gstep.c +) + + if(TARGET_AARCH64) SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_aarch64}) SET(libunwind_remote_la_SOURCES ${libunwind_aarch64_la_SOURCES_aarch64}) @@ -349,6 +381,11 @@ elseif(TARGET_LOONGARCH64) SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_loongarch64}) SET(libunwind_remote_la_SOURCES ${libunwind_loongarch64_la_SOURCES_loongarch}) SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES}) +elseif(TARGET_RISCV) + SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_riscv}) + SET(libunwind_remote_la_SOURCES ${libunwind_riscv_la_SOURCES_riscv}) + SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES}) + list(APPEND libunwind_setjmp_la_SOURCES riscv/siglongjmp.S) endif() add_library(libunwind diff --git a/src/tests/Directory.Build.props b/src/tests/Directory.Build.props index 437d976fa78b37..77f4f8f7191c9b 100644 --- a/src/tests/Directory.Build.props +++ b/src/tests/Directory.Build.props @@ -141,6 +141,7 @@ 64 64 64 + 64 diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128B.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128B.cpp index 97175c18a9ab32..30c97f7601c845 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128B.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128B.cpp @@ -10,7 +10,7 @@ #include typedef __m128i Vector128B; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128C.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128C.cpp index 146cfba6927ca8..3535f8117b3ea0 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128C.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128C.cpp @@ -10,7 +10,7 @@ #include typedef __m128i Vector128C; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128D.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128D.cpp index f3c7aa4b5f28a4..dec36ae8a02401 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128D.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128D.cpp @@ -10,7 +10,7 @@ #include typedef __m128d Vector128D; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128F.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128F.cpp index f5c4d237b77cc3..12319c75c2322e 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128F.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128F.cpp @@ -10,7 +10,7 @@ #include typedef __m128 Vector128F; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128L.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128L.cpp index 211249ccf86963..38267e3e533aa4 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128L.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128L.cpp @@ -10,7 +10,7 @@ #include typedef __m128i Vector128L; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128U.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128U.cpp index 08c6cfc4def3b1..31053317d38190 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128U.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128U.cpp @@ -10,7 +10,7 @@ #include typedef __m128i Vector128U; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256B.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256B.cpp index f51ea87767ea16..d07640115a37a7 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256B.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256B.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256C.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256C.cpp index a489455f429944..db38b9dbad3eaf 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256C.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256C.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256D.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256D.cpp index 46d0c7d2ac72a5..94cf5a5bbbc861 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256D.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256D.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256F.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256F.cpp index 3d62cd6ed1a87b..6ba7b6a4e98dd9 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256F.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256F.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256L.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256L.cpp index 797385db5fa34c..e9c39910d1c219 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256L.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256L.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256U.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256U.cpp index d433035d5487a7..c5b2b03a2c858c 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256U.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector256U.cpp @@ -8,7 +8,7 @@ #if defined(TARGET_XARCH) #include -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) // Intentionally empty #else #error Unsupported target architecture diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64B.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64B.cpp index 8563ba4e0224d8..25177acb95b1be 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64B.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64B.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64B; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64C.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64C.cpp index 8f597d3af46823..8e8728fc2695cd 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64C.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64C.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64C; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64D.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64D.cpp index 98b05198502758..86e37ef3acd6f2 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64D.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64D.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64D; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64F.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64F.cpp index f4b5aad32781fe..deac901aee8efe 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64F.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64F.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64F; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64L.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64L.cpp index 8401ce572245ff..28293f11a5435d 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64L.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64L.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64L; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64U.cpp b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64U.cpp index 8a0f79faf2b733..9ae5a233bd39cb 100644 --- a/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64U.cpp +++ b/src/tests/Interop/PInvoke/Generics/GenericsNative.Vector64U.cpp @@ -10,7 +10,7 @@ #include typedef __m64 Vector64U; -#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) +#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64) #if defined(_MSC_VER) #if defined(TARGET_ARM64) #include diff --git a/src/tests/Interop/StructMarshalling/PInvoke/MarshalStructAsParamDLL.h b/src/tests/Interop/StructMarshalling/PInvoke/MarshalStructAsParamDLL.h index 3f77f7ffac1e3b..c85b1e6f62dc05 100644 --- a/src/tests/Interop/StructMarshalling/PInvoke/MarshalStructAsParamDLL.h +++ b/src/tests/Interop/StructMarshalling/PInvoke/MarshalStructAsParamDLL.h @@ -197,7 +197,7 @@ struct OUTER3 static_assert_no_msg(sizeof(OUTER3) == 28); #endif #else // WINDOWS -#if defined(__x86_64__) || defined(__aarch64__) || defined(__loongarch64) +#if defined(__x86_64__) || defined(__aarch64__) || defined(__loongarch64) || defined(__riscv) union OUTER3 { struct InnerSequential arr[2]; diff --git a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i8_i.ilproj b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i8_i.ilproj index 8481e61c40a029..dfcd5e64ee66a9 100644 --- a/src/tests/JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i8_i.ilproj +++ b/src/tests/JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i8_i.ilproj @@ -5,6 +5,7 @@ true true true + true PdbOnly diff --git a/src/tests/run.sh b/src/tests/run.sh index 6b40dadd57854a..dd36929cfb84b6 100755 --- a/src/tests/run.sh +++ b/src/tests/run.sh @@ -95,6 +95,9 @@ do loongarch64) buildArch="loongarch64" ;; + riscv64) + buildArch="riscv64" + ;; wasm) buildArch="wasm" ;;