aboutsummaryrefslogtreecommitdiff
path: root/lang/mono6.8/files
diff options
context:
space:
mode:
authorMark Linimon <linimon@FreeBSD.org>2020-12-13 02:53:08 +0000
committerMark Linimon <linimon@FreeBSD.org>2020-12-13 02:53:08 +0000
commit6003ca35cfe137228541c3d68905cb06c5004e95 (patch)
tree8a9d390804729ebfac78c74bcd8fa08603c5ee24 /lang/mono6.8/files
parenta44563b060f6a9f0dc89c39227134e37db8cf105 (diff)
Notes
Diffstat (limited to 'lang/mono6.8/files')
-rw-r--r--lang/mono6.8/files/patch-boringssl138
-rw-r--r--lang/mono6.8/files/patch-configure.ac20
-rw-r--r--lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs11
-rw-r--r--lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs20
-rw-r--r--lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs11
-rw-r--r--lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets25
-rw-r--r--lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets25
-rw-r--r--lang/mono6.8/files/patch-mono_configure.ac478
-rw-r--r--lang/mono6.8/files/patch-mono_eglib_gfile-posix.c11
-rw-r--r--lang/mono6.8/files/patch-mono_metadata_Makefile.am11
-rw-r--r--lang/mono6.8/files/patch-mono_mini_tramp-amd64.c26
-rw-r--r--lang/mono6.8/files/patch-mono_native_Makefile.am15
-rw-r--r--lang/mono6.8/files/patch-mono_utils_mono-context.h42
-rw-r--r--lang/mono6.8/files/patch-mono_utils_mono-threads.c20
-rw-r--r--lang/mono6.8/files/patch-scripts_mono-heapviz11
15 files changed, 642 insertions, 222 deletions
diff --git a/lang/mono6.8/files/patch-boringssl b/lang/mono6.8/files/patch-boringssl
new file mode 100644
index 000000000000..f86b0a81fbb5
--- /dev/null
+++ b/lang/mono6.8/files/patch-boringssl
@@ -0,0 +1,138 @@
+diff --git a/CODE-OF-CONDUCT.md external/boringssl/CODE-OF-CONDUCT.md
+new file mode 100644
+index 00000000..775f221c
+--- /dev/null
++++ external/boringssl/CODE-OF-CONDUCT.md
+@@ -0,0 +1,6 @@
++# Code of Conduct
++
++This project has adopted the code of conduct defined by the Contributor Covenant
++to clarify expected behavior in our community.
++
++For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct).
+diff --git a/THIRD-PARTY-NOTICES.TXT external/boringssl/THIRD-PARTY-NOTICES.TXT
+new file mode 100644
+index 00000000..069ac8f2
+--- /dev/null
++++ external/boringssl/THIRD-PARTY-NOTICES.TXT
+@@ -0,0 +1,20 @@
++Mono uses third-party libraries or other resources that may be
++distributed under licenses different than the .NET Core software.
++
++ Attributions and license notices for test cases originally authored by
++third parties can be found in the respective test directories.
++
++ In the event that we accidentally failed to list a required notice, please
++bring it to our attention. Post an issue or email us:
++
++ dotnet@microsoft.com
++
++ The attached notices are provided for information only.
++
++ License notice for Code Project
++--------------------------------
++
++Title: Thread Local Storage - The C++ Way
++Content: https://www.codeproject.com/Articles/8113/Thread-Local-Storage-The-C-Way
++Reference: https://github.com/mono/boringssl/bloexternal/boringssl/eec2ca7e76c04ca41ef5bfc875ee3b0374cb7a94/crypto/thread_win.c#L138-L148
++License: https://www.codeproject.com/info/EULA.aspx
+diff --git a/crypto/aes/asm/aesv8-armx.pl external/boringssl/crypto/aes/asm/aesv8-armx.pl
+index 89e6f874..c41175a6 100644
+--- a/crypto/aes/asm/aesv8-armx.pl
++++ external/boringssl/crypto/aes/asm/aesv8-armx.pl
+@@ -51,15 +51,7 @@ $code=<<___;
+ .text
+ ___
+ $code.=<<___ if ($flavour =~ /64/);
+-#if !defined(__clang__)
+ .arch armv8-a+crypto
+-#elif defined(ANDROID) && defined(__clang__)
+-#if __clang_major__ > 3
+-.arch armv8-a+crypto
+-#else
+-.arch armv8-a+crypto,+neon
+-#endif
+-#endif
+ ___
+ $code.=".arch armv7-a\n.fpu neon\n.code 32\n" if ($flavour !~ /64/);
+ #^^^^^^ this is done to simplify adoption by not depending
+diff --git a/crypto/cpu-aarch64-linux.c external/boringssl/crypto/cpu-aarch64-linux.c
+index 1b0f3955..93d12237 100644
+--- a/crypto/cpu-aarch64-linux.c
++++ external/boringssl/crypto/cpu-aarch64-linux.c
+@@ -25,6 +25,48 @@
+
+ extern uint32_t OPENSSL_armcap_P;
+
++#if defined(__FreeBSD__)
++
++#include <stdlib.h>
++#include <sys/types.h>
++#include <machine/armreg.h>
++
++// Support for older version of armreg.h
++#ifndef ID_AA64ISAR0_AES_VAL
++#define ID_AA64ISAR0_AES_VAL ID_AA64ISAR0_AES
++#endif
++#ifndef ID_AA64ISAR0_SHA1_VAL
++#define ID_AA64ISAR0_SHA1_VAL ID_AA64ISAR0_SHA1
++#endif
++#ifndef ID_AA64ISAR0_SHA2_VAL
++#define ID_AA64ISAR0_SHA2_VAL ID_AA64ISAR0_SHA2
++#endif
++
++void OPENSSL_cpuid_setup(void) {
++ if (getenv("QEMU_EMULATING") != NULL) {
++ return;
++ }
++
++ uint64_t isar0_val = READ_SPECIALREG(id_aa64isar0_el1);
++
++ OPENSSL_armcap_P |= ARMV7_NEON;
++
++ if (ID_AA64ISAR0_AES_VAL(isar0_val) >= ID_AA64ISAR0_AES_BASE) {
++ OPENSSL_armcap_P |= ARMV8_PMULL;
++ }
++ if (ID_AA64ISAR0_AES_VAL(isar0_val) >= ID_AA64ISAR0_AES_PMULL) {
++ OPENSSL_armcap_P |= ARMV8_PMULL;
++ }
++ if (ID_AA64ISAR0_SHA1_VAL(isar0_val) >= ID_AA64ISAR0_SHA1_BASE) {
++ OPENSSL_armcap_P |= ARMV8_SHA1;
++ }
++ if (ID_AA64ISAR0_SHA2_VAL(isar0_val) >= ID_AA64ISAR0_SHA2_BASE) {
++ OPENSSL_armcap_P |= ARMV8_SHA256;
++ }
++}
++
++#else // linux
++
+ void OPENSSL_cpuid_setup(void) {
+ unsigned long hwcap = getauxval(AT_HWCAP);
+
+@@ -58,4 +100,6 @@ void OPENSSL_cpuid_setup(void) {
+ }
+ }
+
++#endif
++
+ #endif /* OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP */
+diff --git a/crypto/modes/asm/ghashv8-armx.pl external/boringssl/crypto/modes/asm/ghashv8-armx.pl
+index 73421405..eabef0cb 100644
+--- a/crypto/modes/asm/ghashv8-armx.pl
++++ external/boringssl/crypto/modes/asm/ghashv8-armx.pl
+@@ -59,15 +59,7 @@ $code=<<___;
+ .text
+ ___
+ $code.=<<___ if ($flavour =~ /64/);
+-#if !defined(__clang__)
+ .arch armv8-a+crypto
+-#elif defined(ANDROID) && defined(__clang__)
+-#if __clang_major__ > 3
+-.arch armv8-a+crypto
+-#else
+-.arch armv8-a+crypto,+neon
+-#endif
+-#endif
+ ___
+ $code.=".fpu neon\n.code 32\n" if ($flavour !~ /64/);
+
diff --git a/lang/mono6.8/files/patch-configure.ac b/lang/mono6.8/files/patch-configure.ac
deleted file mode 100644
index 280b4da2ddb1..000000000000
--- a/lang/mono6.8/files/patch-configure.ac
+++ /dev/null
@@ -1,20 +0,0 @@
---- configure.ac.orig 2018-04-18 10:51:42.000000000 +0300
-+++ configure.ac 2018-06-24 02:38:19.860780000 +0300
-@@ -3271,6 +3271,8 @@
- BTLS_PLATFORM=i386
- ;;
- openbsd*|freebsd*|kfreebsd-gnu*)
-+ BTLS_SUPPORTED=yes
-+ BTLS_PLATFORM=i386
- ;;
- esac
- ;;
-@@ -3295,6 +3297,8 @@
- boehm_supported=false
- ;;
- openbsd*|freebsd*|kfreebsd-gnu*)
-+ BTLS_SUPPORTED=yes
-+ BTLS_PLATFORM=x86_64
- ;;
- mingw*)
- ;;
diff --git a/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs b/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs
deleted file mode 100644
index 5af30b379a35..000000000000
--- a/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.Cryptography_KeyPairPersistence.cs
+++ /dev/null
@@ -1,11 +0,0 @@
---- mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs.orig 2017-07-20 18:10:59 UTC
-+++ mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs
-@@ -244,7 +244,7 @@ namespace Mono.Security.Cryptography {
- if ((_machinePath == null) || (!_machinePathExists)) {
- _machinePath = Path.Combine (
- Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-- ".mono");
-+ "mono");
- _machinePath = Path.Combine (_machinePath, "keypairs");
-
- _machinePathExists = Directory.Exists (_machinePath);
diff --git a/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs b/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs
deleted file mode 100644
index 9e1c62b7c5b4..000000000000
--- a/lang/mono6.8/files/patch-mcs_class_Mono.Security_Mono.Security.X509_X509StoreManager.cs
+++ /dev/null
@@ -1,20 +0,0 @@
---- mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs.orig 2017-07-20 18:10:59 UTC
-+++ mcs/class/Mono.Security/Mono.Security.X509/X509StoreManager.cs
-@@ -73,7 +73,7 @@ namespace Mono.Security.X509 {
- if (_localMachinePath == null) {
- _localMachinePath = Path.Combine (
- Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-- ".mono");
-+ "mono");
- _localMachinePath = Path.Combine (_localMachinePath, "certs");
- }
- return _localMachinePath;
-@@ -97,7 +97,7 @@ namespace Mono.Security.X509 {
- if (_newLocalMachinePath == null) {
- _newLocalMachinePath = Path.Combine (
- Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-- ".mono");
-+ "mono");
- _newLocalMachinePath = Path.Combine (_newLocalMachinePath, "new-certs");
- }
- return _newLocalMachinePath;
diff --git a/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs b/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs
deleted file mode 100644
index 906247de2820..000000000000
--- a/lang/mono6.8/files/patch-mcs_tools_mono-configuration-crypto_lib_Mono.Configuration.Crypto_KeyContainerCollection.cs
+++ /dev/null
@@ -1,11 +0,0 @@
---- mcs/tools/mono-configuration-crypto/lib/Mono.Configuration.Crypto/KeyContainerCollection.cs.orig 2017-07-20 18:10:59 UTC
-+++ mcs/tools/mono-configuration-crypto/lib/Mono.Configuration.Crypto/KeyContainerCollection.cs
-@@ -32,7 +32,7 @@ namespace Mono.Configuration.Crypto
- string topPath;
-
- if (machineStore)
-- topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), ".mono");
-+ topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData), "mono");
- else
- topPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), ".mono");
- topPath = Path.Combine (topPath, "keypairs");
diff --git a/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets b/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets
deleted file mode 100644
index a250c6e05315..000000000000
--- a/lang/mono6.8/files/patch-mcs_tools_xbuild_data_12.0_Microsoft.CSharp.targets
+++ /dev/null
@@ -1,25 +0,0 @@
---- mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets.orig 2017-07-20 18:10:59 UTC
-+++ mcs/tools/xbuild/data/12.0/Microsoft.CSharp.targets
-@@ -20,6 +20,11 @@
- <NoCompilerStandardLib Condition="'$(NoCompilerStandardLib)'==''">true</NoCompilerStandardLib>
- </PropertyGroup>
-
-+ <PropertyGroup >
-+ <SnToolExe>sn</SnToolExe>
-+ <SnToolPath>$(CscToolPath)</SnToolPath>
-+ </PropertyGroup>
-+
- <ItemGroup>
- <DocFileItem Include="$(DocumentationFile)" Condition="'$(DocumentationFile)' != ''"/>
- </ItemGroup>
-@@ -102,6 +107,10 @@
- ToolExe="$(CscToolExe)"
- ToolPath="$(CscToolPath)" />
-
-+ <Exec
-+ Command="$(SnToolPath)$(SnToolExe) -R @(IntermediateAssembly) $(KeyOriginatorFile)"
-+ Condition="'$(DelaySign)' == '' and '$(KeyContainerName)' == '' and '$(KeyOriginatorFile)' != '' and ( $(CscToolExe.EndsWith('csc.exe')) or $(CscToolExe.EndsWith('csc')) or $(CscToolExe) == '' )" />
-+
- </Target>
-
- <Target Name="CreateManifestResourceNames">
diff --git a/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets b/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets
deleted file mode 100644
index 16ae5edd0354..000000000000
--- a/lang/mono6.8/files/patch-mcs_tools_xbuild_data_14.0_Microsoft.CSharp.targets
+++ /dev/null
@@ -1,25 +0,0 @@
---- mcs/tools/xbuild/data/14.0/Microsoft.CSharp.targets.orig 2017-07-20 18:10:59 UTC
-+++ mcs/tools/xbuild/data/14.0/Microsoft.CSharp.targets
-@@ -20,6 +20,11 @@
- <NoCompilerStandardLib Condition="'$(NoCompilerStandardLib)'==''">true</NoCompilerStandardLib>
- </PropertyGroup>
-
-+ <PropertyGroup >
-+ <SnToolExe>sn</SnToolExe>
-+ <SnToolPath>$(CscToolPath)</SnToolPath>
-+ </PropertyGroup>
-+
- <ItemGroup>
- <DocFileItem Include="$(DocumentationFile)" Condition="'$(DocumentationFile)' != ''"/>
- </ItemGroup>
-@@ -102,6 +107,10 @@
- ToolExe="$(CscToolExe)"
- ToolPath="$(CscToolPath)" />
-
-+ <Exec
-+ Command="$(SnToolPath)$(SnToolExe) -R @(IntermediateAssembly) $(KeyOriginatorFile)"
-+ Condition="'$(DelaySign)' == '' and '$(KeyContainerName)' == '' and '$(KeyOriginatorFile)' != '' and ( $(CscToolExe.EndsWith('csc.exe')) or $(CscToolExe.EndsWith('csc')) or $(CscToolExe) == '' )" />
-+
- </Target>
-
- <Target Name="CreateManifestResourceNames">
diff --git a/lang/mono6.8/files/patch-mono_configure.ac b/lang/mono6.8/files/patch-mono_configure.ac
new file mode 100644
index 000000000000..a16f27f313d5
--- /dev/null
+++ b/lang/mono6.8/files/patch-mono_configure.ac
@@ -0,0 +1,478 @@
+# Upstreamed for next release
+# PR#19234
+# PR#18578
+--- configure.ac.orig 2020-03-15 16:11:23.394519000 -0400
++++ configure.ac 2020-03-16 14:50:08.458816000 -0400
+@@ -2299,108 +2299,100 @@
+ # We have the new, three-parameter version
+ AC_MSG_RESULT(no)
+ ])
+
+ dnl ******************************************************************
+ dnl *** Check for large file support ***
+ dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
+ dnl ******************************************************************
+
+ # Check that off_t can represent 2**63 - 1 correctly, working around
+ # potential compiler bugs. Defines LARGE_FILE_SUPPORT, adds $1 to
+ # CPPFLAGS and sets $large_offt to yes if the test succeeds
+ large_offt=no
+ AC_DEFUN([LARGE_FILES], [
+ large_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $1"
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <limits.h>
+ ], [
+ /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */
+ #define COMPILE_TIME_ASSERT(pred) \
+ switch(0){case 0:case pred:;}
+ COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64);
+ ], [
+ AC_MSG_RESULT(ok)
+ AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
+ large_CPPFLAGS="$large_CPPFLAGS $1"
+ large_offt=yes
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+ CPPFLAGS=$large_CPPFLAGS
+ ])
+
+ AC_MSG_CHECKING(if off_t is 64 bits wide)
+ LARGE_FILES("")
+ if test $large_offt = no; then
+ AC_MSG_CHECKING(if _FILE_OFFSET_BITS=64 gives 64 bit off_t)
+ LARGE_FILES("-D_FILE_OFFSET_BITS=64")
+ fi
+ if test $large_offt = no; then
+ AC_MSG_WARN([No 64 bit file size support available])
+ fi
+
+ dnl *****************************
+ dnl *** Checks for libsocket ***
+ dnl *****************************
+ AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
+
+- case "$host" in
+- *-*-*freebsd*)
+- dnl *****************************
+- dnl *** Checks for libinotify ***
+- dnl *****************************
+- AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify")
+- esac
+-
+ dnl *******************************
+ dnl *** Checks for MSG_NOSIGNAL ***
+ dnl *******************************
+ AC_MSG_CHECKING(for MSG_NOSIGNAL)
+ AC_TRY_COMPILE([#include <sys/socket.h>], [
+ int f = MSG_NOSIGNAL;
+ ], [
+ # Yes, we have it...
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_MSG_NOSIGNAL, 1, [Have MSG_NOSIGNAL])
+ ], [
+ # We'll have to use signals
+ AC_MSG_RESULT(no)
+ ])
+
+ dnl *****************************
+ dnl *** Checks for IPPROTO_IP ***
+ dnl *****************************
+ AC_MSG_CHECKING(for IPPROTO_IP)
+ AC_TRY_COMPILE([#include <netinet/in.h>], [
+ int level = IPPROTO_IP;
+ ], [
+ # Yes, we have it...
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP])
+ ], [
+ # We'll have to use getprotobyname
+ AC_MSG_RESULT(no)
+ ])
+
+ dnl *******************************
+ dnl *** Checks for IPPROTO_IPV6 ***
+ dnl *******************************
+ AC_MSG_CHECKING(for IPPROTO_IPV6)
+ AC_TRY_COMPILE([#include <netinet/in.h>], [
+ int level = IPPROTO_IPV6;
+ ], [
+ # Yes, we have it...
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6])
+ ], [
+ # We'll have to use getprotobyname
+ AC_MSG_RESULT(no)
+ ])
+
+ dnl ******************************
+ dnl *** Checks for IPPROTO_TCP ***
+ dnl ******************************
+ AC_MSG_CHECKING(for IPPROTO_TCP)
+ AC_TRY_COMPILE([#include <netinet/in.h>], [
+@@ -3572,100 +3564,131 @@
+ # HAVE_MACH_TIMEBASE_INFO check already done above
+ # HAVE_FUTIMES check already done above
+ # HAVE_FUTIMENS check already done above
+
+ ORIG_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror=sign-conversion"
+
+ AC_MSG_CHECKING(for bind with unsigned addrlen)
+ AC_TRY_LINK([
+ #include <sys/socket.h>
+ ], [
+ int fd;
+ struct sockaddr* addr;
+ socklen_t addrLen;
+ bind(fd, addr, addrLen);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(BIND_ADDRLEN_UNSIGNED, 1, [bind with unsigned addrlen])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+
+ AC_MSG_CHECKING(for struct ipv6_mreq with unsigned ipv6mr_interface)
+ AC_TRY_LINK([
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+ ], [
+ struct ipv6_mreq opt;
+ unsigned int index = 0;
+ opt.ipv6mr_interface = index;
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(IPV6MR_INTERFACE_UNSIGNED, 1, [struct ipv6_mreq with unsigned ipv6mr_interface])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+
+ AC_MSG_CHECKING(for inotify_rm_watch with unsigned wd)
+ AC_TRY_LINK([
+ #include <sys/inotify.h>
+ ], [
+ intptr_t fd;
+ uint32_t wd;
+ int result = inotify_rm_watch(fd, wd);
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(INOTIFY_RM_WATCH_WD_UNSIGNED, 1, [inotify_rm_watch with unsigned wd])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
++
++ case "$host" in
++ *-*-*freebsd*)
++ dnl *****************************
++ dnl *** Checks for libinotify ***
++ dnl *****************************
++ AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify")
++ AC_MSG_CHECKING(for METADATA_CFLAGS)
++ if test "x$ac_cv_lib_inotify_inotify_init" = "xyes" ; then
++ AC_DEFINE(HAVE_LIBINOTIFY, 1, [FreeBSD libinotify kqueue shim])
++ dnl Needs to be done this way to avoid collision with various
++ dnl ports includign glib and llvm*
++ METADATA_CFLAGS="-I/usr/local/include"
++ AC_SUBST(METADATA_CFLAGS)
++ fi
++ dnl Workaround due to inotify_rm_watch check failing without -I
++ AC_MSG_CHECKING(for inotify_rm_watch with unsigned wd in libinotify)
++ AC_TRY_LINK([
++ #include </usr/local/include/sys/inotify.h>
++ ], [
++ intptr_t fd;
++ uint32_t wd;
++ int result = inotify_rm_watch(fd, wd);
++ ],[
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(INOTIFY_RM_WATCH_WD_UNSIGNED, 1, [inotify_rm_watch with unsigned wd])
++ ], [
++ AC_MSG_RESULT(no)
++ ])
++ ;;
++ esac
+
+ CFLAGS="$ORIG_CFLAGS"
+
+ AC_MSG_CHECKING(for shm_open that works well enough with mmap)
+ if test "x$ac_cv_func_shm_open" = "xno" -o "x$ac_cv_func_shm_open_working_with_mmap" = "xno" ; then
+ AC_MSG_RESULT(no)
+ elif test "x$cross_compiling" = "xyes"; then
+ AC_MSG_RESULT(cross compiling, assuming yes)
+ AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap])
+ else
+ AC_TRY_RUN([
+ #include <sys/mman.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #ifdef __PASE__
+ /* IBM i doesn't implement this and returns SIGILL */
+ return -1;
+ #endif
+ int fd = shm_open("/mono_configure_shm_open", O_CREAT | O_RDWR, 0777);
+ if (fd == -1)
+ return -1;
+
+ shm_unlink("/mono_configure_shm_open");
+
+ // NOTE: PROT_EXEC and MAP_PRIVATE don't work well with shm_open
+ // on at least the current version of Mac OS X
+
+ if (mmap(NULL, 1, PROT_EXEC, MAP_PRIVATE, fd, 0) == MAP_FAILED)
+ return -1;
+
+ return 0;
+ }
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP, 1, [shm_open that works well enough with mmap])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+ fi
+
+ AC_MSG_CHECKING(for getpriority with int who)
+ AC_TRY_LINK([
+ #include <sys/resource.h>
+ ], [
+ int which;
+ int who;
+ int result = getpriority(which, who);
+@@ -4418,107 +4441,121 @@
+ BTLS_PLATFORM=x86_64
+ boehm_supported=false
+ ;;
+ openbsd*|freebsd*|kfreebsd-gnu*)
+ AOT_SUPPORTED="yes"
+ BTLS_SUPPORTED=yes
+ BTLS_PLATFORM=x86_64
+ ;;
+ mingw*|cygwin*)
+ BTLS_SUPPORTED=no
+ BTLS_PLATFORM=x86_64
+ ;;
+ esac
+ ;;
+ sparc*-*-*)
+ if test "x$ac_cv_sizeof_void_p" = "x8"; then
+ TARGET=SPARC64
+ else
+ TARGET=SPARC
+ fi
+ arch_target=sparc;
+ ACCESS_UNALIGNED="no"
+ case $host_os in
+ linux*) ;;
+ *)
+ LIBC="libc.so"
+ INTL="libintl.so"
+ esac
+ if test x"$GCC" = xyes; then
+ # We don't support v8 cpus
+ CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9"
+ fi
+ if test x"$AR" = xfalse; then
+ AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
+ fi
+ ;;
+ *-mingw*|*-*-cygwin*)
+ # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
+ have_visibility_hidden=no
+ INTL="intl"
+ case "$host" in
+ x86_64*mingw*)
+ # Old Boehm fails to compile for x86_64-mingw.
+ # It is trivial to fix, but just silently drop it.
+ boehm_supported=false
+ ;;
+ esac
+ ;;
+ macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
+ powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | \
+- powerpc-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* )
++ powerpc*-*-freebsd* | powerpc*-*-aix* | powerpc*-*-os400* )
+ if test "x$ac_cv_sizeof_void_p" = "x8"; then
+ TARGET=POWERPC64;
+ CPPFLAGS="$CPPFLAGS -D__mono_ppc__ -D__mono_ppc64__"
+- if ! (echo $CC | grep -q -- 'clang'); then
+- CFLAGS="$CFLAGS -mminimal-toc"
+- fi
++ AC_MSG_NOTICE([Checking for PowerPC ISA -mminimal-toc support])
++ AX_CHECK_COMPILE_FLAG(
++ [-mminimal-toc],
++ [CFLAGS="$CFLAGS -mminimal-toc"],
++ [CFLAGS="$CFLAGS"]
++ )
++ case "$host" in
++ powerpc*-*-freebsd*)
++ # We need to be aware if we are ELFv1 or v2 here
++ AC_MSG_NOTICE([Checking FreeBSD ELF version])
++ if ! ( echo | cc -dM -E - | awk '/_CALL_ELF/ {print $NF}'); then
++ AC_DEFINE([POWERPC_ELF], 1, [PowerPC ELFv1])
++ else
++ AC_DEFINE([POWERPC_ELFV2], 1, [PowerPC ELFv2])
++ fi
++ ;;
++ esac
+ else
+ TARGET=POWERPC;
+ CPPFLAGS="$CPPFLAGS -D__mono_ppc__"
+ fi
+ arch_target=ppc;
+ case $host_os in
+ aix*|os400*)
+ BTLS_SUPPORTED=yes
+ BTLS_PLATFORM=powerpc
+ ;;
+ linux*)
+ BTLS_SUPPORTED=yes
+ BTLS_PLATFORM=powerpc
+ ;;
+ esac
+ ;;
+ armv7k-*-darwin*)
+ TARGET=ARM;
+ TARGET_SYS=WATCHOS
+ arch_target=arm;
+ arm_fpu=VFP_HARD
+ ACCESS_UNALIGNED="no"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+ ;;
+
+ arm*-darwin*)
+ TARGET=ARM;
+ arch_target=arm;
+ ACCESS_UNALIGNED="no"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+ ;;
+ arm*-linux*)
+ TARGET=ARM;
+ arch_target=arm;
+ ACCESS_UNALIGNED="no"
+ AOT_SUPPORTED="yes"
+ CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+ BTLS_SUPPORTED=yes
+ BTLS_PLATFORM=arm
+ AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no])
+ case "$target" in
+ arm*-linux*-gnueabi)
+ BTLS_PLATFORM=armsoft
+ ;;
+ esac
+ ;;
+ arm*-netbsd*-eabi*)
+ TARGET=ARM;
+ arch_target=arm;
+ ACCESS_UNALIGNED="no"
+@@ -6441,103 +6478,103 @@
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+ MONO_NATIVE_CCASFLAGS=$CCASFLAGS
+ # The system.native code uses _WASM_ to check for wasm
+ MONO_NATIVE_CPPFLAGS="$CPPFLAGS -D_WASM_"
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+ MONO_NATIVE_CFLAGS=$CFLAGS
+ MONO_NATIVE_LDFLAGS=$LDFLAGS
+
+ mono_native=yes
+ mono_native_compat=no
+ MONO_NATIVE_PLATFORM=linux
+
+ MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_LINUX"
+ elif case $host_os in aix*|os400*) true;; *) false;; esac; then
+ mono_native_text="AIX"
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+ MONO_NATIVE_CCASFLAGS=$CCASFLAGS
+ MONO_NATIVE_CPPFLAGS=$CPPFLAGS
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+ MONO_NATIVE_CFLAGS=$CFLAGS
+ dnl nosymbolic- is a hack in case -G for linking is used, as -G seems
+ dnl to change the way unresolved symbols work on library load in an
+ dnl incompatible manner. (as references to runtime functions are
+ dnl resolved later) Default params otherwise are that, so seems OK.
+ dnl Likewise, we don't seem to need to cover the entire runtime with
+ dnl it either, on both AIX and PASE. -brtl from -G does seem to spew
+ dnl Big Scary TOC Warnings (tm) from the linker, but it doesn't seem
+ dnl problematic with gcc's -mminimal-toc.
+ dnl ----
+ dnl flock in AIX exists in libbsd (not the same as freedesktop.org
+ dnl libbsd) which Mono.Native needs.
+ dnl Because of the way that the library is built by default, unresolved
+ dnl references are kept and resolved at runtime. Often, the dependency
+ dnl chain means libbsd is loaded anyways, but not necessarily. It's
+ dnl better to explicitly link it, even though it has it shadows libc's
+ dnl ioctl with its own. (As for the other unresolved imports, those
+ dnl should be provided by the Mono runtime loaded.)
+ MONO_NATIVE_LDFLAGS="$LDFLAGS -lbsd -Wl,-bnosymbolic-"
+
+ mono_native=yes
+ mono_native_compat=no
+ MONO_NATIVE_PLATFORM=aix
+
+ MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_AIX"
+ elif case $host_os in freebsd*) true;; *) false;; esac; then
+ mono_native_text="FreeBSD"
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+- MONO_NATIVE_CPPFLAGS=$CPPFLAGS
++ MONO_NATIVE_CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+- MONO_NATIVE_CFLAGS=$CFLAGS
++ MONO_NATIVE_CFLAGS="$CFLAGS -I/usr/local/include"
+ MONO_NATIVE_LDFLAGS=$LDFLAGS
+
+ mono_native=yes
+ mono_native_compat=no
+ MONO_NATIVE_PLATFORM=freebsd
+ AC_MSG_CHECKING([Mono.Native support])
+ AC_MSG_RESULT(freebsd)
+
+ MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_FREEBSD"
+ elif case $host_os in netbsd*) true;; *) false;; esac; then
+ mono_native_text="NetBSD"
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+ MONO_NATIVE_CPPFLAGS=$CPPFLAGS
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+ MONO_NATIVE_CFLAGS=$CFLAGS
+ MONO_NATIVE_LDFLAGS=$LDFLAGS
+
+ mono_native=yes
+ mono_native_compat=no
+ MONO_NATIVE_PLATFORM=netbsd
+ AC_MSG_CHECKING([Mono.Native support])
+ AC_MSG_RESULT(netbsd)
+
+ MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_NETBSD"
+ elif case $host_os in haiku*) true;; *) false;; esac; then
+ mono_native_text="Haiku"
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+ MONO_NATIVE_CPPFLAGS=$CPPFLAGS
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+ MONO_NATIVE_CFLAGS=$CFLAGS
+ MONO_NATIVE_LDFLAGS=$LDFLAGS
+
+ mono_native=yes
+ mono_native_compat=no
+ MONO_NATIVE_PLATFORM=haiku
+ AC_MSG_CHECKING([Mono.Native support])
+ AC_MSG_RESULT(haiku)
+
+ MONO_NATIVE_PLATFORM_TYPE="MONO_NATIVE_PLATFORM_TYPE_HAIKU"
+ elif test x$platform_android = xyes; then
+ mono_native_text="Android"
+ MONO_NATIVE_CC=$CC
+ MONO_NATIVE_CXX=$CXX
+ MONO_NATIVE_CPPFLAGS=$CPPFLAGS
+ MONO_NATIVE_CXXFLAGS=$CXXFLAGS
+ MONO_NATIVE_CFLAGS=$CFLAGS
+ MONO_NATIVE_LDFLAGS=$LDFLAGS
+ MONO_NATIVE_LIBADD="../mini/$LIBMONO_LA"
diff --git a/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c b/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c
deleted file mode 100644
index 51b4c84fa1f4..000000000000
--- a/lang/mono6.8/files/patch-mono_eglib_gfile-posix.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- mono/eglib/gfile-posix.c.orig 2018-01-10 08:03:25 UTC
-+++ mono/eglib/gfile-posix.c
-@@ -161,7 +161,7 @@ g_get_current_dir (void)
- do {
- buffer = g_realloc (buffer, s);
- r = getcwd (buffer, s);
-- fail = (r == NULL && errno == ERANGE);
-+ fail = (r == NULL && (errno == ERANGE || errno == 0));
- if (fail) {
- s <<= 1;
- }
diff --git a/lang/mono6.8/files/patch-mono_metadata_Makefile.am b/lang/mono6.8/files/patch-mono_metadata_Makefile.am
new file mode 100644
index 000000000000..db1e509ba8d9
--- /dev/null
+++ b/lang/mono6.8/files/patch-mono_metadata_Makefile.am
@@ -0,0 +1,11 @@
+--- mono/metadata/Makefile.am.orig 2020-05-20 16:09:20.183060000 +0000
++++ mono/metadata/Makefile.am 2020-05-20 16:10:38.992083000 +0000
+@@ -143,7 +143,7 @@
+
+ lib_LTLIBRARIES = $(icall_table_libraries) $(ilgen_libraries)
+
+-AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) $(SHARED_CFLAGS)
++AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) $(SHARED_CFLAGS) $(METADATA_CFLAGS)
+
+ #
+ # Make sure any prefix changes are updated in the binaries too.
diff --git a/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c b/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c
deleted file mode 100644
index c09b13cf0fec..000000000000
--- a/lang/mono6.8/files/patch-mono_mini_tramp-amd64.c
+++ /dev/null
@@ -1,26 +0,0 @@
---- mono/mini/tramp-amd64.c.orig 2018-04-13 23:37:57 UTC
-+++ mono/mini/tramp-amd64.c
-@@ -363,7 +363,11 @@ mono_arch_create_generic_trampoline (Mon
- }
- for (i = 0; i < AMD64_XMM_NREG; ++i)
- if (AMD64_IS_ARGUMENT_XREG (i))
-+#if defined(MONO_HAVE_SIMD_REG)
- amd64_movdqu_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * sizeof(MonoContextSimdReg)), i);
-+#else
-+ amd64_movsd_membase_reg (code, AMD64_RBP, saved_fpregs_offset + (i * sizeof(double)), i);
-+#endif
-
- /* Check that the stack is aligned */
- amd64_mov_reg_reg (code, AMD64_R11, AMD64_RSP, sizeof (mgreg_t));
-@@ -540,7 +544,11 @@ mono_arch_create_generic_trampoline (Mon
- amd64_mov_reg_membase (code, i, AMD64_RBP, saved_regs_offset + (i * sizeof(mgreg_t)), sizeof(mgreg_t));
- for (i = 0; i < AMD64_XMM_NREG; ++i)
- if (AMD64_IS_ARGUMENT_XREG (i))
-+#if defined(MONO_HAVE_SIMD_REG)
- amd64_movdqu_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * sizeof(MonoContextSimdReg)));
-+#else
-+ amd64_movsd_reg_membase (code, i, AMD64_RBP, saved_fpregs_offset + (i * sizeof(double)));
-+#endif
-
- /* Restore stack */
- #if TARGET_WIN32
diff --git a/lang/mono6.8/files/patch-mono_native_Makefile.am b/lang/mono6.8/files/patch-mono_native_Makefile.am
new file mode 100644
index 000000000000..1d9b9264a409
--- /dev/null
+++ b/lang/mono6.8/files/patch-mono_native_Makefile.am
@@ -0,0 +1,15 @@
+# Upstreamed for next release
+# PR#19234
+--- mono/native/Makefile.am.orig 2020-03-16 13:42:24.386278000 -0400
++++ mono/native/Makefile.am 2020-03-16 13:42:43.715070000 -0400
+@@ -159,10 +159,11 @@
+ -I$(abs_top_srcdir)/external/corefx/src/Native/Unix/Common \
+ -I$(abs_top_srcdir)/external/corefx/src/Native/Unix/System.Native \
+ -I$(abs_top_srcdir)/external/corefx/src/Native/AnyOS/brotli/include \
+ $(GLIB_CFLAGS) \
+ $(SHARED_CFLAGS) \
++ $(METADATA_CFLAGS) \
+ -DBROTLI_BUILD_NO_RBIT \
+ -Wno-typedef-redefinition
+
+ endif # !ENABLE_MSVC_ONLY
diff --git a/lang/mono6.8/files/patch-mono_utils_mono-context.h b/lang/mono6.8/files/patch-mono_utils_mono-context.h
deleted file mode 100644
index e08b5ea2e9b7..000000000000
--- a/lang/mono6.8/files/patch-mono_utils_mono-context.h
+++ /dev/null
@@ -1,42 +0,0 @@
---- mono/utils/mono-context.h.orig 2018-04-13 23:37:57 UTC
-+++ mono/utils/mono-context.h
-@@ -24,23 +24,30 @@
-
- #if defined(TARGET_X86)
- #if defined(__APPLE__)
-+#define MONO_HAVE_SIMD_REG
- typedef struct __darwin_xmm_reg MonoContextSimdReg;
- #endif
- #elif defined(TARGET_AMD64)
- #if defined(__APPLE__)
-+#define MONO_HAVE_SIMD_REG
- typedef struct __darwin_xmm_reg MonoContextSimdReg;
- #elif defined(__linux__) && defined(__GLIBC__)
-+#define MONO_HAVE_SIMD_REG
- typedef struct _libc_xmmreg MonoContextSimdReg;
- #elif defined(HOST_WIN32)
-+#define MONO_HAVE_SIMD_REG
- #include <emmintrin.h>
- typedef __m128d MonoContextSimdReg;
- #elif defined(HOST_ANDROID)
-+#define MONO_HAVE_SIMD_REG
- typedef struct _libc_xmmreg MonoContextSimdReg;
- #elif defined(__linux__)
-+#define MONO_HAVE_SIMD_REG
- #include <emmintrin.h>
- typedef __m128d MonoContextSimdReg;
- #endif
- #elif defined(TARGET_ARM64)
-+#define MONO_HAVE_SIMD_REG
- typedef __uint128_t MonoContextSimdReg;
- #endif
-
-@@ -255,7 +262,7 @@ typedef struct {
-
- typedef struct {
- mgreg_t gregs [AMD64_NREG];
--#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__)) || defined(HOST_WIN32)
-+#if defined(MONO_HAVE_SIMD_REG)
- MonoContextSimdReg fregs [AMD64_XMM_NREG];
- #else
- double fregs [AMD64_XMM_NREG];
diff --git a/lang/mono6.8/files/patch-mono_utils_mono-threads.c b/lang/mono6.8/files/patch-mono_utils_mono-threads.c
deleted file mode 100644
index 31b798b128e2..000000000000
--- a/lang/mono6.8/files/patch-mono_utils_mono-threads.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- mono/utils/mono-threads.c.orig 2018-04-13 23:37:57 UTC
-+++ mono/utils/mono-threads.c
-@@ -1316,7 +1316,7 @@ mono_thread_info_sleep (guint32 ms, gboo
- } while (1);
- } else {
- int ret;
--#if defined (__linux__) && !defined(HOST_ANDROID)
-+#if defined (HAVE_CLOCK_NANOSLEEP) && !defined(HOST_ANDROID)
- struct timespec start, target;
-
- /* Use clock_nanosleep () to prevent time drifting problems when nanosleep () is interrupted by signals */
-@@ -1346,7 +1346,7 @@ mono_thread_info_sleep (guint32 ms, gboo
- memset (&rem, 0, sizeof (rem));
- ret = nanosleep (&req, &rem);
- } while (ret != 0);
--#endif /* __linux__ */
-+#endif /* HAVE_CLOCK_NANOSLEEP */
- }
-
- MONO_EXIT_GC_SAFE;
diff --git a/lang/mono6.8/files/patch-scripts_mono-heapviz b/lang/mono6.8/files/patch-scripts_mono-heapviz
deleted file mode 100644
index fc44982f44f8..000000000000
--- a/lang/mono6.8/files/patch-scripts_mono-heapviz
+++ /dev/null
@@ -1,11 +0,0 @@
---- scripts/mono-heapviz.orig 2018-01-18 17:41:54 UTC
-+++ scripts/mono-heapviz
-@@ -7,7 +7,7 @@
-
- from __future__ import print_function
- import sys, os
--import Image, ImageDraw
-+from PIL import Image, ImageDraw
- from xml.sax import ContentHandler, make_parser
- from xml.sax.handler import feature_namespaces
- from optparse import OptionParser