Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-01-08[Coop] Remove handles from Mono.Interop.ComInteropProxy. (#16993)Jay Krell
2020-01-07Set thread pool thread name just based on string pointer check. (#16637)Jay Krell
* Set thread pool thread name just based on string pointer check. When the generation-based solution went in, there were not yet constant thread names, so a pointer based approach could fail due to reuse. We can do slightly simpler now. * Remove the generation field which is no longer needed. Remove the duplicated knowledge of how to set a constant and put it behind a funny sounding but perhaps reasonable flag. Revise corlib version.
2020-01-06Don't run `make install` in boehm submodule (#17907)Jo Shields
Don't run `make install` in boehm submodule
2019-12-16Fix locating Python interpreter when it isn't "python" (#18197)Calvin Buckley
Fix locating Python interpreter when it isn't "python" The "python" interpreter is specified by PEP-394. In it, an OS can decide not to ship a "python" executable, and instead only ship python2/3, providing some ambiguity for scripts that are version-neutral, like the one Mono uses. This uses an automake macro to locate a suitable Python, and changes the makefile to use the located Python, whatever it may be.
2019-12-13Bump msbuild to track xplat-master (#18183)Ankit Jain
- bump roslyn to 3.5.0-beta1-19606-04, to match msbuild - bump nuget.exe to 5.5.0.6319 (5.5.0-preview1), to match msbuild
2019-12-11Make Socket.Socket_icall static, as most icalls are, removing the first, ↵Jay Krell
unused parameter. (#18130) Also partial undo recent and append _icall to end. This is verbose, but maybe worthwhile to aid search. This is extracted from https://github.com/mono/mono/pull/17978.
2019-12-11Sockets: Foo_internal to Foo_icall and ves_icall_Foo_internal to ↵Jay Krell
ves_icall_Foo. (#18017) The first is to avoid requiring the signature matching in icall resolution. The second is just to shorten names.
2019-12-10[utils] Make mono_dl_open default to RTLD_LOCAL on netcore (#17912)Ryan Lucia
* [utils] Make mono_dl_open default to RTLD_LOCAL The exception is for fallback handlers added via the embedding API, in which case we convert the flags over to preserve legacy behavior * Convert flags properly for embedding API use * Changes * Turn off -fvisibility=hidden temporarily TESTING * Undo some previous crimes, maybe fix failure * Leave legacy mono unchanged, defaulting to RTLD_GLOBAL
2019-12-06Bump msbuild to track xplat-master (#18050)Ankit Jain
.. to get changes from https://github.com/mono/msbuild/pull/162 . And bump roslyn to 3.4.0-beta4-19569-03 to match msbuild.
2019-12-04Remove mk/ folder (#18039)Alexander Köplinger
The plan to put additional helpers into this directory didn't materialize and we can just inline the one thing we have in common.mk where needed.
2019-12-04[android] don't probe directories for .config files (#18024)Jonathan Peppers
* [android] don't probe directories for .config files In Xamarin.Android, on startup we see logging like this for every .NET assembly: 12-03 14:27:42.104 26842 26842 D Mono : Prepared to set up assembly 'FormsViewGroup' (/storage/emulated/0/Android/data/Xamarin.Forms_Performance_Integration/files/.__override__/FormsViewGroup.dll) 12-03 14:27:42.104 26842 26842 D Mono : Assembly FormsViewGroup[0xebcee9c0] added to domain RootDomain, ref_count=1 12-03 14:27:42.104 26842 26842 D Mono : Assembly Loader loaded assembly from location: '/storage/emulated/0/Android/data/Xamarin.Forms_Performance_Integration/files/.__override__/FormsViewGroup.dll'. 12-03 14:27:42.104 26842 26842 D Mono : Config attempting to parse: '/storage/emulated/0/Android/data/Xamarin.Forms_Performance_Integration/files/.__override__/FormsViewGroup.dll.config'. 12-03 14:27:42.104 26842 26842 D Mono : Config attempting to parse: '/Users/builder/jenkins/workspace/archive-mono/2019-10/android/release/sdks/out/android-x86-release/etc/mono/assemblies/FormsViewGroup/FormsViewGroup.config'. In most cases, no `.dll.config` file exists and so it probes this macOS-looking path: /Users/builder/jenkins/workspace/archive-mono/2019-10/android/release/sdks/out/android-x86-release/etc/mono/assemblies/FormsViewGroup/FormsViewGroup.config It looks like this is happening because nothing in Xamarin.Android calls `mono_set_dirs` or `mono_set_config_dir` and so it falls back to using `MONO_CFG_DIR`. `MONO_CFG_DIR` is set to a path on the build machine. Even if Xamarin.Android *did* call `mono_set_config_dir`, the code appends `mono/assemblies`: cfg = g_build_filename (cfg_dir, "mono", "assemblies", aname, cfg_name, (const char*)NULL); So it doesn't seem useful to use this fallback at all, there would never be a file found. I wrapped the appropriate code in `#ifndef TARGET_ANDROID` blocks. I was able to see a minor *maybe* ~20ms performance improvement on startup: Before: 12-03 14:27:48.494 26903 26903 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:601::443900 12-03 14:27:54.356 26963 26963 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:587::495400 12-03 14:28:00.263 27021 27021 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:586::147100 12-03 14:28:06.135 27074 27074 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:593::639100 12-03 14:28:11.988 27129 27129 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:571::194900 After: 12-03 14:46:50.590 27737 27737 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:503::918700 12-03 14:46:56.517 27794 27794 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:570::533600 12-03 14:47:02.368 27850 27850 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:537::435000 12-03 14:47:08.289 27904 27904 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:587::830900 12-03 14:47:14.130 27965 27965 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:555::593400 This was the Xamarin.Forms integration project in xamarin-android. Running a `Debug` build on a HAXM x86 emulator on Windows. https://github.com/xamarin/xamarin-android/tree/master/tests/Xamarin.Forms-Performance-Integration * Add --enable-minimal=cfgdir_config * This also defines `DISABLE_CFGDIR_CONFIG` * Used this setting for android
2019-12-04[configure.ac] Build on FreeBSD/PowerPC64 (#18015)Aleksey Kliger (λgeek)
Community contribution from https://github.com/mono/mono/issues/18009 from @igorzigorz
2019-12-02Bump version to 6.11 (#17990)Jo Shields
2019-11-28Remove handles/MonoError from Mono.RuntimeMarshal and Mono.SafeStringMarshal.Jay Krell
2019-11-25[configure.ac] Don't run compiler server check in netcore mode (#17911)Alexander Köplinger
We don't need it there.
2019-11-25Allow runtime to be built with C++ on AIX (#17672)Calvin Buckley
* Allow runtime to be built with C++ on AIX Many AIX/PPC/BE specific codepaths didn't do casting properly, since C++ is much stricter than C about pointer typing. Also specify the C99 format macros early as possible, since inttypes may get included before eglib gets a chance to set the macros. Also explicitly use -pthread, since not using it is the cause of many libstdc++ crashes on AIX. * Oops, should have been that define instead * Suggested changes from Jay on style * Remove unneeded cast
2019-11-23Make configure.ac and Makefile.am work without certain directories (#17871)Alexander Köplinger
Those folders won't be present in the dotnet/runtime repository. We need to factor out AC_OUTPUT into a separate file so we can continue to share configure.ac but not the list of files in AC_OUTPUT since autotools doesn't support variables there.
2019-11-22[runtime] Treat calling a non-virtual method through an open delegate the ↵Zoltan Varga
same as the normal case instead of the OPEN_VIRTUAL case. (#17832) * [runtime] Treat calling a non-virtual method through an open delegate the same as the normal case instead of the OPEN_VIRTUAL case. * [amd64] Fix the return value mapping in gsharedvt calls, the return address might be in different registers in the caller and callee. * [runtime] Always initialize del->method_ptr even if interp_method is set, JITted code makes calls through it in mixed mode. * Add a test for open delegates and gsharedvt. * Increase nrgctx trampoline count, its needed by dynamic-method-churn.exe in full-aot-interp mode.
2019-11-22Replace embedded libgc with Unity fork of recent Boehm (bdwgc) (#16832)Jonathan Chambers
* Initial commit to migrate libgc to bdwgc. * Fix submodule url * Don't force Boehm as runtime wrapper. Was just for testing locally. * Build bdwgc as single object file. Helps with performance. * Bump bdwgc submodule. * Attempt to fix windows MSVC based build. * Remove any references to GC_INSIDE_DLL as we manually managed threads on Windows. * Allow building boehm on Windows amd64. * Allow building boehm with msvc. * Bump bdwgc to fix line endings * Use LF for sh, am, m4, and ac files in bdwgc * Bump bdwgc & libatomic_ops with fix for cygwin * Bump bdwgc to fix mono-boehm being generated as libtool wrapper script. * Link the static boehm library. * Revert "Link the static boehm library." This reverts commit 1f90d81d08308a61c890743cd79d8f6bb791bc99. * Use --export-all-symbols on cygwin/mingw to fix issues with boehm causing mono symbols not to be exported. * Fix
2019-11-22[wasm] Add aot+netcore support. (#17798)Zoltan Varga
* [wasm] Compile corelib as 32 bit. * [wasm] Add a netcore cross compiler. * [wasm] Add netcore+aot support. * [aot] Load the dedup module lazily instead of at startup. The previous version didn't work on netcore because it couldn't resolve references to corlib etc. since they were not yet registered in the root domain at the time of loading. * Add more icall trampoline signatures. * Add more netcore pinvokes. * Fix the build. * Add more icall trampoline signatures. * Add an --embed-file option to the packager. * Add more netcore pinvokes. * [interp] Return FALSE for IsDynamicCodeCompiled. * Add a netcore project and targets for running BenchmarkDotNet. * Fix pinvoke tables. * Add missing files. * Fix make clean. * Add a comment. * Revert "Fix pinvoke tables." This reverts commit 998065e77614b7e621d2873510aabc3930669ca9. * Make xunit-runner into a dotnet project. Add a netcore version.
2019-11-18Bump corefx to pick up https://github.com/mono/corefx/pull/370 (#17758)Steve Pfister
Backport of https://github.com/dotnet/corefx/pull/34560 Added HAVE_LCHFLAGS & HAVE_STAT_FLAGS to configure.
2019-11-14Remove handles from System.Diagnostics.Debugger. (#17713)Jay Krell
* Remove handles from System.Diagnostics.Debugger. memset (&x, 0, sizeof (type)) to memset (&x, 0, sizeof (x)). * Bump API snapshot submodule
2019-11-13Remove handles from ves_icall_System_Array_CanChangePrimitive. (#17708)Jay Krell
Remove handles from ves_icall_System_Array_CanChangePrimitive.
2019-11-12Move zlib to its own directory, and re-enable subdir-objectsJo Shields
This has the following benefits: * Clearer structure for mirroring * Slight build time improvement on bundled zlib use (as it only builds once) * Removes pages of subdir-objects spew from autogen
2019-11-11[netcore] Complete Monitor.LockContentionCount implementation (#17719)Alexis Christoforides
* [netcore] Complete Monitor.LockContentionCount implementation Fixes https://github.com/mono/mono/pull/16538
2019-11-04Mono NetCore Windows only build/test. (#17646)Johan Lorensson
Support for Windows Mono NetCore build/test wihtout any need for cygwin/wsl/automake just MSBuild and MSVC. Windows build support mirror technologies used by coreclr/aracade builds msbuild + powershell. Windows only Mono NetCore build, makes a port of existing build.sh and Makefile, implementing a build.ps1 and build.targets. So far full build support + execution of corefx test suite is implemented. Other make file rules can be added when needed. MSVC build runtime seems to hits a couple of additional test failures in corefx test suite that needs to be investigated further. Building NetCore Mono on Windows can now be done without cygwin or wsl. Build depends on regular VS install (or build tools), if xunit summary is requested, python needs to be installed.
2019-11-03[netcore] Fix out of tree build for netcore/ folderAlexander Köplinger
2019-11-02Move MonoError from managed wrappers to native wrappers. (#15894)Jay Krell
Move MonoError from managed wrappers to native wrappers. Move MonoError from managed wrappers (ilgen) to native wrappers (C preprocessor). Alternative to https://github.com/mono/mono/pull/15869. Which says: Previously, we would emit a call to memset since the struct is large (> 100 bytes). Only the error code field needs to be initialized. Which that PR and this PR both fix, in different ways. In the past: - This did not work due to a possible dependency on precise GC, interacting with what gets zeroed or not here. That is why I put it on the managed side. We'll see if that reproduces. (https://github.com/mono/mono/pull/11294/files#diff-efe0070415f3f0c0f24ed0221aa1962aR339 external/coreclr/tests/src/CoreMangLib/cti/system/weakreference/weakreferenceisaliveb.exe.) - Some indication that embedding API should expose MonoError and not set_pending_exception. This does not seem relevant presently, and the code seems better structured and more efficient this way. It can revisited if/when new public API is the dominant concern, or do it this way for these functions, and another way for actual public functions. (https://github.com/mono/mono/pull/11294#issuecomment-432443485)
2019-10-31[runtime] Add a --enable-minimal=threads configure option to disable ↵Zoltan Varga
threading support. Use it on wasm. (#17611)
2019-10-30[mini] Initial tiered compilation work (#17551)Bernhard Urban-Forster
[mini] Initial tiered compilation work Enable it with `./autogen.sh --enable-experiment=tiered`. Let's consider `Simple.cs`: ```csharp using System.Runtime.CompilerServices; using System; public class Simple { public static void Main (string []args) { HotMethod (); Console.WriteLine ("cnt: " + cnt); HotMethod (); Console.WriteLine ("cnt: " + cnt); } static int cnt = 0; [MethodImplAttribute (MethodImplOptions.NoInlining)] public static void HotMethod () { for (int i = 0; i <= 1000; i++) cnt += i; } } ``` ```console $ csc Simple.cs $ MONO_LOG_LEVEL=debug MONO_LOG_MASK=tiered ./mono/mini/mono-sgen --trace=M:Simple:HotMethod --interp=-all Simple.exe [0x10ec275c0: 0.00000 0] ENTER:i Simple:HotMethod ()() Mono: tiered: queued Simple:HotMethod () [0x10ec275c0: 0.00010 0] LEAVE:i Simple:HotMethod ()( Mono: tiered: patching 0x7fe855803224 with patch_kind=INTERP @ tier_level=0 Mono: -> caller= Simple:Main (string[]) [{0x7fe85420df88} + 0x34 interp] (0x7fe8558031f0 0x7fe855803258) [0x7fe85420c880 - Simple.exe] Mono: -> callee=Simple:HotMethod () Mono: tiered: patching 0x7fe8558031f2 with patch_kind=INTERP @ tier_level=0 Mono: -> caller= Simple:Main (string[]) [{0x7fe85420df88} + 0x2 interp] (0x7fe8558031f0 0x7fe855803258) [0x7fe85420c880 - Simple.exe] Mono: -> callee=Simple:HotMethod () cnt: 500500 [0x10ec275c0: 0.04093 0] ENTER:c Simple:HotMethod ()() [0x10ec275c0: 0.04095 0] LEAVE:c Simple:HotMethod ()( cnt: 1001000 ``` Note the suffix after `ENTER:` * `i` indicates it's executed by the interpreter * `c` indicates it's a compiled method (JIT) Another example: ```console $ make -C mono/mini gshared.exe $ ./mono/mini/mono-sgen --interp=-all --stats ./mono/mini/gshared.exe Regression tests: 84 ran, 0 failed in Tests [...] Tiered statistics Methods promoted : 68 ``` It's a basic proof-of-concept for now. An incomplete list of future work items: * Right now it only works for direct calls, need to expand it to virtual/interface calls. * Calls of the JIT leading into the interpreter again can't be patched yet. * Kind of related, no concept of versioning compiled methods does exist yet. The interpreter maintains its own table of "transformed" methods, however, when doing the transition from JIT->interpreter, the wrapper+interpmethod will end up in the JIT table. We need a way to have multiple JIT compilation results for the same MonoMethod exist. * Investigate actual performance. We might have to optimize the interp<>JIT transition. * Patching is racy. Need to make that atomic. * All the FIXMEs in this PR <!-- Thank you for your Pull Request! If you are new to contributing to Mono, please try to do your best at conforming to our coding guidelines http://www.mono-project.com/community/contributing/coding-guidelines/ but don't worry if you get something wrong. One of the project members will help you to get things landed. Does your pull request fix any of the existing issues? Please use the following format: Fixes #issue-number -->
2019-10-25Include signal.h unconditionally. (#17430)Jay Krell
Some of the includes already were unconditional, including both on Win32 and Unix. It is part of ANSI C 89, albeit in a reduced form compared to typical Unix (no sigaction). Remove configuration of MSG_NOSIGNAL which has no other uses. Preserve configuration of signal.h temporarily due to other uses of ifdef HAVE_SIGNAL_H. i.e. LLVM?
2019-10-24Fix eglib on AIX/PASE (#17476)Calvin Buckley
* fix eglib on AIX/PASE * Work around access(2) syscall bug on PASE On PASE, X_OK will always returns true. This is contrary to how AIX behaves (though corresponds to documentation!). This is probably because it's an upcall to the ILE version of access, and that seemingly always returns true. * Always export the dummy function in the test suite The AIX linker didn't export this properly, without using the giant sledgehammer of -bexpall. Write an export file and use it. This required some build system changes to expose an AIX-only automake conditional. * Use a file that exists on PASE for tests PASE doesn't use Unix-style DNS resolution, so /etc/hosts is missing. Use /etc/magic, since that seems to be present. * Don't use /bin on AIX/PASE for tests This is a symlink to /usr/bin, and it seems chdir/getcwd follows links. Use /usr instead, that is unlikely to be a symlink. * Make a note what directory we're in if we fail test_cwd * Change manual executable access check change per Jay * Change test on POSIXy platforms to always use root directory
2019-10-18Some updates to make RISC-V buildable again. (#17408)Alex Rønne Petersen
Some updates to make RISC-V buildable again. Also some updates to the toolchain setup documentation.
2019-10-18Enable GSS on Linux and Android (#17223)Egor Bogatov
2019-10-16[bcl][jit] implement Interlocked.Exchange<T> in terms of object (#17341)Aleksey Kliger (λgeek)
* [bcl][jit] implement Interlocked.Exchange<T> in terms of object Exchange<T> is supposed to be picked up as an intrinsic. But if it isn't, since T has a class constraint, call the `Exchange (ref object, ref object, ref object)` overload instead. This works around a limitation in the JIT: https://github.com/mono/mono/blob/82a07273c22b996b08fa88ee2e6632d782ac2242/mono/mini/mini-trampolines.c#L704-L713 if we're in the common call trampoline, and the caller is generic method and the callee is a generic method, if we're using generic sharing for the caller, but there's no generic jit info for the callee, we will not patch the call site. In this case we had Exchange<T> calling Exchange_T<T> where the callee is an icall (and evidently didn't have generic jit info). So every time we called Exchange<T>, we would go through the trampoline when trying to call Exchange_T<T> without patching the call site. Addresses part of https://github.com/mono/mono/issues/17334 * Bump Mono * Also drop CompareExchange_T<T> * Sprinkle some Unsafe magic. Mark the non-icall methods that we expect the JIT to treet as intrinsics with [Intrinsic] * aot-runtime doesn't need Volatile.Read<T>/Write<T> code Both of those methods are implemented as calls to the object overload of Volatile.Read/Write
2019-10-16[loader] Add an explicit define DISABLE_DLLMAP to control dllmap usage (#17315)Ryan Lucia
* [loader] Add an explicit define ENABLE_DLLMAP to control dllmap usage * Update configure.ac * Update configure.ac * Add dllmap to enable-minimal * Change to DISABLE_DLLMAP * Grab some missing MonoDllMap uses
2019-10-11Update MERP event type to MonoAppCrash (#17131)Kyle White
* Update parameters in MERP WerReportMetadata xml To enable backend analysis, we need to update our parameters to match our back end event type, which is MonoAppCrash. It doesn't make sense to me that the previous implementation constructed the XML here in Mono, but depended on the user (VSMac in this case) to add the "correct" event type. The parameters in the XML, must match exactly what is expected for the given EventType, and so we should ensure they are always in-sync by defining them here. Thus, I removed the usage of `eventType` in `mono_merp_enable` and hard coded the expected eventType. * [merp] Don't pass eventType from managed The eventType must me MONO_MERP_EVENT_TYPE_STR ("MonoAppCrash") - the backend determines the format of the other fields based on the event type, so it doesn't make sense to pass other values from managed since the runtime controls the other fields. For compatability Mono.Runtime.EnableMicrosoftTelemetry will still take a string parameter (now called "unused" instead of "eventType_str") but it will not pass it down to the internal call. * Bump corlib version * [merp] Revert paramerters in WerReportMetadata.xml Still need event type to be `MonoAppCrash` but the parameters will be the same as before.
2019-10-08[netcore] Add libc name transitionRyan Lucia
2019-10-08dladdr shim for gmodule; try to enable crash reporter on AIX (#15808)Calvin Buckley
* Introduce new dladdr wrapper in glib, AIX reimpl, and convert usage Provides a wrapper around dladdr that should be platform-neutral. Also provided is a reimplementation for AIX, which should enable that platform to get some previously dladdr-specific functions like the crash reporter. It is somewhat flawed in that it only gets info for symbols in .text, returns non-constant allocated strings, and allocates heap memory for buffers. Then convert usages (except a macOS specific one) of dladdr to the new eglib function. It has a different signature, which should simplify intent and reduce structiness. Also free memory on AIX due to limitations of its reimplmenetation. * Enable (and fix build of) crash reporter on AIX So far crashes don't seem any different, but the code for it is built. * typo fix (guess this isn't compiled on aix) * attempt to fix macOS and win32 builds * Implement more of g_module_address on Win32 Implements the filename stuff. Untested; don't have Windows. * Look for backtrace_symbols in an IBM compat library for i Enables i to natively dump a stack trace. (AIX "works" too if you copy the compat lib's code and hack it in - it probably needs to be in EGlib.) Unfortunately, it's not perfect. The backchain from the signal handler is empty on i, and AIX sometimes mangles the stack frame in a way that severely confuses the backtrace code, causing it to dereference invalid memory by interpreting instructions as a pointer. (I have seen somewhat similar for the sigaltstack case, where the native memory dump attempts to read something it should not.) Perhaps mincore could be used, but that feels like a sloppy workaround, especially in the "AIX making an invalid stack frame" case. * If the file isn't an archive, don't format its name like one * Fix up search for backtrace_symbols to look in libexecinfo FreeBSD ships it in base and Haiku has a package; likely others too. * Win32 suffers in g_module_address as well * That should habe been guarded with AIX due to limitations Otherwise seems to free things that shouldn't be freed * Casting for win32 * Fix up Win32 impl of module address * Free HMODULE to lower reference count after using it * Change dladdr based impl to always dup for impl consistency Means freeing afterwards shouldn't be ifdefable. * probably shouldn't strdup NULL Likely why macOS has failures. * Don't dup/return const strs, but copy to caller-provided buffers ...which can be on the stack. This makes it far less risky to use in a crash reporter scenario, because malloc can be hosed then. Also fix profiler up better to work with this new reality.
2019-10-07Bump version to 6.9 (#17207)Jo Shields
* Bump version to 6.9 * Add missing new linker source file * [csproj] Update project files * No monolinker on MCS mode, new linker version needs Roslyn
2019-10-07[Coop] Convert Get/SetGenericValueImpl. (#17034)Jay Krell
This is an alternative to https://github.com/mono/mono/pull/16994 and does *not* depend on https://github.com/mono/mono/pull/16987 or https://github.com/mono/mono/pull/17009 or similar.
2019-10-07Default --host in autogen.sh on cygwin when missing. (#17164)Alexander Köplinger
2019-10-04Always do copy_stack_data on entering GC safe/unsafe mode. (#17150)Johan Lorensson
2019-10-03Default --host in autogen.sh on cygwin when missing.lateralusX
2019-10-03Optional only build MSVC runtime using make file system on Windows. (#16915)Johan Lorensson
* Build MSVC only runtime using make file system. Add a new option to only build MSVC version of mono runtime and native tools, --enable-msvc-only. In the past, --enable-msvc build both mingw as well as MSVC runtime, this commit adds an option to only build MSVC version of runtime and native tools using make file system. Commit updates all native make file making sure mingw/gcc builds are not done if --enable-msvc-only has been used. It also makes sure we build and use MSVC based tools as part of build and tests. Result will be a build without any mingw/gcc artifacts, but where all existing make files still works with the MSVC build artifacts. This commits is also preparing to switch the .NETCore build over to use MSVC build runtime in order to get LLVM support, something that is currently only supported on Windows MSVC build. * Add link to mono-sgen.exe and clean windows binaries. * Fix failures in mono/tests test-aot on Windows. * Add fullaot-mixed tests on Windows x64. * Run msbuild in parallel. * Default to x64 mingw host on cygwin build.
2019-09-27[netcore] Add target for running coreclr testsMarek Safar
2019-09-23Correctly check for HAVE_STAT_BIRTHTIME in configure.ac checks for ↵Alexander Köplinger
System.Native (#16999) The check was done incorrectly, the include files need to be separated by newlines otherwise we would get a false negative result. config.log contained this: ``` conftest.c:279:23: warning: extra tokens at end of #include directive [-Wextra-tokens] #include <sys/types.h>, #include <sys/stat.h> ^ // ``` This means that when doing File.GetCreationTime() we'd fall back to returning the last modified time. It regressed when we switched to System.IO.File to the CoreFX implementation i.e. System.Native in https://github.com/mono/mono/commit/8f5cef936491e8b20888bbf18d426482c890637c. Fixes https://github.com/mono/mono/issues/16974
2019-09-20[Coop] InterlockedCompare/Exchange (object/T) (#16873)Jay Krell
* [Coop] InterlockedExchange (object and T), InterlockedCompareExchange (object and T). - Usually intrinsified. - Always? - Avoid coop handles by manually always using ref to object. - For efficiency on input, and efficiency wrt MonoError. - For correctness on output (due to aliasing in the wrappers). - To probably avoid assertion failure in runtime around icall marshaling of generics. - Unclear on location. * Balance parens in prints, so they are balanced in the code. * Reduce local arrays from 16 to auto-sized 1. * Update and reformat System.Threading.Interlocked signature recognition. * Rename the generic again to "_T" (or "Generic"?) on the theory that the aot-runtime.c signature check is too strict/incorrect, but that if we loosen it, it is not clearly specific to the generic. * Revise corlib version again. * Bump API snapshot submodule
2019-09-19Explicit disable hybrid suspend when cooperative suspend is enabled. (#16798)Johan Lorensson
hybrid suspend won't get disabled when using --enable-cooperative-suspend triggering configure error: Hybrid suspend and Cooperative suspend cannot be both enabled. Fix explicit set hybrid suspend default behavior to no if cooperative suspend has been configured.
2019-09-17[arm64_32] make "Debug Mode" work on Watch series 4 with --interpreter (#16865)Bernhard Urban
[arm64_32] make "Debug Mode" work on Watch series 4 with --interpreter Main objective for reviewers: This PR shouldn't change anything for `arm64`. Context: "Debug Mode" on the Apple Watch allows execution of regular machine code and thus is pretty similar to FullAOT on iPhone, i.e. it doesn't require bitcode, but _still_ doesn't allow `signal(3)` so cooperative suspend is required. Apple Watch Series 4 and onward use an ARM64 chip, but with a different ABI, also known as `arm64_32`. This PR changes the AOT compiler and related trampolines so that the AOT compiler can generate all necessary code to run the interpreter on this target. Changes: -------------------------------------- [arm64_32] set register size to 8 in cross compiler too ----------------------------------------- [machine] update `target_mgreg_t` definition `SIZEOF_REGISTER` is usually the same as `TARGET_SIZEOF_VOID_P`, except when `MONO_ARCH_ILP32 is defined. `target_mgreg_t` should represent the width of the hardware register, that is, `SIZEOF_REGISTER`. --------------------------------------------- [arm64_32] fix AOT image layout --------------------------------------------- [arm64_32] make trampolines bitwidth aware * replace pointer loads/stores with bitwidth-dependent macro * reflect `specific` trampolines so that only two instructions are used for ILP32, since the related pair in the data page only needs 2 * 32bits too * replace some `sizeof (target_mgreg_t)` with `TARGET_SIZEOF_VOID_P` (former is hardware register size, latter is pointer size) --------------------------------------------- These regression tests are _not_ passing: https://github.com/mono/mono/issues/16864 Also some of monotouch-tests are crashing, see https://github.com/mono/mono/issues/16819 Here is a screenshot of a debug session in VSMac: <img width="1321" alt="Screenshot 2019-09-16 at 19 13 22" src="https://user-images.githubusercontent.com/75403/64981326-1dfbc000-d8bc-11e9-9d16-48036f36b638.png"> Contributes to https://github.com/mono/mono/issues/10641