From b2d90fd63b0a8b840cf8f87540e8a0fc90255b31 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Wed, 29 Jun 2022 15:56:41 +0200 Subject: [PATCH 01/20] changes to compile runtime under FreeBSD ARM64 host --- eng/common/cross/toolchain.cmake | 30 +++--- eng/native/configureplatform.cmake | 8 +- src/coreclr/inc/crosscomp.h | 2 + src/coreclr/pal/inc/pal.h | 2 + src/coreclr/pal/src/configure.cmake | 8 +- src/coreclr/pal/src/exception/seh-unwind.cpp | 36 +++++++ src/coreclr/pal/src/include/pal/context.h | 93 ++++++++++++++++++- src/coreclr/pal/src/thread/context.cpp | 22 +++++ .../src/runtime.compatibility.json | 30 ++++++ .../src/runtime.json | 18 ++++ .../src/runtimeGroups.props | 2 +- 11 files changed, 236 insertions(+), 15 deletions(-) diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index eaeeab38fa1f32..d5dfc13504b1f5 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -48,11 +48,13 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") set(CMAKE_SYSTEM_PROCESSOR aarch64) if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl) set(TOOLCHAIN "aarch64-alpine-linux-musl") - else() + elseif(LINUX) set(TOOLCHAIN "aarch64-linux-gnu") - endif() - if(TIZEN) - set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") + if(TIZEN) + set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") + endif() + elseif(FREEBSD) + set(triple "aarch64-unknown-freebsd12") endif() elseif(TARGET_ARCH_NAME STREQUAL "ppc64le") set(CMAKE_SYSTEM_PROCESSOR ppc64le) @@ -66,12 +68,18 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") if(TIZEN) set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") endif() -elseif (FREEBSD) - set(CMAKE_SYSTEM_PROCESSOR "x86_64") - set(triple "x86_64-unknown-freebsd12") -elseif (ILLUMOS) - set(CMAKE_SYSTEM_PROCESSOR "x86_64") - set(TOOLCHAIN "x86_64-illumos") +elseif(TARGET_ARCH_NAME STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64) + if(LINUX) + set(TOOLCHAIN "x86_64-linux-gnu") + if(TIZEN) + set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0") + endif() + elseif(FREEBSD) + set(triple "x86_64-unknown-freebsd12") + elseif(ILLUMOS) + set(TOOLCHAIN "x86_64-illumos") + endif() else() message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, armv6, arm64, ppc64le, s390x and x86 are supported!") endif() @@ -218,7 +226,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|armv6|armel|arm64|ppc64le|s390x)$" AND NOT ANDROID) OR ILLUMOS) +if((TARGET_ARCH_NAME MATCHES "^(arm|armv6|armel|arm64|ppc64le|s390x)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake index d21206f1f8bcad..f81702211b1eb5 100644 --- a/eng/native/configureplatform.cmake +++ b/eng/native/configureplatform.cmake @@ -160,7 +160,13 @@ endif(CLR_CMAKE_HOST_OS STREQUAL Android) if(CLR_CMAKE_HOST_OS STREQUAL FreeBSD) set(CLR_CMAKE_HOST_UNIX 1) - set(CLR_CMAKE_HOST_UNIX_AMD64 1) + if (CMAKE_SYSTEM_PROCESSOR STREQUAL amd64) + set(CLR_CMAKE_HOST_UNIX_AMD64 1) + elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) + set(CLR_CMAKE_HOST_UNIX_ARM64 1) + else() + message(FATAL_ERROR "Unknown FreeBSD processor architecture") + endif() set(CLR_CMAKE_HOST_FREEBSD 1) endif(CLR_CMAKE_HOST_OS STREQUAL FreeBSD) diff --git a/src/coreclr/inc/crosscomp.h b/src/coreclr/inc/crosscomp.h index 9a78c69a3423e0..3262391c8569dd 100644 --- a/src/coreclr/inc/crosscomp.h +++ b/src/coreclr/inc/crosscomp.h @@ -551,6 +551,8 @@ typedef struct _T_KNONVOLATILE_CONTEXT_POINTERS { #define DAC_CS_NATIVE_DATA_SIZE 12 #elif defined(TARGET_FREEBSD) && defined(TARGET_AMD64) #define DAC_CS_NATIVE_DATA_SIZE 24 +#elif defined(TARGET_FREEBSD) && defined(TARGET_ARM64) +#define DAC_CS_NATIVE_DATA_SIZE 24 #elif defined(TARGET_LINUX) && defined(TARGET_ARM) #define DAC_CS_NATIVE_DATA_SIZE 80 #elif defined(TARGET_LINUX) && defined(TARGET_ARM64) diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h index dd7e99c665b100..444b4768727401 100644 --- a/src/coreclr/pal/inc/pal.h +++ b/src/coreclr/pal/inc/pal.h @@ -2677,6 +2677,8 @@ PALIMPORT BOOL PALAPI PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_ #define PAL_CS_NATIVE_DATA_SIZE 12 #elif defined(__FreeBSD__) && defined(__x86_64__) #define PAL_CS_NATIVE_DATA_SIZE 24 +#elif defined(__FreeBSD__) && defined(HOST_ARM64) +#define PAL_CS_NATIVE_DATA_SIZE 24 #elif defined(__linux__) && defined(HOST_ARM) #define PAL_CS_NATIVE_DATA_SIZE 80 #elif defined(__linux__) && defined(HOST_ARM64) diff --git a/src/coreclr/pal/src/configure.cmake b/src/coreclr/pal/src/configure.cmake index 4f900a5555ef63..84d1a9015d9c1f 100644 --- a/src/coreclr/pal/src/configure.cmake +++ b/src/coreclr/pal/src/configure.cmake @@ -1340,7 +1340,13 @@ elseif(CLR_CMAKE_TARGET_FREEBSD) set(PAL_PT_READ_D PT_READ_D) set(PAL_PT_WRITE_D PT_WRITE_D) set(HAS_FTRUNCATE_LENGTH_ISSUE 0) - set(BSD_REGS_STYLE "((reg).r_##rr)") + if (CLR_CMAKE_HOST_ARCH_AMD64) + set(BSD_REGS_STYLE "((reg).r_##rr)") + elseif(CLR_CMAKE_HOST_ARCH_ARM64) + set(BSD_REGS_STYLE "((reg).rr)") + else() + message(FATAL_ERROR "Unknown FreeBSD architecture") + endif() set(HAVE_SCHED_OTHER_ASSIGNABLE 1) elseif(CLR_CMAKE_TARGET_NETBSD) set(DEADLOCK_WHEN_THREAD_IS_SUSPENDED_WHILE_BLOCKED_ON_MUTEX 0) diff --git a/src/coreclr/pal/src/exception/seh-unwind.cpp b/src/coreclr/pal/src/exception/seh-unwind.cpp index 9fe6c61d0f8286..343c1ae1048e91 100644 --- a/src/coreclr/pal/src/exception/seh-unwind.cpp +++ b/src/coreclr/pal/src/exception/seh-unwind.cpp @@ -173,6 +173,42 @@ enum ASSIGN_REG(R29) \ ASSIGN_REG(R30) \ ASSIGN_REG(R31) +#elif (defined(HOST_ARM64) && defined(TARGET_FREEBSD)) +#define ASSIGN_UNWIND_REGS \ + ASSIGN_REG(X0) \ + ASSIGN_REG(X1) \ + ASSIGN_REG(X2) \ + ASSIGN_REG(X3) \ + ASSIGN_REG(X4) \ + ASSIGN_REG(X5) \ + ASSIGN_REG(X6) \ + ASSIGN_REG(X7) \ + ASSIGN_REG(X8) \ + ASSIGN_REG(X9) \ + ASSIGN_REG(X10) \ + ASSIGN_REG(X11) \ + ASSIGN_REG(X12) \ + ASSIGN_REG(X13) \ + ASSIGN_REG(X14) \ + ASSIGN_REG(X15) \ + ASSIGN_REG(X16) \ + ASSIGN_REG(X17) \ + ASSIGN_REG(X18) \ + ASSIGN_REG(X19) \ + ASSIGN_REG(X20) \ + ASSIGN_REG(X21) \ + ASSIGN_REG(X22) \ + ASSIGN_REG(X23) \ + ASSIGN_REG(X24) \ + ASSIGN_REG(X25) \ + ASSIGN_REG(X26) \ + ASSIGN_REG(X27) \ + ASSIGN_REG(X28) \ + ASSIGN_REG(Lr) \ + ASSIGN_REG(Sp) \ + ASSIGN_REG(Pc) \ + ASSIGN_REG(Fp) \ + ASSIGN_REG(Cpsr) #else #error unsupported architecture #endif diff --git a/src/coreclr/pal/src/include/pal/context.h b/src/coreclr/pal/src/include/pal/context.h index fec5139fd5e405..4d0eaff5d3cfc5 100644 --- a/src/coreclr/pal/src/include/pal/context.h +++ b/src/coreclr/pal/src/include/pal/context.h @@ -407,7 +407,57 @@ inline void *FPREG_Xstate_Ymmh(const ucontext_t *uc) #if defined(HOST_ARM64) -#ifndef TARGET_OSX +#if defined(TARGET_FREEBSD) + +#define MCREG_X0(mc) (mc.mc_gpregs.gp_x[0]) +#define MCREG_X1(mc) (mc.mc_gpregs.gp_x[1]) +#define MCREG_X2(mc) (mc.mc_gpregs.gp_x[2]) +#define MCREG_X3(mc) (mc.mc_gpregs.gp_x[3]) +#define MCREG_X4(mc) (mc.mc_gpregs.gp_x[4]) +#define MCREG_X5(mc) (mc.mc_gpregs.gp_x[5]) +#define MCREG_X6(mc) (mc.mc_gpregs.gp_x[6]) +#define MCREG_X7(mc) (mc.mc_gpregs.gp_x[7]) +#define MCREG_X8(mc) (mc.mc_gpregs.gp_x[8]) +#define MCREG_X9(mc) (mc.mc_gpregs.gp_x[9]) +#define MCREG_X10(mc) (mc.mc_gpregs.gp_x[10]) +#define MCREG_X11(mc) (mc.mc_gpregs.gp_x[11]) +#define MCREG_X12(mc) (mc.mc_gpregs.gp_x[12]) +#define MCREG_X13(mc) (mc.mc_gpregs.gp_x[13]) +#define MCREG_X14(mc) (mc.mc_gpregs.gp_x[14]) +#define MCREG_X15(mc) (mc.mc_gpregs.gp_x[15]) +#define MCREG_X16(mc) (mc.mc_gpregs.gp_x[16]) +#define MCREG_X17(mc) (mc.mc_gpregs.gp_x[17]) +#define MCREG_X18(mc) (mc.mc_gpregs.gp_x[18]) +#define MCREG_X19(mc) (mc.mc_gpregs.gp_x[19]) +#define MCREG_X20(mc) (mc.mc_gpregs.gp_x[20]) +#define MCREG_X21(mc) (mc.mc_gpregs.gp_x[21]) +#define MCREG_X22(mc) (mc.mc_gpregs.gp_x[22]) +#define MCREG_X23(mc) (mc.mc_gpregs.gp_x[23]) +#define MCREG_X24(mc) (mc.mc_gpregs.gp_x[24]) +#define MCREG_X25(mc) (mc.mc_gpregs.gp_x[25]) +#define MCREG_X26(mc) (mc.mc_gpregs.gp_x[26]) +#define MCREG_X27(mc) (mc.mc_gpregs.gp_x[27]) +#define MCREG_X28(mc) (mc.mc_gpregs.gp_x[28]) + +#define MCREG_Cpsr(mc) (mc.mc_fpregs.fp_sr) +#define MCREG_Lr(mc) (mc.mc_gpregs.gp_lr) +#define MCREG_Sp(mc) (mc.mc_gpregs.gp_sp) +#define MCREG_Pc(mc) (mc.mc_gpregs.gp_elr) +#define MCREG_Fp(mc) (mc.mc_gpregs.gp_x[29]) + +inline +struct fpregs* GetNativeSigSimdContext(native_context_t *mc) +{ + return &(mc->uc_mcontext.mc_fpregs); +} + +inline +const struct fpregs* GetConstNativeSigSimdContext(const native_context_t *mc) +{ + return GetNativeSigSimdContext(const_cast(mc)); +} + +#elif !defined(TARGET_OSX) // TARGET_FREEBSD #define MCREG_X0(mc) ((mc).regs[0]) #define MCREG_X1(mc) ((mc).regs[1]) @@ -912,6 +962,8 @@ const VfpSigFrame* GetConstNativeSigSimdContext(const native_context_t *mc) #ifdef HOST_64BIT +#ifdef HOST_AMD64 + #define BSDREG_Rbx(reg) BSD_REGS_STYLE(reg,RBX,rbx) #define BSDREG_Rcx(reg) BSD_REGS_STYLE(reg,RCX,rcx) #define BSDREG_Rdx(reg) BSD_REGS_STYLE(reg,RDX,rdx) @@ -933,6 +985,45 @@ const VfpSigFrame* GetConstNativeSigSimdContext(const native_context_t *mc) #define BSDREG_R15(reg) BSD_REGS_STYLE(reg,R15,r15) #define BSDREG_EFlags(reg) BSD_REGS_STYLE(reg,RFLAGS,rflags) +#elif defined(HOST_ARM64) + +#define BSDREG_X0(reg) BSD_REGS_STYLE(reg,X[0],x[0]) +#define BSDREG_X1(reg) BSD_REGS_STYLE(reg,X[1],x[1]) +#define BSDREG_X2(reg) BSD_REGS_STYLE(reg,X[2],x[2]) +#define BSDREG_X3(reg) BSD_REGS_STYLE(reg,X[3],x[3]) +#define BSDREG_X4(reg) BSD_REGS_STYLE(reg,X[4],x[4]) +#define BSDREG_X5(reg) BSD_REGS_STYLE(reg,X[5],x[5]) +#define BSDREG_X6(reg) BSD_REGS_STYLE(reg,X[6],x[6]) +#define BSDREG_X7(reg) BSD_REGS_STYLE(reg,X[7],x[7]) +#define BSDREG_X8(reg) BSD_REGS_STYLE(reg,X[8],x[8]) +#define BSDREG_X9(reg) BSD_REGS_STYLE(reg,X[9],x[9]) +#define BSDREG_X10(reg) BSD_REGS_STYLE(reg,X[10],x[10]) +#define BSDREG_X11(reg) BSD_REGS_STYLE(reg,X[11],x[11]) +#define BSDREG_X12(reg) BSD_REGS_STYLE(reg,X[12],x[12]) +#define BSDREG_X13(reg) BSD_REGS_STYLE(reg,X[13],x[13]) +#define BSDREG_X14(reg) BSD_REGS_STYLE(reg,X[14],x[14]) +#define BSDREG_X15(reg) BSD_REGS_STYLE(reg,X[15],x[15]) +#define BSDREG_X16(reg) BSD_REGS_STYLE(reg,X[16],x[16]) +#define BSDREG_X17(reg) BSD_REGS_STYLE(reg,X[17],x[17]) +#define BSDREG_X18(reg) BSD_REGS_STYLE(reg,X[18],x[18]) +#define BSDREG_X19(reg) BSD_REGS_STYLE(reg,X[19],x[19]) +#define BSDREG_X20(reg) BSD_REGS_STYLE(reg,X[20],x[20]) +#define BSDREG_X21(reg) BSD_REGS_STYLE(reg,X[21],x[21]) +#define BSDREG_X22(reg) BSD_REGS_STYLE(reg,X[22],x[22]) +#define BSDREG_X23(reg) BSD_REGS_STYLE(reg,X[23],x[23]) +#define BSDREG_X24(reg) BSD_REGS_STYLE(reg,X[24],x[24]) +#define BSDREG_X25(reg) BSD_REGS_STYLE(reg,X[25],x[25]) +#define BSDREG_X26(reg) BSD_REGS_STYLE(reg,X[26],x[26]) +#define BSDREG_X27(reg) BSD_REGS_STYLE(reg,X[27],x[27]) +#define BSDREG_X28(reg) BSD_REGS_STYLE(reg,X[28],x[28]) +#define BSDREG_Pc(reg) BSD_REGS_STYLE(reg,Elr,elr) +#define BSDREG_Fp(reg) BSD_REGS_STYLE(reg,X[29],x[29]) +#define BSDREG_Sp(reg) BSD_REGS_STYLE(reg,Sp,sp) +#define BSDREG_Lr(reg) BSD_REGS_STYLE(reg,Lr,lr) +#define BSDREG_Cpsr(reg) BSD_REGS_STYLE(reg,Spsr,spsr) + +#endif // HOST_AMD64 + #else // HOST_64BIT #define BSDREG_Ebx(reg) BSD_REGS_STYLE(reg,EBX,ebx) diff --git a/src/coreclr/pal/src/thread/context.cpp b/src/coreclr/pal/src/thread/context.cpp index 184116239ca736..549c8497745556 100644 --- a/src/coreclr/pal/src/thread/context.cpp +++ b/src/coreclr/pal/src/thread/context.cpp @@ -596,6 +596,17 @@ void CONTEXTToNativeContext(CONST CONTEXT *lpContext, native_context_t *native) { *(NEON128*) &fp->__v[i] = lpContext->V[i]; } +#elif defined(TARGET_FREEBSD) + struct fpregs* fp = GetNativeSigSimdContext(native); + if (fp) + { + fp->fp_sr = lpContext->Fpsr; + fp->fp_cr = lpContext->Fpcr; + for (int i = 0; i < 32; i++) + { + *(NEON128*) &fp->fp_q[i] = lpContext->V[i]; + } + } #else // TARGET_OSX fpsimd_context* fp = GetNativeSigSimdContext(native); if (fp) @@ -740,6 +751,17 @@ void CONTEXTFromNativeContext(const native_context_t *native, LPCONTEXT lpContex { lpContext->V[i] = *(NEON128*) &fp->__v[i]; } +#elif defined(TARGET_FREEBSD) + const struct fpregs* fp = GetConstNativeSigSimdContext(native); + if (fp) + { + lpContext->Fpsr = fp->fp_sr; + lpContext->Fpcr = fp->fp_cr; + for (int i = 0; i < 32; i++) + { + lpContext->V[i] = *(NEON128*) &fp->fp_q[i]; + } + } #else // TARGET_OSX const fpsimd_context* fp = GetConstNativeSigSimdContext(native); if (fp) diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json index 15c8c0a74777fd..b2f53649fc7a88 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json @@ -3468,6 +3468,14 @@ "any", "base" ], + "freebsd-arm64": [ + "freebsd-arm64", + "freebsd", + "unix-arm64", + "unix", + "any", + "base" + ], "freebsd.12": [ "freebsd.12", "freebsd", @@ -3485,6 +3493,16 @@ "any", "base" ], + "freebsd.12-arm64": [ + "freebsd.12-arm64", + "freebsd.12", + "freebsd-arm64", + "freebsd", + "unix-arm64", + "unix", + "any", + "base" + ], "freebsd.13": [ "freebsd.13", "freebsd.12", @@ -3505,6 +3523,18 @@ "any", "base" ], + "freebsd.13-arm64": [ + "freebsd.13-arm64", + "freebsd.13", + "freebsd.12-arm64", + "freebsd.12", + "freebsd-arm64", + "freebsd", + "unix-arm64", + "unix", + "any", + "base" + ], "gentoo": [ "gentoo", "linux", diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json index 050ce1e4e8ce36..105e8f41e52ddd 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtime.json @@ -1226,6 +1226,12 @@ "unix-x64" ] }, + "freebsd-arm64": { + "#import": [ + "freebsd", + "unix-arm64" + ] + }, "freebsd.12": { "#import": [ "freebsd" @@ -1237,6 +1243,12 @@ "freebsd-x64" ] }, + "freebsd.12-arm64": { + "#import": [ + "freebsd.12", + "freebsd-arm64" + ] + }, "freebsd.13": { "#import": [ "freebsd.12" @@ -1248,6 +1260,12 @@ "freebsd.12-x64" ] }, + "freebsd.13-arm64": { + "#import": [ + "freebsd.13", + "freebsd.12-arm64" + ] + }, "gentoo": { "#import": [ "linux" diff --git a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props index 1b10a2604af28a..db6580cab7b923 100644 --- a/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props +++ b/src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props @@ -178,7 +178,7 @@ unix - x64 + x64;arm64 12;13 From f333fd0fb6439ed644b5392ac4d4e348d3a4b4aa Mon Sep 17 00:00:00 2001 From: Szczepan Date: Wed, 29 Jun 2022 15:14:07 +0000 Subject: [PATCH 02/20] TOOLSET_PREFIX for FreeBSD host set to llvm during crossbuild --- eng/native/configuretools.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eng/native/configuretools.cmake b/eng/native/configuretools.cmake index 6697524c6596ae..b44bcc3417c5c5 100644 --- a/eng/native/configuretools.cmake +++ b/eng/native/configuretools.cmake @@ -54,7 +54,11 @@ if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_BROWSER) set(TOOLSET_PREFIX ${ANDROID_TOOLCHAIN_PREFIX}) elseif(CMAKE_CROSSCOMPILING AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv8l|armv7l|armv6l|aarch64|arm|s390x|ppc64le)$") - set(TOOLSET_PREFIX "${TOOLCHAIN}-") + if(FREEBSD) + set(TOOLSET_PREFIX "llvm-") + else() + set(TOOLSET_PREFIX "${TOOLCHAIN}-") + endif() else() set(TOOLSET_PREFIX "") endif() From a4b266dbf1302f5b1facdaf403ec8a53ce3e1611 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Wed, 29 Jun 2022 15:29:16 +0000 Subject: [PATCH 03/20] Detect FreeBSD amd64 or aarch64 message --- eng/native/configurecompiler.cmake | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake index 047999bded88ff..bc5642554ec95b 100644 --- a/eng/native/configurecompiler.cmake +++ b/eng/native/configurecompiler.cmake @@ -280,7 +280,13 @@ if (CLR_CMAKE_HOST_UNIX) clr_unknown_arch() endif() elseif(CLR_CMAKE_HOST_FREEBSD) - message("Detected FreeBSD amd64") + if(CLR_CMAKE_HOST_UNIX_ARM64) + message("Detected FreeBSD aarch64") + elseif(CLR_CMAKE_HOST_UNIX_AMD64) + message("Detected FreeBSD amd64") + else() + message(FATAL_ERROR "Unsupported FreeBSD architecture") + endif() elseif(CLR_CMAKE_HOST_NETBSD) message("Detected NetBSD amd64") elseif(CLR_CMAKE_HOST_SUNOS) From 1a6d28850f973de8a0713e785996f656389b27f8 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 12:59:54 +0200 Subject: [PATCH 04/20] Fix gen-dactable-rva.sh padding zeros --- src/coreclr/pal/tools/gen-dactable-rva.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/coreclr/pal/tools/gen-dactable-rva.sh b/src/coreclr/pal/tools/gen-dactable-rva.sh index 0f3ce0a0866a7e..6d213699ac01cb 100755 --- a/src/coreclr/pal/tools/gen-dactable-rva.sh +++ b/src/coreclr/pal/tools/gen-dactable-rva.sh @@ -15,10 +15,12 @@ while read -r line; do # * longer than 16, capture last 16 characters. # array=($line) - value="$(printf "%016s\n" ${array[2]:(${#array[2]} > 16 ? -16 : 0)})" + value="$(printf "%s\n" ${array[2]:(${#array[2]} > 16 ? -16 : 0)})" + zeros="0000000000000000" + pvalue="$(printf "%s%s" "${zeros:${#value}}" "$value")" # Write line to file and exit - printf "#define DAC_TABLE_RVA 0x%s\n" "$value" > "$2" + printf "#define DAC_TABLE_RVA 0x%s\n" "$pvalue" > "$2" break fi done < <(${NM:-nm} $__DynamicSymbolsOption -P -t x $1) From 3f2e848e2a2289109fc12587e6cf850454772414 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 13:11:56 +0200 Subject: [PATCH 05/20] cross build options for FreeBSD arm64 for mono --- src/mono/mono.proj | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index 7cd03731fcd232..6d2590e4cefce5 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -279,6 +279,13 @@ <_MonoBuildEnv Include="TARGET_BUILD_ARCH=x64" /> + + + <_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" /> + <_MonoBuildEnv Include="TARGET_BUILD_ARCH=arm64" /> + <_MonoBuildEnv Include="PKG_CONFIG_PATH=$(MonoCrossDir)usr/local/libdata/pkgconfig" /> + + <_MonoCPPFLAGS Include="-DWIN32" /> From 60ab856cfa085c2d245ddad8dfea4998161c5a57 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 15:08:54 +0200 Subject: [PATCH 06/20] Revert eng/native/configuretools.cmake --- eng/native/configuretools.cmake | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/eng/native/configuretools.cmake b/eng/native/configuretools.cmake index 9a3357655f44a9..d593f16fd7b2dd 100644 --- a/eng/native/configuretools.cmake +++ b/eng/native/configuretools.cmake @@ -56,11 +56,7 @@ if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_BROWSER) set(TOOLSET_PREFIX ${ANDROID_TOOLCHAIN_PREFIX}) elseif(CMAKE_CROSSCOMPILING AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv8l|armv7l|armv6l|aarch64|arm|s390x|ppc64le)$") - if(FREEBSD) - set(TOOLSET_PREFIX "llvm-") - else() - set(TOOLSET_PREFIX "${TOOLCHAIN}-") - endif() + set(TOOLSET_PREFIX "${TOOLCHAIN}-") endif() endif() From c0c5deabd48dbd412d5d9522f7d33d6b4d4f859e Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 15:57:57 +0200 Subject: [PATCH 07/20] Try to better detect host arch under FreeBSD --- eng/native/configureplatform.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake index f81702211b1eb5..15f70d48d2488f 100644 --- a/eng/native/configureplatform.cmake +++ b/eng/native/configureplatform.cmake @@ -160,12 +160,12 @@ endif(CLR_CMAKE_HOST_OS STREQUAL Android) if(CLR_CMAKE_HOST_OS STREQUAL FreeBSD) set(CLR_CMAKE_HOST_UNIX 1) - if (CMAKE_SYSTEM_PROCESSOR STREQUAL amd64) + if (CMAKE_SYSTEM_PROCESSOR STREQUAL amd64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64) set(CLR_CMAKE_HOST_UNIX_AMD64 1) - elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) + elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL arm64) set(CLR_CMAKE_HOST_UNIX_ARM64 1) else() - message(FATAL_ERROR "Unknown FreeBSD processor architecture") + clr_unknown_arch() endif() set(CLR_CMAKE_HOST_FREEBSD 1) endif(CLR_CMAKE_HOST_OS STREQUAL FreeBSD) From 001bb3dc40b8b09ef1aecd5bd1fec77205bb520f Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 16:33:54 +0200 Subject: [PATCH 08/20] Indent --- src/coreclr/pal/src/include/pal/context.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/coreclr/pal/src/include/pal/context.h b/src/coreclr/pal/src/include/pal/context.h index 4d0eaff5d3cfc5..0e565bdcf45958 100644 --- a/src/coreclr/pal/src/include/pal/context.h +++ b/src/coreclr/pal/src/include/pal/context.h @@ -448,13 +448,13 @@ inline void *FPREG_Xstate_Ymmh(const ucontext_t *uc) inline struct fpregs* GetNativeSigSimdContext(native_context_t *mc) { - return &(mc->uc_mcontext.mc_fpregs); + return &(mc->uc_mcontext.mc_fpregs); } inline const struct fpregs* GetConstNativeSigSimdContext(const native_context_t *mc) { - return GetNativeSigSimdContext(const_cast(mc)); + return GetNativeSigSimdContext(const_cast(mc)); } #elif !defined(TARGET_OSX) // TARGET_FREEBSD From 5b623a27fd8f377750c95f73dc1117eea3b92bad Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 16:48:35 +0200 Subject: [PATCH 09/20] Don't pad DAC_TABLE_RVA --- src/coreclr/pal/tools/gen-dactable-rva.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/coreclr/pal/tools/gen-dactable-rva.sh b/src/coreclr/pal/tools/gen-dactable-rva.sh index 6d213699ac01cb..e5cc4086a4dd4f 100755 --- a/src/coreclr/pal/tools/gen-dactable-rva.sh +++ b/src/coreclr/pal/tools/gen-dactable-rva.sh @@ -16,11 +16,9 @@ while read -r line; do # array=($line) value="$(printf "%s\n" ${array[2]:(${#array[2]} > 16 ? -16 : 0)})" - zeros="0000000000000000" - pvalue="$(printf "%s%s" "${zeros:${#value}}" "$value")" # Write line to file and exit - printf "#define DAC_TABLE_RVA 0x%s\n" "$pvalue" > "$2" + printf "#define DAC_TABLE_RVA 0x%s\n" "$value" > "$2" break fi done < <(${NM:-nm} $__DynamicSymbolsOption -P -t x $1) From 54d0412e7a09b1bf425c305eb37a5acab9ee9062 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 17:06:56 +0200 Subject: [PATCH 10/20] Comment update --- src/coreclr/pal/tools/gen-dactable-rva.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/coreclr/pal/tools/gen-dactable-rva.sh b/src/coreclr/pal/tools/gen-dactable-rva.sh index e5cc4086a4dd4f..4f2828b2f400a7 100755 --- a/src/coreclr/pal/tools/gen-dactable-rva.sh +++ b/src/coreclr/pal/tools/gen-dactable-rva.sh @@ -10,9 +10,8 @@ fi while read -r line; do if [[ "$line" =~ g_dacTable ]]; then - # Parse line for DAC relative address, if length of value is: - # * shorter than 16, zero pad. - # * longer than 16, capture last 16 characters. + # Parse line for DAC relative address. If length of value is longer than 16, + # capture the last 16 characters. # array=($line) value="$(printf "%s\n" ${array[2]:(${#array[2]} > 16 ? -16 : 0)})" From 9c8775d1178d0c950e045106b0b58614cef81164 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 21:50:50 +0200 Subject: [PATCH 11/20] Add freebsd-arm64 RIDs, enable CG2 package generation for FreeBSD builds --- src/coreclr/tools/aot/crossgen2/crossgen2.csproj | 2 +- src/installer/pkg/projects/netcoreappRIDs.props | 2 +- .../Microsoft.NETCore.App.Crossgen2.sfxproj | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/coreclr/tools/aot/crossgen2/crossgen2.csproj b/src/coreclr/tools/aot/crossgen2/crossgen2.csproj index 42f192a3f123fd..eddd7d806c5599 100644 --- a/src/coreclr/tools/aot/crossgen2/crossgen2.csproj +++ b/src/coreclr/tools/aot/crossgen2/crossgen2.csproj @@ -9,7 +9,7 @@ false true - linux-x64;linux-musl-x64;linux-arm;linux-musl-arm;linux-arm64;linux-musl-arm64;freebsd-x64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64;win-arm + linux-x64;linux-musl-x64;linux-arm;linux-musl-arm;linux-arm64;linux-musl-arm64;freebsd-x64;freebsd-arm64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64;win-arm $(PackageRID) false true diff --git a/src/installer/pkg/projects/netcoreappRIDs.props b/src/installer/pkg/projects/netcoreappRIDs.props index 318e97e9b2ac9d..fbc6e4dc4c1a98 100644 --- a/src/installer/pkg/projects/netcoreappRIDs.props +++ b/src/installer/pkg/projects/netcoreappRIDs.props @@ -10,7 +10,6 @@ arm64 - @@ -53,6 +52,7 @@ built during official builds, however we wish to include them in our runtime.json to enable others to provide them. --> + armel diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj index 2e0ef08ec34692..f8c61e9e90dc2a 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Crossgen2.sfxproj @@ -3,8 +3,8 @@ - - true + + true ToolPack $(SharedFrameworkName).Crossgen2 .PGO @@ -12,7 +12,7 @@ dotnet-crossgen2 crossgen2 - linux-x64;linux-musl-x64;linux-arm;linux-musl-arm;linux-arm64;linux-musl-arm64;freebsd-x64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64;win-arm + linux-x64;linux-musl-x64;linux-arm;linux-musl-arm;linux-arm64;linux-musl-arm64;freebsd-x64;freebsd-arm64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64;win-arm false tools/ true From edf36ffb4f69c6c294eeecf3914fc291577d12d6 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 30 Jun 2022 21:57:01 +0200 Subject: [PATCH 12/20] Extra condition for mono build --- src/mono/mono.proj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index 6d2590e4cefce5..325ea41153f206 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj @@ -274,7 +274,7 @@ - + <_MonoCMakeArgs Include="-DCMAKE_TOOLCHAIN_FILE=$(CrossToolchainFile)" /> <_MonoBuildEnv Include="TARGET_BUILD_ARCH=x64" /> From 951c92afc499fddb19846bfd108bad5f3a086ae8 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Tue, 5 Jul 2022 10:15:15 +0000 Subject: [PATCH 13/20] Added targetos to crossgen2 command during build --- src/coreclr/crossgen-corelib.proj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/coreclr/crossgen-corelib.proj b/src/coreclr/crossgen-corelib.proj index 804e8c0c21fe76..02ff1c2594a0ee 100644 --- a/src/coreclr/crossgen-corelib.proj +++ b/src/coreclr/crossgen-corelib.proj @@ -84,6 +84,7 @@ $(CrossGenDllCmd) -o:$(CoreLibOutputPath) $(CrossGenDllCmd) -r:$([MSBuild]::NormalizePath('$(BinDir)', 'IL', '*.dll')) $(CrossGenDllCmd) --targetarch:$(TargetArchitecture) + $(CrossGenDllCmd) --targetos:$(TargetOS) $(CrossGenDllCmd) -m:$(MergedMibcPath) --embed-pgo-data $(CrossGenDllCmd) -O $(CrossGenDllCmd) --verify-type-and-field-layout From 98d39cd008c6160eb2feec60fad712d7b24661c1 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Tue, 5 Jul 2022 11:01:35 +0000 Subject: [PATCH 14/20] Add targetos along with targetarch for crossgen2 commands --- .../nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets | 1 + src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets | 1 + src/tests/Common/CLRTest.CrossGen.targets | 2 ++ src/tests/readytorun/multifolder/multifolder.csproj | 2 ++ 4 files changed, 6 insertions(+) diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets index ea054c7e8d2c89..67506a45292f83 100644 --- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets +++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.targets @@ -210,6 +210,7 @@ The .NET Foundation licenses this file to you under the MIT license. + diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets b/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets index 4e3f684dedc20a..0175f7d4c6d603 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets @@ -6,6 +6,7 @@ + diff --git a/src/tests/Common/CLRTest.CrossGen.targets b/src/tests/Common/CLRTest.CrossGen.targets index 30102cca1544b6..dd65cde5721a12 100644 --- a/src/tests/Common/CLRTest.CrossGen.targets +++ b/src/tests/Common/CLRTest.CrossGen.targets @@ -102,6 +102,7 @@ if [ ! -z ${RunCrossGen2+x} ]%3B then echo -r:$CORE_ROOT/mscorlib.dll>>$__ResponseFile echo --verify-type-and-field-layout>>$__ResponseFile echo --targetarch:$(TargetArchitecture)>>$__ResponseFile + echo --targetos:$(TargetOS)>>$__ResponseFile echo -O>>$__ResponseFile echo "Response file: $__ResponseFile" @@ -227,6 +228,7 @@ if defined RunCrossGen2 ( echo !__InputFile!>>!__ResponseFile! echo -o:!__OutputFile!>>!__ResponseFile! echo --targetarch:$(TargetArchitecture)>>!__ResponseFile! + echo --targetos:$(TargetOS)>>!__ResponseFile! echo --verify-type-and-field-layout>>!__ResponseFile! echo --method-layout:random>>!__ResponseFile! echo -r:!CORE_ROOT!\System.*.dll>>!__ResponseFile! diff --git a/src/tests/readytorun/multifolder/multifolder.csproj b/src/tests/readytorun/multifolder/multifolder.csproj index 99c6f0ff9f12c9..f6852a94c98521 100644 --- a/src/tests/readytorun/multifolder/multifolder.csproj +++ b/src/tests/readytorun/multifolder/multifolder.csproj @@ -35,6 +35,7 @@ $(CLRTestBatchPreCommands) echo -o:%scriptPath%\multifolder-composite.dll>>%__ResponseFile% echo --crp:%scriptPath%\..>>%__ResponseFile% echo --targetarch:$(TargetArchitecture)>>%__ResponseFile% + echo --targetos:$(TargetOS)>>%__ResponseFile% echo %scriptPath%\multifolder.dll>>%__ResponseFile% echo %scriptPath%\..\FolderA\FolderA\FolderA.dll>>%__ResponseFile% echo %scriptPath%\..\FolderB\FolderB\FolderB.dll>>%__ResponseFile% @@ -85,6 +86,7 @@ $(BashCLRTestPreCommands) echo -o:$__OutputDir/multifolder-composite.dll>>$__ResponseFile echo --crp:$__OutputDir/..>>$__ResponseFile echo --targetarch:$(TargetArchitecture)>>$__ResponseFile + echo --targetos:$(TargetOS)>>$__ResponseFile echo $__OutputDir/multifolder.dll>>$__ResponseFile echo $__OutputDir/../FolderA/FolderA/FolderA.dll>>$__ResponseFile echo $__OutputDir/../FolderB/FolderB/FolderB.dll>>$__ResponseFile From 69a5c150787569160f69060741c55fa70d48337a Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 7 Jul 2022 13:50:41 +0000 Subject: [PATCH 15/20] Typo fixed in comment --- src/coreclr/pal/src/include/pal/context.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/pal/src/include/pal/context.h b/src/coreclr/pal/src/include/pal/context.h index 0e565bdcf45958..923054abd6503f 100644 --- a/src/coreclr/pal/src/include/pal/context.h +++ b/src/coreclr/pal/src/include/pal/context.h @@ -1022,7 +1022,7 @@ const VfpSigFrame* GetConstNativeSigSimdContext(const native_context_t *mc) #define BSDREG_Lr(reg) BSD_REGS_STYLE(reg,Lr,lr) #define BSDREG_Cpsr(reg) BSD_REGS_STYLE(reg,Spsr,spsr) -#endif // HOST_AMD64 +#endif // HOST_ARM64 #else // HOST_64BIT From ed3368c7dc27a73df9d16db9298fcd201c335a2f Mon Sep 17 00:00:00 2001 From: Szczepan Date: Thu, 7 Jul 2022 14:44:52 +0000 Subject: [PATCH 16/20] Set Cpsr to gp_spsr for FreeBSD/aarch64 (still crashing exception unwind) --- src/coreclr/pal/src/include/pal/context.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/coreclr/pal/src/include/pal/context.h b/src/coreclr/pal/src/include/pal/context.h index 923054abd6503f..e4a93e95773601 100644 --- a/src/coreclr/pal/src/include/pal/context.h +++ b/src/coreclr/pal/src/include/pal/context.h @@ -439,11 +439,11 @@ inline void *FPREG_Xstate_Ymmh(const ucontext_t *uc) #define MCREG_X27(mc) (mc.mc_gpregs.gp_x[27]) #define MCREG_X28(mc) (mc.mc_gpregs.gp_x[28]) -#define MCREG_Cpsr(mc) (mc.mc_fpregs.fp_sr) -#define MCREG_Lr(mc) (mc.mc_gpregs.gp_lr) -#define MCREG_Sp(mc) (mc.mc_gpregs.gp_sp) -#define MCREG_Pc(mc) (mc.mc_gpregs.gp_elr) -#define MCREG_Fp(mc) (mc.mc_gpregs.gp_x[29]) +#define MCREG_Cpsr(mc) (mc.mc_gpregs.gp_spsr) +#define MCREG_Lr(mc) (mc.mc_gpregs.gp_lr) +#define MCREG_Sp(mc) (mc.mc_gpregs.gp_sp) +#define MCREG_Pc(mc) (mc.mc_gpregs.gp_elr) +#define MCREG_Fp(mc) (mc.mc_gpregs.gp_x[29]) inline struct fpregs* GetNativeSigSimdContext(native_context_t *mc) From 4aef1fbd96973c8550b5bc7ce1a83ba857b56732 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Sun, 14 Aug 2022 12:05:42 +0000 Subject: [PATCH 17/20] Fix mono configure/build CPU_COUNT for FreeBSD --- src/mono/cmake/configure.cmake | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/mono/cmake/configure.cmake b/src/mono/cmake/configure.cmake index 51cb315d6dcfbc..be9376063652e9 100644 --- a/src/mono/cmake/configure.cmake +++ b/src/mono/cmake/configure.cmake @@ -151,16 +151,29 @@ check_c_source_compiles( " HAVE_GNU_STRERROR_R) -check_c_source_compiles( - " - #include - int main(void) - { - CPU_COUNT((void *) 0); - return 0; - } - " - HAVE_GNU_CPU_COUNT) +if (HOST_FREEBSD) + check_c_source_compiles( + " + #include + int main(void) + { + CPU_COUNT((cpuset_t *) 0); + return 0; + } + " + HAVE_GNU_CPU_COUNT) +else() + check_c_source_compiles( + " + #include + int main(void) + { + CPU_COUNT((void *) 0); + return 0; + } + " + HAVE_GNU_CPU_COUNT) +endif() if (HOST_LINUX OR HOST_ANDROID) set(CMAKE_REQUIRED_DEFINITIONS) From 82139dad0e875543877490b69623da0e11b80bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szczepan=20=C4=86wikli=C5=84ski?= Date: Mon, 5 Dec 2022 16:06:38 +0100 Subject: [PATCH 18/20] Use check_symbol_exists for HAVE_GNU_CPU_COUNT check --- src/mono/cmake/configure.cmake | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/src/mono/cmake/configure.cmake b/src/mono/cmake/configure.cmake index 0451bad309f9db..56c99cb9d7eb0d 100644 --- a/src/mono/cmake/configure.cmake +++ b/src/mono/cmake/configure.cmake @@ -143,6 +143,8 @@ if (HOST_LINUX) set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) endif() +check_symbol_exists(CPU_COUNT "sched.h" HAVE_GNU_CPU_COUNT) + check_c_source_compiles( " #include @@ -155,30 +157,6 @@ check_c_source_compiles( " HAVE_GNU_STRERROR_R) -if (HOST_FREEBSD) - check_c_source_compiles( - " - #include - int main(void) - { - CPU_COUNT((cpuset_t *) 0); - return 0; - } - " - HAVE_GNU_CPU_COUNT) -else() - check_c_source_compiles( - " - #include - int main(void) - { - CPU_COUNT((void *) 0); - return 0; - } - " - HAVE_GNU_CPU_COUNT) -endif() - if (HOST_LINUX OR HOST_ANDROID) set(CMAKE_REQUIRED_DEFINITIONS) endif() From 14a6f04fb142eed8f0dd055b6494be9fabc4f4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szczepan=20=C4=86wikli=C5=84ski?= Date: Wed, 21 Dec 2022 21:07:56 +0100 Subject: [PATCH 19/20] fix cross compile error --- src/coreclr/tools/Common/CommandLineHelpers.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/tools/Common/CommandLineHelpers.cs b/src/coreclr/tools/Common/CommandLineHelpers.cs index 03b20597bb39c4..0dd98b220c2524 100644 --- a/src/coreclr/tools/Common/CommandLineHelpers.cs +++ b/src/coreclr/tools/Common/CommandLineHelpers.cs @@ -76,6 +76,8 @@ public static TargetOS GetTargetOS(string token) return TargetOS.Linux; else if (token.Equals("osx", StringComparison.OrdinalIgnoreCase)) return TargetOS.OSX; + else if (token.Equals("freebsd", StringComparison.OrdinalIgnoreCase)) + return TargetOS.FreeBSD; throw new CommandLineException($"Target OS '{token}' is not supported"); } From e499941c38cb0be9c1e4f6be8b215134d022d673 Mon Sep 17 00:00:00 2001 From: Szczepan Date: Sat, 7 Jan 2023 13:08:29 +0100 Subject: [PATCH 20/20] Fix build error with targetos --- src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets b/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets index 0175f7d4c6d603..d29f12364fe24e 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/ReadyToRun.targets @@ -5,8 +5,7 @@ - - +