Ryan Lucia [Wed, 10 Jul 2019 16:21:56 +0000 (09:21 -0700)]
[netcore] Don't default to mscorlib in Assembly.GetType (mono/mono#15488)
* [netcore] Don't default to mscorlib in Assembly.GetType
* Add argument for whether or not to search mscorlib
* Reorder and rename search_mscorlib argument
* Use gboolean exclusively
Commit migrated from https://github.com/mono/mono/commit/
370e76dfc83616042adde1b2ffd130e25363002e
Jay Krell [Wed, 10 Jul 2019 16:06:51 +0000 (09:06 -0700)]
Remove quadratic behavior from g_strconcat. (mono/mono#15630)
Prefer strlen + memcpy over strcat.
Commit migrated from https://github.com/mono/mono/commit/
7a486d8f438434159e1a7f0f8762a76b2faffeac
Jay Krell [Wed, 10 Jul 2019 08:36:46 +0000 (01:36 -0700)]
Fix warning: unused function get_address_from_sockaddr (mono/mono#15631)
Commit migrated from https://github.com/mono/mono/commit/
58fc782d8641307c6383faebb7cd4a3d219726c9
Jay Krell [Wed, 10 Jul 2019 03:43:13 +0000 (20:43 -0700)]
Provide g_strnlen to replace strnlen for portability to older systems. (mono/mono#15626)
See https://github.com/mistydemeo/tigerbrew/issues/605.
See https://www.gnu.org/software/gnulib/manual/html_node/strnlen.html.
Commit migrated from https://github.com/mono/mono/commit/
77c269721ed2f6b510af94a30be9b43f183f0eb7
Zoltan Varga [Tue, 9 Jul 2019 19:16:46 +0000 (15:16 -0400)]
[interp] Avoid declaring MonoError's in interp_exec_method_full (), it increases the native stack frame size because the optimizer can't seem to figure out live ranges. (mono/mono#15613)
* [interp] Avoid declaring MonoError's in interp_exec_method_full (), it increases the native stack frame size because the optimizer can't seem to figure out live ranges.
* Remove some unused fields from InterpFrame.
Commit migrated from https://github.com/mono/mono/commit/
cba874139d8f59873c8f89531891340fe81788bd
Thays Grazia [Tue, 9 Jul 2019 19:07:46 +0000 (16:07 -0300)]
[debugger] Update client thread frames after SetIP. (mono/mono#15449)
* Fixes mono/mono#13408
PR of draft https://github.com/mono/mono/pull/14667
* Disabling test on Interpreter.
Commit migrated from https://github.com/mono/mono/commit/
d33747a6e3bdb13803ae2dcd7077edd7df094b5b
Zoltan Varga [Tue, 9 Jul 2019 15:40:06 +0000 (11:40 -0400)]
[jit] Add support for valuetype arguments to gsharedvt constrained calls. (mono/mono#15610)
Commit migrated from https://github.com/mono/mono/commit/
2cefbc18df3eade8f2ac3ba94138a8851f24315d
Egor Bogatov [Tue, 9 Jul 2019 11:29:19 +0000 (14:29 +0300)]
[netcore] Fix netcore CI lane (mono/mono#15627)
Commit migrated from https://github.com/mono/mono/commit/
9dc20c9b5faf7e9e80f82007132e25a12d2c5c5e
Zoltan Varga [Tue, 9 Jul 2019 09:44:17 +0000 (05:44 -0400)]
Remove support for llvm36, its not used anymore. (mono/mono#15619)
* Remove support for llvm36, its not used anymore.
* [jit] Remove support for older llvm versions.
Commit migrated from https://github.com/mono/mono/commit/
aeacedfd38fd53c0c351429f5d880477467ec941
Jay Krell [Tue, 9 Jul 2019 09:24:39 +0000 (02:24 -0700)]
[profiler] Fix printf bug -- char* vs. MonoString* (mono/mono#15602)
Gcc warned.
Commit migrated from https://github.com/mono/mono/commit/
5a0bc3cf81eec6f8edb4a5c45b566c71235a765b
Jay Krell [Tue, 9 Jul 2019 09:12:53 +0000 (02:12 -0700)]
[jit] [x86] [amd64] Cleanup with x86_byte() (mono/mono#15600)
Commit migrated from https://github.com/mono/mono/commit/
369f796d8d955f188ba2485b205d60b4cb70ccc6
Jay Krell [Tue, 9 Jul 2019 09:12:15 +0000 (02:12 -0700)]
Access mini_debug_options directly within the runtime. (mono/mono#15594)
We had some inconsistency around accessing mini_debug_options in the runtime (both directly as well as through the function, mini_get_debug_options). This PR makes the access consistent through the runtime.
Commit migrated from https://github.com/mono/mono/commit/
39b52e2da89ec4d118103cfcbd2dd646c31a9eb9
Jay Krell [Tue, 9 Jul 2019 09:09:29 +0000 (02:09 -0700)]
Disable check-seq-points test. (mono/mono#15623)
See https://github.com/mono/mono/pull/15599#issuecomment-
509444313.
See https://github.com/mono/mono/pull/15567.
Alternative to https://github.com/mono/mono/pull/15599 and part https://github.com/mono/mono/pull/15567.
Commit migrated from https://github.com/mono/mono/commit/
135eaa17580b9619f647894c48da55a22c9b945f
Jay Krell [Mon, 8 Jul 2019 17:59:05 +0000 (10:59 -0700)]
runtime.h remove extern "C" and distribute normally instead of extra. (mono/mono#15558)
Commit migrated from https://github.com/mono/mono/commit/
e4bc8790d3e3c6db3022a318bfa20384bd1b9fe3
Johan Lorensson [Mon, 8 Jul 2019 17:50:17 +0000 (19:50 +0200)]
Align native_handle open/close for MonoThreadInfo/MonoInternalThread on Windows. (mono/mono#15482)
* Align native_handle open/close for MonoThreadInfo/MonoInternalThread on Windows.
* Drop assert on DuplicateHandle failure.
* Fix native thread handle gpointer conversion.
Commit migrated from https://github.com/mono/mono/commit/
12c962835ff2d18d0ec46013113bfe56f1fc1157
Zoltan Varga [Mon, 8 Jul 2019 08:36:49 +0000 (04:36 -0400)]
[runtime] Implement mono_verifier_class_is_valid_generic_instantiation () etc. even if the verifier is disabled. (mono/mono#15564)
Fixes https://github.com/mono/mono/issues/15551.
Commit migrated from https://github.com/mono/mono/commit/
cb330378cfc86555e559b0fb0539d27a337ad987
Jay Krell [Mon, 8 Jul 2019 07:44:23 +0000 (00:44 -0700)]
mono_native_tls_get_value that does not change LastError. (mono/mono#15568)
Commit migrated from https://github.com/mono/mono/commit/
f19bc9634364185a0a3628c3e1a6fd3f06ed1a89
Jay Krell [Mon, 8 Jul 2019 07:42:54 +0000 (00:42 -0700)]
Inline GetLastError and SetLastError. (mono/mono#15560)
Commit migrated from https://github.com/mono/mono/commit/
963ba77863303f6a74e8b5bfe6e5c05bbbb19ccb
Egor Bogatov [Sun, 7 Jul 2019 13:11:03 +0000 (16:11 +0300)]
[netcore] Throw ICE for Array.Copy(object[], enum[]) (mono/mono#15585)
* test
* undo rsp changes
* Fix ICollection_NonGeneric_CopyTo_ArrayOfEnumType
* group all "requires precise gc" issues
* Add more gc precise tests (and a flaky one)
Commit migrated from https://github.com/mono/mono/commit/
55cc1d6d8f2d210c1957166ee0c5c8f8177201a2
Ryan Lucia [Sat, 6 Jul 2019 21:34:30 +0000 (17:34 -0400)]
Convert dl-test-assets.py to Python 3 (mono/mono#15524)
Commit migrated from https://github.com/mono/mono/commit/
851dfdb98a2c41427c4f756b2b2f8721ab8e16fc
Jay Krell [Sat, 6 Jul 2019 18:59:27 +0000 (11:59 -0700)]
Cleanup zlib-helper.c allocations -- move integer overflow checks into calloc. (mono/mono#15505)
Commit migrated from https://github.com/mono/mono/commit/
d540aee31f71edb901fe6239f04bb29ee6e3c0d6
Zoltan Varga [Sat, 6 Jul 2019 09:47:47 +0000 (05:47 -0400)]
[jit] Add missing float conv.u8.ovf.un conversion. (mono/mono#13907)
* [jit] Add missing float conv.u8.ovf.un conversion.
* Add support for the float64 bit version as well.
* Fix interpreter support.
Commit migrated from https://github.com/mono/mono/commit/
de5dca22649ae581085863b0935f94eff4483e55
Jay Krell [Fri, 5 Jul 2019 16:05:13 +0000 (09:05 -0700)]
Distribute sgen-dynarray.h via source, not EXTRA_DIST. (mono/mono#15559)
Commit migrated from https://github.com/mono/mono/commit/
1cb8e04331068796bd3c049ce0fd3b59615535f4
Jay Krell [Fri, 5 Jul 2019 16:04:22 +0000 (09:04 -0700)]
Remove extra explicit dist. (mono/mono#15557)
Automake sees through the conditionals.
Commit migrated from https://github.com/mono/mono/commit/
2b7e2d2f34f980c8a03234fe617e011f96df491a
Alexander Köplinger [Fri, 5 Jul 2019 15:03:49 +0000 (17:03 +0200)]
[netcore] Read NETCORETESTS_VERSION and NETCOREAPP_VERSION fro… (mono/mono#15584)
* [netcore] Simplify CI build invocation
We now have build.sh as a one-stop entry to the build system.
* [netcore] Read NETCORETESTS_VERSION and NETCOREAPP_VERSION from eng/Versions.props
The Versions.props is auto-updated by Arcade so we automatically get new versions.
Commit migrated from https://github.com/mono/mono/commit/
bc269dc39e917ec1255673ebdcebdd0afaed1c3e
Egor Bogatov [Fri, 5 Jul 2019 15:02:44 +0000 (18:02 +0300)]
[netcore] CI work, add rsp for Windows (mono/mono#15549)
Commit migrated from https://github.com/mono/mono/commit/
3a7afab91c2a7feb210aedc1053bbc44f80f6d25
Jay Krell [Fri, 5 Jul 2019 13:54:17 +0000 (06:54 -0700)]
Link with -z now or -bind_at_load. (mono/mono#14562)
Advantages:
Dynamic linker gets out of the way of random function calls,
in terms of timing, in terms of locking, and in term of success,
and possibly in terms of security (readonly function pointers).
If you successfully load, then you can make function calls with impunity,
without regard as to if they are in the same .so as the caller, well,
assuming they are to a leaf like libc, or to something itself built with -z now.
The "success" is significant, as otherwise loaded LLVM has unresolved symbols lurking, depending on which code paths you send it down.
Disadvantage: Slower startup.
Mixed:
Platform consistency, since this is how Windows behaves usually (unless you say link /delayload)
This will combine well with an upcoming revision of https://github.com/mono/mono/pull/14524.
Difficult alternative: Force the binding along sensitive paths by calling their callees earlier.
Typical alternative: Ignore the matter.
Android: It is believed this switch produces a warning, which is ignored, there is no affect, and it is unclear if the behavior is actually "now" or "lazy". Logs could be checked and a test run, but neither.
Commit migrated from https://github.com/mono/mono/commit/
e7f9dbe73c3344c96a13892a6c4c45f8e5c35aa3
Jay Krell [Fri, 5 Jul 2019 13:46:10 +0000 (06:46 -0700)]
Readonly codemanager callbacks. (mono/mono#15538)
Commit migrated from https://github.com/mono/mono/commit/
4cf527f6d9ce224c8d1972c95e212f74a0c91043
Jay Krell [Fri, 5 Jul 2019 13:38:16 +0000 (06:38 -0700)]
Make thread locals just always extern. (mono/mono#15563)
Making them static for C is not worth the ifdef.
Commit migrated from https://github.com/mono/mono/commit/
28ec3644efa4e7cff0d8850e01aa96f0621a9749
Jay Krell [Fri, 5 Jul 2019 12:38:56 +0000 (05:38 -0700)]
Win32 zlib support. (mono/mono#15509)
Fixes https://github.com/mono/mono/issues/15503
Always statically link on Windows (msvc and mingw).
This is a somewhat old zlib, and will be updated shortly (https://github.com/mono/mono/pull/15480)
Note that zlib is not valid C++, so always compile as C.
Commit migrated from https://github.com/mono/mono/commit/
b84b85688ba252d1e514ff2dec6a3d10544caa8c
Johan Lorensson [Fri, 5 Jul 2019 08:30:17 +0000 (10:30 +0200)]
Interpreter reads last error to late after pinvoke. (mono/mono#15571)
* Interpreter reads last error to late after pinvoke.
This could lead to clobbered last error since interpreter loop needs to
run two additional IL instructions in order to read out the value. This works
on JIT since the lowering saving the last error will happen right after
pinvoke.
This fix makes sure interpreter will get needed information to read out
last error right after pinvoke (if requested).
It adds a new IL prefix issued in managed->native wrapper that will tell
codegen (and interpreter) that upcoming calli instruction needs to save
last error, meaning that it could be done right after issuing the call,
no need to run any additional IL instructions to do that work, closing
the gap between the return of pinvoke call and save of last error.
Should fix, https://github.com/mono/mono/issues/15541.
* Optimize emit_get_last_error.
Commit migrated from https://github.com/mono/mono/commit/
b1b61d7cb7f580f5e5438a756ef3e67a5a832eeb
Jay Krell [Thu, 4 Jul 2019 14:05:17 +0000 (07:05 -0700)]
Do not compile metadata support/compress.c. (mono/mono#15535)
Commit migrated from https://github.com/mono/mono/commit/
5637cbd42d6d795cef8310e4435b076ca03bc008
Maxim Lipnin [Thu, 4 Jul 2019 13:10:18 +0000 (16:10 +0300)]
[netcore] Make System.Reflection.Tests.TypeTests.GetEnumUnderlyingType Pass (mono/mono#15510)
* [netcore] Make System.Reflection.Tests.TypeTests.GetEnumUnderlyingType Pass
* Remove recursive name parsing in case of "+" character; remove if condition for nested names
Commit migrated from https://github.com/mono/mono/commit/
e0da61d691e79ae810f40b2eef2d30647d30ff72
Jay Krell [Wed, 3 Jul 2019 09:35:11 +0000 (02:35 -0700)]
Make sure TLS (thread local storage) is always TLS and not FLS (fiber local storage).
The Windows SDKs are inconsistent (and clearly documented as so), and the JIT assumes TLS.
Commit migrated from https://github.com/mono/mono/commit/
167709be8ca7f85975b47e4e2925c413f01770a7
Thays Grazia [Wed, 3 Jul 2019 15:15:18 +0000 (12:15 -0300)]
[debugger][wasm] Display content of "this" (mono/mono#15528)
* Implementing watch of variable "this"
Fixes mono/mono#15446
* Fixing indentation.
Commit migrated from https://github.com/mono/mono/commit/
fb49d2d6313e75b2e82ece414dbfc47a54ef6da3
Vlad Brezae [Tue, 2 Jul 2019 15:02:25 +0000 (18:02 +0300)]
[interp] Simplify MINT_NEWOBJ_ARRAY
Commit migrated from https://github.com/mono/mono/commit/
6136d51ae92e2e421f257e3c7939f12affc8deaf
Vlad Brezae [Tue, 2 Jul 2019 14:42:24 +0000 (17:42 +0300)]
[interp] Make newarr lockfree
Before this commit, we were creating the array class from the element class during run time, also taking a lock in the meantime. This makes array allocation 2x faster. (on multithread much faster)
Commit migrated from https://github.com/mono/mono/commit/
aa7b713715735f06fe4fa9fe32b9b7a0e19c90bc
Johan Lorensson [Wed, 3 Jul 2019 11:08:05 +0000 (13:08 +0200)]
Abort async suspend request on failure doing preemptive suspend. (mono/mono#15486)
When a preemptive suspend fails, state machine will get into an invalid
state and the thread is in an unknown state (running/self-suspended). In case of
failure in mono_threads_suspend_begin_async_suspend, a new method should be
called, mono_threads_transition_abort_async_suspend making sure state machine
reflects correct thread state as well as reporting correct result to initial
caller of mono_threads_suspend_begin_async_suspend.
Commit migrated from https://github.com/mono/mono/commit/
e30184752b7047007352e7d384cc471875168a15
Jay Krell [Wed, 3 Jul 2019 09:01:59 +0000 (02:01 -0700)]
HAVE_DL_LOADER is never used so remove it. (mono/mono#15500)
Commit migrated from https://github.com/mono/mono/commit/
08feb423c1f214a5341fcb0132054cd0dcf9f891
Jay Krell [Wed, 3 Jul 2019 09:01:19 +0000 (02:01 -0700)]
AC_DEFINE instead of AC_SUBST MONO_DL_NEED_USCORE. (mono/mono#15499)
i.e. so it can be used in C instead of make.
i.e. so it can actually work.
The lone use is here:
```
C:\s\mono2\mono\utils\mono-dl.c(271):#if MONO_DL_NEED_USCORE
```
Commit migrated from https://github.com/mono/mono/commit/
33b4d2695ee15b8416cd2c6077691e4c8bbad94f
Jay Krell [Wed, 3 Jul 2019 08:59:38 +0000 (01:59 -0700)]
Do not compile unused support/uncompr.c. (mono/mono#15516)
Commit migrated from https://github.com/mono/mono/commit/
177ae36c7a34ac331e8e38a40d4caa131f4d89f6
Egor Bogatov [Wed, 3 Jul 2019 08:58:50 +0000 (11:58 +0300)]
[netcore] Clean up CoreFX.issues.rsp (mono/mono#15526)
Commit migrated from https://github.com/mono/mono/commit/
57f362207c1b1caee96dd5a3ae0f1bd3a8d6461a
Jay Krell [Tue, 2 Jul 2019 15:09:32 +0000 (08:09 -0700)]
Correct MONO_DL_NEED_USCORE for C++, and memcpy is faster than strcpy. (mono/mono#15498)
Commit migrated from https://github.com/mono/mono/commit/
4b074e842b301837dbce9931d08c338050249087
Johan Lorensson [Tue, 2 Jul 2019 12:06:57 +0000 (14:06 +0200)]
Add support for TLS callbacks on Windows. (mono/mono#15423)
* Add support for TLS callbacks on Windows.
Mono runtime depends on DllMain to be called by OS in order to correctly
detach threads from the runtime. If this doesn't happen,
threads from native thread pools (not owned by runtime) and attached
using native->managed callback, won't detach resulting in attached
threads no longer running. Since threads are still attached
to runtime, next GC will try to suspend the thread and that will fail
and that in turn will put the state machine in an incorrect state,
bringing down the runtime at next GC (when the thread state is revisited).
This problem is currently handled by DllMain, but since DllMain only exist
in DLL's, statically link Mono runtime will get us into the above scenario.
This commit add support to hook up a TLS callback using the same mechanism
used by MSVC linker and c-runtime (also available under MINGW). The
callback will be included in a section/segment of an object file and included
in final image (DLL or EXE) by linker and called by OS loader, solving the
problem with static linked Mono runtime not being able to detach terminating
threads.
The commit keeps current DllMain method when building a DLL but
includes a mechanism making sure we only use one of the callback techniques
at runtime, if both have been included in final image. This will simplify the build
of libmini since we can always build the object including the callback, regardless
how the library will be consumed.
Commit migrated from https://github.com/mono/mono/commit/
5fee1d3eea11ddae2f2b3a92bfb03cea7b47c091
Bernhard Urban [Tue, 2 Jul 2019 08:55:51 +0000 (10:55 +0200)]
[stats] distinguish between mini and LLVM AOT method (mono/mono#15483)
[stats] distinguish between mini and LLVM AOT method
Also print the stats on shutdown when configured with `--with-core=only`
Commit migrated from https://github.com/mono/mono/commit/
6f7da4ce491aa01f766d08d6cc58902b24bb3def
Zoltan Varga [Tue, 2 Jul 2019 08:27:48 +0000 (04:27 -0400)]
[netcore] Remove some unused SRE icalls. (mono/mono#15484)
Commit migrated from https://github.com/mono/mono/commit/
adbb7df7ce26461716b7cffaa6e95cb6af7266a6
Jay Krell [Tue, 2 Jul 2019 07:08:06 +0000 (00:08 -0700)]
Fix const warning. (mono/mono#15478)
Commit migrated from https://github.com/mono/mono/commit/
d956cf687cb39bab18194a7eea608becfbc372d5
Jay Krell [Tue, 2 Jul 2019 07:07:18 +0000 (00:07 -0700)]
Make codeman not public (mono/mono#15415)
Seems a bit obscure to be public, the header is not public.
Commit migrated from https://github.com/mono/mono/commit/
caecad895a1984e91e5d60a95dfd34777174512d
Zoltan Varga [Fri, 28 Jun 2019 22:20:29 +0000 (18:20 -0400)]
Add back some stubs for the non-threads build.
Commit migrated from https://github.com/mono/mono/commit/
3970c6112a03acdbd4cc01a3a8bbf973fecf1f8e
Zoltan Varga [Fri, 28 Jun 2019 07:46:41 +0000 (03:46 -0400)]
[wasm] Implement pthreads support in the runtime.
Commit migrated from https://github.com/mono/mono/commit/
7c3adaf873fad721d5b75045411f9285fec40b77
Zoltan Varga [Tue, 25 Jun 2019 20:03:38 +0000 (16:03 -0400)]
[runtime] Disable a a AC_TRY_RUN when cross-compiling.
Commit migrated from https://github.com/mono/mono/commit/
bc787a8a0105e96630597dda72fbbe4df4a3c71c
Steve Pfister [Tue, 2 Jul 2019 01:12:06 +0000 (21:12 -0400)]
[netcore] Remove IsByRef check on Reflection.Emit.DynamicMethod
Fixes https://github.com/mono/mono/issues/15324
Removed check on the return type being by ref.
Commit migrated from https://github.com/mono/mono/commit/
d39c84d45f20fac4884ca5e4a3074f1518e8ca8b
Johan Lorensson [Mon, 1 Jul 2019 23:15:38 +0000 (01:15 +0200)]
Disable zlib on mingw Windows build to avoid dependency on zlib (mono/mono#15493)
mono/mono#4484 broke Windows mingw build due to new dependency, zlib1.dll not available in PATH on build bots. Disabling for now until we know how this should be handled (and also fixed for MSVC build runtime).
Commit migrated from https://github.com/mono/mono/commit/
51a11b68c52034f0c6beef9f62dfa1c9d33761f0
Marek Safar [Mon, 1 Jul 2019 19:01:24 +0000 (21:01 +0200)]
[netcore] Bump Roslyn
Commit migrated from https://github.com/mono/mono/commit/
71d1b10c3eb2d2da8a773004cc16e4a5e90c7db8
Egor Bogatov [Mon, 1 Jul 2019 18:20:25 +0000 (21:20 +0300)]
[netcore] Fix Array.Copy* tests. Bump NETCORETESTS_VERSION ver… (mono/mono#15428)
* Fix Array.Copy* tests
* simplify code
* Add comments
* Address feedback
* Update CoreFX.issues.rsp
* Fix SRE tests
* Add comment
* bump versions again
Commit migrated from https://github.com/mono/mono/commit/
d20fe8ec3799f97468c21d3f41dcab9071c85218
Miguel de Icaza [Mon, 1 Jul 2019 16:11:02 +0000 (09:11 -0700)]
[metadata] Rename, null-initialize, and properly free *args variables (mono/mono#13855)
Commit migrated from https://github.com/mono/mono/commit/
de18c594f0000812f91ee22c6eb044e2ea3964f0
Jay Krell [Mon, 1 Jul 2019 07:53:01 +0000 (00:53 -0700)]
Remove unused AMD64 JIT CALLCONV_IS_STDCALL. (mono/mono#15416)
Commit migrated from https://github.com/mono/mono/commit/
8c20d5c67a774002404439950c9d60dfd0d0edf1
lateralusX [Thu, 27 Jun 2019 09:30:06 +0000 (11:30 +0200)]
Fix 32-bit build error when using C++ compiler.
Commit migrated from https://github.com/mono/mono/commit/
be77d03c225a3be8589ac2499afc66d2f043e3f4
Katelyn Gadd [Fri, 28 Jun 2019 22:24:09 +0000 (15:24 -0700)]
Disable compiler server on darwin. Add force-enable option for compiler server. (mono/mono#15450)
Commit migrated from https://github.com/mono/mono/commit/
c239906a0177a69417f021e4bd2702b179b68454
Filip Navara [Thu, 27 Jun 2019 09:07:40 +0000 (11:07 +0200)]
Add tests
Commit migrated from https://github.com/mono/mono/commit/
c788634b54eabfe2e6f2365bac09ec2f0aeb6582
Filip Navara [Tue, 25 Jun 2019 09:31:38 +0000 (11:31 +0200)]
Fix marshalling bugs for StringBuilder parameters
Commit migrated from https://github.com/mono/mono/commit/
cbe365b659aade2ae85f3f1c55267df837bf2738
Ryan Lucia [Fri, 28 Jun 2019 15:54:27 +0000 (11:54 -0400)]
[netcore] Fix Assembly.GetForwardedTypes() (mono/mono#15452)
* [netcore] Make GetForwardedTypes return nested types
* [netcore] Throw proper error in GetTopLevelForwardedTypes
* Remove unnecessary function
* Formatting
* Re-enable relevant tests
* Switch to REFERENCE_MISSING
* Use local error
Commit migrated from https://github.com/mono/mono/commit/
c879bc4691b4a76f1866af08024b0df5e27b6b8e
Zoltan Varga [Tue, 7 Mar 2017 01:28:24 +0000 (20:28 -0500)]
[runtime] Implement support for embedded ppdb, when the ppdb blob is compressed and embedded into the pe image.
Commit migrated from https://github.com/mono/mono/commit/
112297ef5c076a2716c020ddb0bbf1e0a2da7703
Jay Krell [Fri, 28 Jun 2019 09:28:06 +0000 (02:28 -0700)]
Fix year+ old MIPS compile break. (mono/mono#15459)
Fixes https://github.com/mono/mono/issues/15441
Commit migrated from https://github.com/mono/mono/commit/
19681ad2d440de48e5b74ddeb4d12dcd0277990a
Alexander Köplinger [Fri, 28 Jun 2019 08:19:16 +0000 (10:19 +0200)]
Replace two more MONO_DEBUG=clr-memory-model env vars with commandline switches
Follow up to https://github.com/mono/mono/pull/15447
Commit migrated from https://github.com/mono/mono/commit/
4e022f7f07fef960a88fc369c0760f876097c2bb
Zoltan Varga [Fri, 28 Jun 2019 03:16:47 +0000 (23:16 -0400)]
[netcore] Avoid calling mono_runtime_install_appctx_properties () in aot mode. (mono/mono#15448)
Commit migrated from https://github.com/mono/mono/commit/
a29cbc429d7b2877b4aea7821304fc0c8083503d
Thays Grazia [Fri, 28 Jun 2019 01:02:39 +0000 (22:02 -0300)]
[dim] Emit error when calling abstract methods (mono/mono#15433)
* Emitting bad image exception when a non virtual call is calling an abstract method.
* Fixing side-effect.
Implementing the same thing on interpreter.
Adding unit test.
Commit migrated from https://github.com/mono/mono/commit/
c011456f3f2074d87ad009a1be77cb8f35ef48a6
lateralusX [Thu, 27 Jun 2019 07:58:28 +0000 (09:58 +0200)]
FIx id formatting to align with rest of code.
Commit migrated from https://github.com/mono/mono/commit/
c5ef80bf861602300262231d9f690ed03a305b90
lateralusX [Wed, 26 Jun 2019 15:43:02 +0000 (17:43 +0200)]
Fix incorrect thread state on suspend thread failure.
According to documentation of mono_threads_suspend_begin_async_suspend:
"If begin suspend fails the thread must be left uninterrupted and resumed."
Current implementation on Windows didn't resume thread in case GetThreadContext
fails, leaving a thread in suspended state on failure.
Fix is to resume thread if GetThreadContext fails.
Commit migrated from https://github.com/mono/mono/commit/
56d38ca43053670a6b456ce6843900c334caf1d2
lateralusX [Wed, 26 Jun 2019 15:39:21 +0000 (17:39 +0200)]
Fix use THREAD_SUSPEND_DEBUG macros on Windows.
Several errors in current implementation, both compile time errors as
well as warnings.
Commit migrated from https://github.com/mono/mono/commit/
973f430d45e1a6fbd1429da649a24c3b0d5eadb0
Steve Pfister [Thu, 27 Jun 2019 12:14:02 +0000 (08:14 -0400)]
[netcore] Review and document netcore test failures that are skipped (mono/mono#15359)
* Went through the majority of corefx tests that were being skipped in CoreFX.issues.rsp.
For each failure, a github issue was logged and if possible, a more expanded
failure reason was specified.
Part of the https://github.com/mono/mono/issues/14787 epic work
* Cleaned up header that no longer had tests in it
* Pesky -method still around. It'll ignore now
Commit migrated from https://github.com/mono/mono/commit/
814d20db9155ec568009e7f4374f386bcfd32977
Ryan Lucia [Wed, 26 Jun 2019 19:41:11 +0000 (15:41 -0400)]
CreateNLSocket and CloseNLSocket should return gpointer (mono/mono#15408)
In managed, these functions are used as `static external IntPtr`. This means that previously on arm64 the top bits of the return value were garbage. A comparison with 64-bit -1 like in LinuxNetworkChange.EnsureSocket would never be true, which was causing us to hit other assertions in the runtime.
Co-authored-by: Aleksey Kliger <alklig@microsoft.com>
Commit migrated from https://github.com/mono/mono/commit/
19bb89805ac2eb56b09fed40cab1dd342f97a5e3
Johan Lorensson [Wed, 26 Jun 2019 17:16:11 +0000 (19:16 +0200)]
Fix unused-function warning in main.c. (mono/mono#15424)
Commit migrated from https://github.com/mono/mono/commit/
b70694828dbcb2fbab31e7f66096aa057efedee3
Aleksey Kliger (λgeek) [Wed, 26 Jun 2019 15:10:03 +0000 (11:10 -0400)]
[sdks] dynamically link libmonosgen to mono-sgen for monodroid host builds (mono/mono#15410)
* [configure] Cosmetic AC_MSG_WARN fix
* [runtime] Mark mono_file_map_error as MONO_API, always
Fixed the `--with-static_mono=no` build on non-Win32
* [sdks] dynamically link libmonosgen to mono-sgen for monodroid host builds
Commit migrated from https://github.com/mono/mono/commit/
927c608184b86b6c03958ba9aecec02340cd0661
Jay Krell [Sat, 22 Jun 2019 19:10:31 +0000 (12:10 -0700)]
Remove mono_tls_get_tls_getter.
Commit migrated from https://github.com/mono/mono/commit/
cad60fce03f1014f0a6b7794d8ca9e28afcc78aa
Jay Krell [Mon, 17 Jun 2019 08:24:00 +0000 (01:24 -0700)]
Replace MONO_PATCH_INFO_GET_TLS_TRAMP with MONO_PATCH_INFO_JIT_ICALL_ADDR_NOCALL.
Commit migrated from https://github.com/mono/mono/commit/
8d6feabf0de4258bff8fffcb4d13ee3ff04a700f
Vlad Brezae [Tue, 25 Jun 2019 08:24:06 +0000 (11:24 +0300)]
[sgen] Fix crashes in sgen due to xdomain refs
CADMessages are passed directly between appdomains. When using contained data, we need to make sure we don't create any cross domain references.
When domains are unloaded, all threads executing code in that appdomain are aborted and the entire heap is traversed and objects in that appdomain are cleared. If any objects in other domains are directly referencing objects in the unloaded domain, they will reference junk. If any, cross domain refs should only be allowed when the referenced object is in the root domain which is never unloaded.
Commit migrated from https://github.com/mono/mono/commit/
6359520633d2ba1d2032892fe562cf14d4f1c540
Vlad Brezae [Tue, 25 Jun 2019 15:43:25 +0000 (18:43 +0300)]
[interp] Reduce computation under calc_section mutex
Calc_section mutex is meant to be a lower level mutex used only for synchronization on InterpMethod contents. Before this commit we were taking the loader mutex which was leading to deadlocks.
Commit migrated from https://github.com/mono/mono/commit/
aa05d4f43c127a3d34aeb5e7b8ece58a452aa7e3
Egor Bogatov [Wed, 26 Jun 2019 09:49:24 +0000 (12:49 +0300)]
Add xunit-summary.py (mono/mono#15373)
Commit migrated from https://github.com/mono/mono/commit/
78b9c66501113469e081066ad6b500595a727b66
Alexander Köplinger [Wed, 26 Jun 2019 08:41:38 +0000 (10:41 +0200)]
[profiler] Add helper.h to tarball
Commit migrated from https://github.com/mono/mono/commit/
6307f0156c4bb85b64bd3d48a7f9e7832fc1cd2c
Ryan Lucia [Wed, 26 Jun 2019 03:58:41 +0000 (23:58 -0400)]
[netcore] Fix build.sh (mono/mono#15380)
* [netcore] Revert changes to build.sh
It appears to have accidentally been changed in mono/mono#15215, and the script no longer works correctly as a result, so revert
* Strip call to make
Commit migrated from https://github.com/mono/mono/commit/
a2a28b94c1316db37a254256907765eecf8de789
Zoltan Varga [Tue, 25 Jun 2019 17:26:17 +0000 (13:26 -0400)]
[aot] Save the number of locals into the aot debug info so the method header doesn't have to be decoded when its loaded.
Commit migrated from https://github.com/mono/mono/commit/
dc321b06a204d091f09166c5d1bedf41c1020fd4
Jay Krell [Tue, 25 Jun 2019 20:14:42 +0000 (13:14 -0700)]
Fix tarball build and refresh monolite due to memory model change (mono/mono#15370)
* Revise monolite due to memory model change.
* Fix tarball builds wrt netcore/config.make.
* Remove System.Private.CoreLib from mcs/class/Makefile, it was moved to netcore/
* Bump min_mono_version in basic-profile-check
The new MONO_DEBUG=clr-memory-model runtime option isn't available in earlier Mono versions.
Commit migrated from https://github.com/mono/mono/commit/
1c09e4de62b3bb69ed82af9d3ddbb941f7c0ed0f
Jay Krell [Tue, 25 Jun 2019 18:56:38 +0000 (11:56 -0700)]
[threads] Define interlocked_mutex as non-recursive and on 32bit platforms only (mono/mono#15393)
Commit migrated from https://github.com/mono/mono/commit/
3e270ffe20bfd0fa056bfb2e3ba8ebf07c441ead
Radek Doulik [Tue, 25 Jun 2019 18:04:16 +0000 (11:04 -0700)]
[profiler] Add helper.c to static sources where needed (mono/mono#15400)
This should fix broken `OS X x64 iOS SDK` build.
Commit migrated from https://github.com/mono/mono/commit/
3efc0959fed108cd069c41d53071352238004523
Johan Lorensson [Tue, 25 Jun 2019 15:40:39 +0000 (17:40 +0200)]
Add cooperative suspend aware threads for hybrid suspend. (mono/mono#15204)
* Add cooperative suspend aware threads for hybrid suspend.
When running in hybrid suspend and having threads in blocking mode, GC Safe
mode, threads will still be preemptive suspended. This is done to make sure
compatibility is kept with embedders since current embedding API is not coop
aware. If, however the external attached threads promise to follow the coop
rules for a thread in Safe mode, it could still be possible to have them
running, making sure they won't be preempted when running STW. Unlocking this
possibility could have large performance wins if embedding threads runs a lot
of native code on threads attached to runtime.
This commit adds support for a new pair of API's where an external thread can
mark itself as cooperative suspend aware. Doing that guarantees the runtime
that it will follow all rules as dictated by cooperative suspend when a thread
is in safe mode. The change only goes one way since this is a lifetime commitment
for a thread. Once’s set, thread will be kept running when in safe mode.
Commit migrated from https://github.com/mono/mono/commit/
5ca92bdbe8fc2f151c44b21b09ce53c4ad6ec379
Zoltan Varga [Tue, 25 Jun 2019 13:35:21 +0000 (09:35 -0400)]
[runtime] Refactor mono-debug.c. (mono/mono#15381)
* [debug] Refactor the code in mono-debug.c.
Store the domain->debug info table mapping in MonoDomain to avoid a hashtable lookup.
Rename MonoDebugDataTable to DebugDomainInfo to better reflect its meaning.
* Remove some mono_ prefixes from static functions, along with the full/internal prefixes.
Commit migrated from https://github.com/mono/mono/commit/
9ace0a3b9c9b7b608d2911e464914eb6e6b70783
Radek Doulik [Tue, 25 Jun 2019 10:17:45 +0000 (03:17 -0700)]
[aot profiler] Listen for commands on given port (mono/mono#14936)
* [aot profiler] Listen for commands on given port
Extended the aot profiler so, that it can receive commands over the network.
Added new option `port=PORT`, which enables command server and specifies
the port the server should listen at.
We have 2 commands so far.
save ... save the profile data to socket and close it
quit ... quit the profiler. it also saves the profile to the file
in case the output option was specified.
It makes the aot profiling much easier to use on Android as we don't need to
save the profile to a file on the device. That means we don't need to set
`<application android:debuggable="true"/>` flag, which changes the Android
app behavior and thus influence the profile itself. It is also convenient way
for IDEs to retrieve the aot profiles.
Example use for Xamarin.Android. Save and receive the profile data:
adb shell setprop debug.mono.profile aot:verbose,port=9999
adb forward tcp:9999 tcp:9999
nc -v 127.0.0.1 9999 > profile.aotprof
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src 127.0.0.1 port 50398
dst 127.0.0.1 port 9999
rank info not available
TCP aux info available
Connection to 127.0.0.1 port 9999 [tcp/distinct] succeeded!
save
Check what we received:
aotprofile-tool -sd profile.aotprof
Modules:
132475FF-85AA-430D-913C-
7642CBD8587E mscorlib
F7BDCAB5-83D3-4A0A-A33D-
BBE94284667D Mono.Android
22897151-27C9-4064-B001-
8A04F5847812 System
AA3FC224-D486-4304-A8C9-
EBF316556B26 Java.Interop
00D98403-051B-4168-A391-
F3F601637CBD System.Core
FD06519A-C321-426C-BDD8-
C97777452057 xat_latests_and_greatest_vsmac_8._1
9ECB003E-D449-438B-BE35-
58810DCBC917 Xamarin.Android.Support.v7.AppCompat
11659962-EFAC-400D-9F8D-
AF925B26AE41 Xamarin.Android.Support.Fragment
48C436F7-611D-470D-9949-
AC13FFDCF613 Xamarin.Essentials
2792D10D-7E13-46E6-BB4A-
933C25635F48 Xamarin.Android.Support.Design
Summary:
Modules: 10
Types: 221
Methods: 932
* Try to fix WIN32 compilation
* Add helper.c to mono-profiler-log.vcxproj
* Add helper.c to mono-profiler-log.vcxproj.filters as well
Commit migrated from https://github.com/mono/mono/commit/
858b2b8405407770c131c1519a2fa889f796577f
Johan Lorensson [Tue, 25 Jun 2019 08:46:33 +0000 (10:46 +0200)]
Increase max size of localloc and localloc_imm on amd64. (mono/mono#15374)
We hit the following assert when doing full AOT of some assemblies:
wrong maximal instruction length of instruction localloc (expected 96, got 99)
Assertion: should not be reached at mono\mono\mini\mini-amd64.c:6801
Turns out that that size could be hit when a couple of things happens as part
of lowering OP_LOCALLOC and OP_LOCALLOC_IMM:
sreg1 is not RAX, RCX or RDI
dreg is not RAX, RCX or RDI
cfg->param_area is bigger than 127
Fix is to increase max size of the instruction, from 96 -> 120 (same as x86).
Commit migrated from https://github.com/mono/mono/commit/
f8fbbcf280ca9a55ffe573681ad44abadf804592
Johan Lorensson [Tue, 25 Jun 2019 06:20:25 +0000 (08:20 +0200)]
Add support for Windows x64 Full AOT + LLVM + Interpreter on CI. (mono/mono#15276)
Commit migrated from https://github.com/mono/mono/commit/
b181dbc50dd4045b1a23ac53c7fb4337fe1df190
Marek Safar [Mon, 24 Jun 2019 18:09:35 +0000 (20:09 +0200)]
[System.Private.CoreLib] Add new shared string resource
Commit migrated from https://github.com/mono/mono/commit/
7066c05c3931c2cfea3c8db4b1d56fc448060eeb
Zoltan Varga [Mon, 24 Jun 2019 18:47:00 +0000 (14:47 -0400)]
[netcore] Disable more runtime functionality. (mono/mono#15369)
Commit migrated from https://github.com/mono/mono/commit/
1150d4a3e97bdc2a8dbd509db79046e59c0bc08c
Thays Grazia [Mon, 24 Jun 2019 13:34:42 +0000 (10:34 -0300)]
[wasm][debugger] Adding support to debug local vars in async methods (mono/mono#15357)
- Improving performance calling only once mono_wasm_get_var_info.
- Adding support to debug local vars in async methods. They are special in the way that local variables can be lifted to generated class fields.
Commit migrated from https://github.com/mono/mono/commit/
057f51d833f3d103730ad88a427407e3de251f6d
Johan Lorensson [Mon, 24 Jun 2019 08:56:21 +0000 (10:56 +0200)]
Fix race related to final event signaling in RegisteredWaitHandle. (mono/mono#15280)
We have seen sporadic failures in thread pool tests on CI related to
test case:
System.Threading.ThreadPools.Tests.ThreadPoolTests.QueueRegisterPositiveAndFlowTest [FAIL]
Assert.Equal() Failure
Expected: 0
Actual: 1
Stack Trace:
at System.Threading.ThreadPools.Tests.ThreadPoolTests.QueueRegisterPositiveAndFlowTest () [0x00143] in D:\j\workspace\z3\label\w64\external\corefx\src\System.Threading.ThreadPool\tests\ThreadPoolTests.cs:337
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in D:\j\workspace\z3\label\w64\mcs\class\corlib\System.Reflection\RuntimeMethodInfo.cs:395
Finally managed to track down the issue to a race when using the same final
event in sequential calls to RegisterWaitForSingleObject. The event could, depending on
timing, get signaled multiple times for the same RegisterWaitHandle instance
causing a thread waiting for completion on another RegisterWaitHandle using same event
to be signaled before that callback was completed. That will cause the race seen in the
failing test above.
Fix make sure we only signal the final event one time per RegisterWaitHandle
instance.
Commit migrated from https://github.com/mono/mono/commit/
de90561fbd552d06e68c6ecbafd3a417f1ffae1a
Bernhard Urban [Fri, 21 Jun 2019 14:26:24 +0000 (16:26 +0200)]
[arm] set exception handling model to dwarf for iOS
We recently switched the AOT compiler for iOS armv7 from 32bit host to 64bit host. At the same time we _also_ switched from LLVM 3.6 to the newer LLVM 6.0 fork we support.
In a Xamarin.iOS Release build for iOS armv7 exception handling would crash. Specifically the problem was that the exception object wasn't properly injected into the handler block. The way it works is, that the exception handler machinery passes the pointer to the exception object via `r0`.
With the newer LLVM the generated code of the exception handling block
looks like this:
```
LBB1_15: @ %EH_CLAUSE0_BB3
Ltmp8:
ldr r0, [sp, mono/mono#24]
str r0, [sp, mono/mono#4]
ldr r0, [sp, mono/mono#28]
ldr r0, [sp, mono/mono#12]
ldr r0, [r0]
cmp r0, mono/mono#0
beq LBB1_17
```
thus overwriting `r0`, so that the pointer to the exception object is lost. With the older LLVM 3.6 the generated code looks like this:
```
LBB1_8: @ %EH_CLAUSE0_BB3
Ltmp8:
str r0, [sp, mono/mono#4]
ldr r0, [r6]
cmp r0, mono/mono#0
beq LBB1_10
```
correctly storing the exception object into a stack slot for later usage.
After some time I figured out that there are _different_ exception handling models. Depending on the model, the exception pointer is passed in `r0` or not:
https://github.com/mono/llvm/blob/mono/mono@
2bd2f1db1803f7b36687e5abf912c69baa848305/lib/Target/ARM/ARMISelLowering.cpp#L14416-L14428
`SjLj` stands for "SetJump / LongJump" and means that exception handling is implemented with this. On iOS this is the default model that is used. We want `dwarf` instead, so we tell this `llc` now and the generated code handles it correctly.
So why was it working before? In our older LLVM 3.6 fork we hardcoded it:
https://github.com/mono/llvm/blob/mono/mono@
f80899cb3eb75f7f5640b4519e83bd96991bffb8/lib/Target/ARM/ARMISelLowering.cpp#L756-L762
The `-exception-model=` option is also not available in LLVM 3.6.
Contributes to https://github.com/mono/mono/issues/15058 and https://github.com/mono/mono/issues/9621
Commit migrated from https://github.com/mono/mono/commit/
7d5daa2f77246a036f19ddb34ac4715c5ca58f36
Zoltan Varga [Sat, 22 Jun 2019 06:39:32 +0000 (02:39 -0400)]
[netcore] Remove unused icalls.
Commit migrated from https://github.com/mono/mono/commit/
bbfce0087817d135c32d96a5284b52d1e485da72
Zebediah Figura [Sat, 22 Jun 2019 16:57:49 +0000 (11:57 -0500)]
[mini] Support tracing pointer return values. (mono/mono#15356)
Commit migrated from https://github.com/mono/mono/commit/
9f49cc85af18aad607c8951e3a9103681696d0dd
Zoltan Varga [Sat, 22 Jun 2019 03:35:57 +0000 (23:35 -0400)]
[aot] Fix a deadlock in init_plt () by calling create_trampoline () outside the lock. (mono/mono#15332)
Fixes https://github.com/mono/mono/issues/15330.
Commit migrated from https://github.com/mono/mono/commit/
c3161826e3c10cf32909fb5592ba2b3b9c15934f
Vlad Brezae [Thu, 20 Jun 2019 12:35:43 +0000 (15:35 +0300)]
[arm64] Add location of this and rgctx arg
Used to fetch the value from async suspend stack frame, during exception handling.
Commit migrated from https://github.com/mono/mono/commit/
0cf363c4db217f90fa9b2a78580d494843dc8ae4
Vlad Brezae [Thu, 20 Jun 2019 12:17:19 +0000 (15:17 +0300)]
[arm] Add location of this and rgctx arg
Used to fetch the value from async suspend stack frame, during exception handling.
Commit migrated from https://github.com/mono/mono/commit/
a7a884e19eb80e68f44a48ab737974f01c461368