platform/upstream/dotnet/runtime.git
3 years agoDisable System.ComponentModel.Composition on Mono (#46699)
Aleksey Kliger (λgeek) [Fri, 8 Jan 2021 00:14:26 +0000 (19:14 -0500)]
Disable System.ComponentModel.Composition on Mono (#46699)

Active issue is https://github.com/mono/mono/issues/16417

There seems to be some kind of System.Reflection.Emit concurrency problem here

3 years agoImprove SuperPMI handling of CORINFO_SIG_INST handle arrays (#46604)
Bruce Forstall [Fri, 8 Jan 2021 00:13:49 +0000 (14:13 -1000)]
Improve SuperPMI handling of CORINFO_SIG_INST handle arrays (#46604)

* Improve SuperPMI handling of CORINFO_SIG_INST handle arrays

CORINFO_SIG_INST, used by the CORINFO_SIG_INFO struct, contains
two pointers to arrays of handles. SuperPMI was saving/restoring
these assuming 8-byte pointers. This worked fine for same-bitness
record/playback (although on 32-bit it saved/restored twice as
much data as it should, reading beyond the actual arrays when
saving). However, when recording on 32-bit and replaying on 64-bit,
this didn't work.

Change the CORINFO_SIG_INST recording to record the handle arrays
in a new dense DWORDLONG map, SigInstHandleMap, in "agnostic" format (64-bit pointers),
and store an index into this map to the base of the array. The handle array
can then be serialized/deserialized properly for cross-bitness scenarios.
The map contains only unique array sequences, which is required so when
we look up an array we find the unique map index.

Create helpers for all the CORINFO_SIG_INST related serialization/deserialization/
dump/formatting.

Also, implement record/playback of getExpectedTargetArchitecture().

Added "-simple" option to "mcs -dump" to not print the function name/signature
for a method context. Useful for debugging problems where constructing that
name/signature causes mcs crashes/asserts.

Record on arm, playback on x64, using cross-compiler, now works.

* Change the JIT/EE GUID

The JIT/EE interface hasn't changed, but the SuperPMI data format
has changed incompatibly, so force a recollection that won't be
confused with the old collections.

* Fix non-Windows build

3 years agoResolve easy ILLink warnings from InteropServices, ObjectModel, Drawing.Primitives...
Eric Erhardt [Fri, 8 Jan 2021 00:10:46 +0000 (18:10 -0600)]
Resolve easy ILLink warnings from InteropServices, ObjectModel, Drawing.Primitives (#46605)

* Resolve ILLink warnings in System.Runtime.InteropServices
* Resolve ILLink warnings in System.ObjectModel
* Resolve ILLink warnings in System.Drawing.Primitives

Contributes to #45623

* Remove suppression no longer needed with the latest ILLinker.

* Annotate ComEventInterfaceAttribute.EventProvider to make it trim compatible.

3 years agoDelete DateTime FCalls and switch to fully managed implementation (#46690)
Jan Kotas [Fri, 8 Jan 2021 00:06:20 +0000 (16:06 -0800)]
Delete DateTime FCalls and switch to fully managed implementation (#46690)

3 years agoAvoid OutOfMemoryException in some test environments (#45710)
Steve Harter [Thu, 7 Jan 2021 23:54:01 +0000 (17:54 -0600)]
Avoid OutOfMemoryException in some test environments (#45710)

3 years agoUse faster Guid/Name lookup for EventSource (#45745)
Ben Adams [Thu, 7 Jan 2021 23:18:27 +0000 (23:18 +0000)]
Use faster Guid/Name lookup for EventSource (#45745)

3 years agoAllow early prop to undertand how R2R creates arrays (#42831)
nathan-moore [Thu, 7 Jan 2021 22:57:58 +0000 (17:57 -0500)]
Allow early prop to undertand how R2R creates arrays (#42831)

3 years agoChange FeedbackSize on Rijndael wrappers to delegate to implementation.
Kevin Jones [Thu, 7 Jan 2021 22:44:07 +0000 (17:44 -0500)]
Change FeedbackSize on Rijndael wrappers to delegate to implementation.

The FeedbackSize on RijndaelManaged and RijndaelImplementation were not
accurately reflecting the feedback size that the actual implementation
was using. The FeedbackSize would report 128, however the implementation
defaults to 8, so CFB8 is actually what was being used.

Likewise, the setter for FeedbackSize on the Rijndael types had no
effect. The implementation's default feedback size of 8 would always
be used.

3 years agoReduce CacheEntry size (#45962)
Adam Sitnik [Thu, 7 Jan 2021 19:57:33 +0000 (20:57 +0100)]
Reduce CacheEntry size (#45962)

* reduce the size of CacheEntry instance by 2xsizeof(int)

* remove _lock field and use "this" for locking instead

* move _expirationTokenRegistrations, _postEvictionCallbacks and _expirationTokens to separate type to reduce the typical cache entry size

* apply code review suggestion: don't use Enum.HasFlag

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Apply suggestions from code review

Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
3 years agoBetter error message in ActivatorUtilities (#43762)
Joris Vergeer [Thu, 7 Jan 2021 16:48:43 +0000 (17:48 +0100)]
Better error message in ActivatorUtilities (#43762)

3 years agoAdd some rationale for why GC/API/GCSettings/InputValidation and GC/Features/LOHCompa...
imhameed [Thu, 7 Jan 2021 16:47:50 +0000 (08:47 -0800)]
Add some rationale for why GC/API/GCSettings/InputValidation and GC/Features/LOHCompaction/lohpin are disabled on Mono (#44978)

3 years agoFix watson buckets setting race condition (#46636)
Jan Vorlicek [Thu, 7 Jan 2021 16:44:04 +0000 (17:44 +0100)]
Fix watson buckets setting race condition (#46636)

* Fix watson buckets setting race condition

The code that updates watson buckets in an exception from its inner
exception has a race that can cause runtime crashes when many threads
are rethrowing the same exception using ExceptionDispatchInfo.Throw.
At several places, we check if the inner exception contains watson
buckets and if that is true, we copy them to the outer exception.
However, the ExceptionDispatchInfo.Throw on another thread can reset
the buckets to the captured value, which might be null. So the
copying then crashes with access violation.

This change fixes the issue by reading the buckets reference once and
then performing the checks / copying using that extracted value.

It also adds a regression test that asserts quickly in debug / checked
builds.

* Reflect feedback

* Make the VALIDATEOBJECTREF race-resilient
* Add license header to the test
* Fix indentation

* Fix wrong VALIDATEOBJECTREF change

3 years agoEventSource linker warnings fix (#46510)
Lakshan Fernando [Thu, 7 Jan 2021 15:59:11 +0000 (07:59 -0800)]
EventSource linker warnings fix (#46510)

* eh fix

* First set of changes for EventSource trim warnings
This is WIP that  fixes EventSource.cs warnings with other fixes to come

* incorporating fb

* incorporating feedback

* Missed removing annotation in the earlier checkin

* Incorporating feedback

* Incorporating feedback

* Incorporating feedback

* merging suppresion file with master

* fix build break

* removing a suppression for linker update

3 years ago[Mono] enable tests that seem to pass (#43407)
Aleksey Kliger (λgeek) [Thu, 7 Jan 2021 14:54:08 +0000 (09:54 -0500)]
[Mono] enable tests that seem to pass (#43407)

* Re-enable some passing tests for Mono

That have active issues in mono/mono

| Test project | Issue |
|----------------|-----------|
| `System.Numerics.Vectors` | Fixes https://github.com/mono/mono/issues/15190 |
| `System.ComponentModel.Composition` | Partly addresses https://github.com/mono/mono/issues/16417 |
| `System.Private.Xml` | Fixes https://github.com/mono/mono/issues/15353 |
| `System.Linq.Parallel` | Fixes https://github.com/mono/mono/issues/14956 |

3 years agoBackport changes affecting EventPipe from PR 45672 into C library. (#46220)
Johan Lorensson [Thu, 7 Jan 2021 08:06:26 +0000 (09:06 +0100)]
Backport changes affecting EventPipe from PR 45672 into C library. (#46220)

3 years agoBackport changes affecting EventPipe from PR 38225 into C library. (#46219)
Johan Lorensson [Thu, 7 Jan 2021 08:05:28 +0000 (09:05 +0100)]
Backport changes affecting EventPipe from PR 38225 into C library. (#46219)

* Backport changes affecting EventPipe from PR 38225 into C library.

* Mono only supports portable thread pool.

3 years agoBackport parts of EventPipe PR 43711 not currently in C library. (#46214)
Johan Lorensson [Thu, 7 Jan 2021 08:04:11 +0000 (09:04 +0100)]
Backport parts of EventPipe PR 43711 not currently in C library. (#46214)

3 years agoDon't consider types with empty base classes blittable. They have a different managed...
Jeremy Koritzinsky [Thu, 7 Jan 2021 02:39:01 +0000 (18:39 -0800)]
Don't consider types with empty base classes blittable. They have a different managed and native size. (#46653)

* Don't consider types with empty base classes blittable. They have a different managed and native size.

* Add test.

* Update src/coreclr/vm/classlayoutinfo.cpp

3 years agoIntroduce CallConvSuppressGCTransition type to enable suppressing the transition...
Jeremy Koritzinsky [Thu, 7 Jan 2021 02:19:25 +0000 (18:19 -0800)]
Introduce CallConvSuppressGCTransition type to enable suppressing the transition frame for unmanaged function pointer calls (#46343)

* Add public CallConvSuppressGCTransition type

* Fix parsing CallConv modopts out of an IL stub.

* Insert SuppressGCTransition modopt into ilstub target sig. Use modopts for IL stub callconv when SuppressGCTransition in use.

* Recognize CallConvSuppressGCTransition as supressing the GC transition for modopts (Coreclr and crossgen1).

* Support specifying CallConvSuppressGCTransition on both inlinable and non-inlinable calli.

* Enable SuppressGCTransition on calli signatures in crossgen2.

* Fix callconv in il

* PR feedback

* Add docs.

* Use STANDARD_VM_CONTRACT and fix clang build.

* Update contracts in jitinterface.

* Exclude test on mono since support isn't implemented.

* Fix contract.

* PR feedback.

* Add flags back to cache.

3 years agoFix TestsManifestGeneration tests (#46658)
Sung Yoon Whang [Thu, 7 Jan 2021 01:52:32 +0000 (17:52 -0800)]
Fix TestsManifestGeneration tests (#46658)

* Flush before checking for manifest data

* add comments

3 years agoBring back checkout bundle for PRs until AzDo fixes PR job checkouts (#46649)
Santiago Fernandez Madero [Wed, 6 Jan 2021 23:29:33 +0000 (15:29 -0800)]
Bring back checkout bundle for PRs until AzDo fixes PR job checkouts (#46649)

3 years agoDisable runtime tests that hit known limitations (#46623)
Vlad Brezae [Wed, 6 Jan 2021 23:20:25 +0000 (01:20 +0200)]
Disable runtime tests that hit known limitations (#46623)

3 years agoFix rare cleanup race condition in Task.Delay (#46631)
Stephen Toub [Wed, 6 Jan 2021 21:48:02 +0000 (16:48 -0500)]
Fix rare cleanup race condition in Task.Delay (#46631)

If both a timeout and a cancelable token are provided, and if the timer manages to fire between the time that it's created and the time that we register with the cancellation token immediately after, we will end up leaking a registration into the token.

3 years agoJIT: clear patchpoint flags during block split (#46637)
Andy Ayers [Wed, 6 Jan 2021 21:09:26 +0000 (13:09 -0800)]
JIT: clear patchpoint flags during block split (#46637)

We only want the patchpoint flags to apply to the original block,
not the split remainder block.

3 years ago[mono] Add MonoAOTCompiler MSBuild Task to produce NuPkg (#46537)
Mitchell Hwang [Wed, 6 Jan 2021 20:43:12 +0000 (15:43 -0500)]
[mono] Add MonoAOTCompiler MSBuild Task to produce NuPkg (#46537)

* Test workload

* Remove hardcoded path to MonoAOTCompiler

Remove changes related to testing the MonoAOTCompiler NuPkg

Remove changes to deprecated files that led to file additions

* Inline pkg descriptions for MonoAOTCompiler Task and workload packs

* Remove Workload AOT additions

* Replace _ILLinkTasksDirectoryRoot with _AOTTasksDirectoryRoot

* Add TargetsMobile condition

* Remove temporary variables

* Reword MonoAOTCompiler NuPkg description

* Remove NuPkg import of MonoAOTCompiler UsingTask

* Add MonoAOTCompilerTaskAssemblyPath property

* Cleanup Microsoft.NET.Runtime.MonoAOTCompiler.Tasks.props

* Add README.md with example of using the NuPkg

* Specify the package files for the aot task, in the project itself

* Add comment for GetFilesToPackage target

* Update README.md

Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
3 years agoUpdate dependencies from https://github.com/mono/linker build 20210106.1 (#46635)
dotnet-maestro[bot] [Wed, 6 Jan 2021 19:59:59 +0000 (14:59 -0500)]
Update dependencies from https://github.com/mono/linker build 20210106.1 (#46635)

Microsoft.NET.ILLink.Tasks
 From Version 6.0.0-alpha.1.21054.5 -> To Version 6.0.0-alpha.1.21056.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
3 years agoImplement and use MultiArrayBuffer (#44980)
Geoff Kizer [Wed, 6 Jan 2021 19:06:15 +0000 (11:06 -0800)]
Implement and use MultiArrayBuffer (#44980)

* add MultiArrayBuffer and use in StreamBuffer and Http2Stream

* rework EnsureAvailableSpace and add tests for it

* make dispose handling more robust, plus minor tweaks

* add AssertExtensions.SequenceEqual for providing more useful information about sequence differences, and use in StreamConformanceTests

* tweaks

* replace _blockCount with _allocatedEnd

* use uint instead of int internally to assure bitop optimizations

* fix _allocatedEnd calculation

* address PR feedback

* more PR feedback and some minor fixes/improvements

* small test improvements

* Apply suggestions from code review

Co-authored-by: Günther Foidl <gue@korporal.at>
* address review feedback

Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
Co-authored-by: Günther Foidl <gue@korporal.at>
3 years agoPGO: don't record info for collectible classes (#46611)
Andy Ayers [Wed, 6 Jan 2021 19:04:38 +0000 (11:04 -0800)]
PGO: don't record info for collectible classes (#46611)

Map method tables for collectible classes to null so profile entries won't
hold onto pointers that can become invalid.

Record the nulls in the profiles so that collectible classes still impact the
profile stats.

3 years ago[mono] Add functional tests for the supported platforms (#46286)
Maxim Lipnin [Wed, 6 Jan 2021 19:01:22 +0000 (22:01 +0300)]
[mono] Add functional tests for the supported platforms (#46286)

Part of https://github.com/dotnet/runtime/issues/43865

The functional tests:

- live under src/tests/FunctionalTests directory.
- are built as a part of the library tests build.
- are isolated from the build/test setup used for the tests in src/tests
- run on CI

3 years agoDisable TC for UnmanagedCallersOnly methods. (#46550)
Jeremy Koritzinsky [Wed, 6 Jan 2021 18:51:48 +0000 (10:51 -0800)]
Disable TC for UnmanagedCallersOnly methods. (#46550)

3 years agoFix conversions from subnormal System.Half values (#46536)
Tanner Gooding [Wed, 6 Jan 2021 18:15:24 +0000 (10:15 -0800)]
Fix conversions from subnormal System.Half values (#46536)

* Fix conversions from subnormal System.Half values

* Fix conversions from subnormal System.Single/Double to System.Half values

* Fixing the HalfTests parameters

3 years agoJIT: fix layering of profile and model inlining policies (#46612)
Andy Ayers [Wed, 6 Jan 2021 17:01:14 +0000 (09:01 -0800)]
JIT: fix layering of profile and model inlining policies (#46612)

Both these policies delegate to the discretionary policy. When that policy
makes a decision, the overlaying policies shouldn't take further action.

In particular, in some test cases we were failing an inline twice for
recursion depth, once via the discretionary policy, and once via the
overlay policy; this triggered an assert.

3 years agoConvert Debugger.Log and Debugger.Launch to QCalls (#46617)
Jan Kotas [Wed, 6 Jan 2021 13:49:22 +0000 (05:49 -0800)]
Convert Debugger.Log and Debugger.Launch to QCalls (#46617)

3 years agoFixing doc link to maximum file path limitation removal (#46627)
Lukas Lansky [Wed, 6 Jan 2021 13:49:01 +0000 (14:49 +0100)]
Fixing doc link to maximum file path limitation removal (#46627)

3 years ago[Android] Implement RSA encryption using Android SDK (#45870)
Egor Bogatov [Wed, 6 Jan 2021 12:35:51 +0000 (15:35 +0300)]
[Android] Implement RSA encryption using Android SDK (#45870)

3 years agoFix Socket.ReceiveFrom on Unix (#46151)
Anton Firszov [Wed, 6 Jan 2021 12:22:48 +0000 (13:22 +0100)]
Fix Socket.ReceiveFrom on Unix (#46151)

Fix a regression within the sync-over-async blocking path within the Unix ReceiveFrom implementation.

3 years agoset BuildingInsideOfficialBuild (#46615)
Anirudh Agnihotry [Wed, 6 Jan 2021 06:42:47 +0000 (22:42 -0800)]
set BuildingInsideOfficialBuild (#46615)

3 years agoDelete reflection blocking on GetThreadDeserializationTracker (#46607)
Jan Kotas [Wed, 6 Jan 2021 04:50:47 +0000 (20:50 -0800)]
Delete reflection blocking on GetThreadDeserializationTracker (#46607)

Fixes https://github.com/mono/mono/issues/15112

3 years agoRemove duplicate bundle WXL file (#46599)
Nikola Milosavljevic [Wed, 6 Jan 2021 03:54:45 +0000 (19:54 -0800)]
Remove duplicate bundle WXL file (#46599)

3 years ago[Mono][jit] Emit GC transitions for "calli unmanaged" instructions (#46491)
Aleksey Kliger (λgeek) [Wed, 6 Jan 2021 02:29:58 +0000 (21:29 -0500)]
[Mono][jit] Emit GC transitions for "calli unmanaged" instructions (#46491)

* [metadata] Treat CallConv bit 0x09 as MONO_CALL_UNMANAGED_MD

This is the C#9 function pointers "unmanaged"+ext calling convention.
Additional calling convention details are encoded in the modopts of the return
type.

This PR doesn't handle the modopts yet

* [marshal] Add mono_marshal_get_native_func_wrapper_indirect

This will be used to add a wrapper around "calli sig" indirect calls where "sig" has
an unmanaged calling convention.

We need to do a GC transition before calling an unmanaged function from
managed. So this wrapper does it.

This is reusing much of the code implemented for
mono_marshal_get_native_func_wrapper_aot which is used for delegates.
Unfortunately that means that the function pointer is (pointlessly) boxed when
it is passed as the first argument.

* [jit] Use a wrapper for "calli unmanaged" instructions

If there's a calli with an unmanaged signature, invoke a wrapper that
does a transition to GC Safe mode and then do the call.

The wrapper is always inlined into the callee.

Because we're reusing much of the code of
mono_marshal_get_native_func_wrapper_aot, the function pointer first has to be
boxed before it's passed to the wrapper.  In theory we should be able to just
pass it directly and get much simpler code.  But that will require changing the
code in emit_native_wrapper_ilgen to get an unboxed function pointer arg

* fixup don't emit GC transitions in runtime invoke wrapper

* fixup don't emit two wrappers on dynamic methods

* check that calli wrapper only gets blittable args

* negate logic for when to add an indirection wrapper

assume that if the callee is a wrapper, it doesn't need the transition, and
only add it to normal managed methods.

* add disabled debug printf

* Add MonoNativeWrapperFlags arg to emit_native_wrapper

Replace the 4 boolean args by a flags arg.

Also add a new EMIT_NATIVE_WRAPPER_FUNC_PARAM_UNBOXED and use it in
mono_marshal_get_native_func_wrapper_indirect.  The new flag has no effect yet.

* Address review feedback

* Use an unboxed func ptr mono_marshal_get_native_func_wrapper_indirect

Add support for the EMIT_NATIVE_WRAPPER_FUNC_PARAM_UNBOXED flag to mono_marshal_emit_native_wrapper

3 years agoCleanups after awk dependency removal (#46574)
Adeel Mujahid [Wed, 6 Jan 2021 02:20:37 +0000 (04:20 +0200)]
Cleanups after awk dependency removal (#46574)

3 years agoFix `assert(isByteReg(ireg))`. (#46567)
Sergey Andreenko [Wed, 6 Jan 2021 01:58:46 +0000 (17:58 -0800)]
Fix `assert(isByteReg(ireg))`. (#46567)

3 years agoRemove JIT_FLAG_PROF_REJIT_NOPS (#46560)
Egor Chesakov [Wed, 6 Jan 2021 01:16:15 +0000 (17:16 -0800)]
Remove JIT_FLAG_PROF_REJIT_NOPS (#46560)

* Remove padding for ReJit in CodeGen::genAllocLclFrame in src/coreclr/jit/codegenxarch.cpp

* Remove JIT_FLAG_PROF_REJIT_NOPS in src/coreclr/jit/jitee.h

* Remove CORJIT_FLAG_PROF_REJIT_NOPS in src/coreclr/inc/corjitflags.h

* Remove CORJIT_FLAG_PROF_REJIT_NOPS in src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs

* Remove genPrologPadForReJit() in src/coreclr/jit

* Remove dead code in src/coreclr/jit

* Update JIT/EE interface GUID in src/coreclr/inc/jiteeversionguid.h

3 years agoHandle '/' in locale name in PAL (#46601)
Adeel Mujahid [Wed, 6 Jan 2021 00:29:56 +0000 (02:29 +0200)]
Handle '/' in locale name in PAL (#46601)

3 years agoFix build errors using GCC 11 (#46334)
Omair Majid [Tue, 5 Jan 2021 23:50:18 +0000 (18:50 -0500)]
Fix build errors using GCC 11 (#46334)

Building runtime with GCC 11 leads to some new errors. The errors are
consistent with the "Header dependency changes" section documented at
https://gcc.gnu.org/gcc-11/porting_to.html

The first set of errors looks like this:

    runtime/src/coreclr/pal/src/misc/cgroup.cpp:403:29:
    error: no member named 'numeric_limits' in namespace 'std'
              if (temp > std::numeric_limits<size_t>::max())
                         ~~~~~^

Fix that by including <limits>.

The second set of errors looks like this:

    runtime/src/installer/corehost/cli/test/nativehost/host_context_test.cpp:634:31:
     error: no member named 'sleep_for' in namespace 'std::this_thread'
              std::this_thread::sleep_for(std::chrono::milliseconds(100));
              ~~~~~~~~~~~~~~~~~~^

Fix that by including <thread>.

3 years agoPass an alc to Assembly.Load() in GetSatelliteAssembly() to avoid a stack walk. ...
Zoltan Varga [Tue, 5 Jan 2021 23:48:50 +0000 (18:48 -0500)]
Pass an alc to Assembly.Load() in GetSatelliteAssembly() to avoid a stack walk. (#46534)

3 years agoCleanup, and little improvement for aggressive trimming (#46587)
Ankit Jain [Tue, 5 Jan 2021 21:48:00 +0000 (16:48 -0500)]
Cleanup, and little improvement for aggressive trimming (#46587)

* Cleanup, and little improvement for aggressive trimming

- The `ConfigureTrimming` target adds xunit assemblies explicitly, and
  sets `TriggerRootAssembly` too.

- Looking at the files being linked, some issues noticed:
    - Multiple copies of xunit assemblies, from various locations are
      included. Eg. from `System.Buffer.Tests`, `WasmTestRunner`, and
      from the nuget
    - `WasmTestRunner` is explicitly added as `TriggerRootAssembly`, but
      it is also passed as an arg for linking, `-p link ...`
    - `xunit.runner.json` is incorrectly added to the files to be linked

- Instead:
    - all the files to be published are already in
      `ResolvedFileToPublish` after `AddTestRunnersToPublishedFiles` target
    - so, we mark everything for linking,
    - *except*:
        - main test assembly
        - and the test runner assembly

    - This way we are explicitly specifying which assemblies to link,
      and which ones to `copy`

- This reduces the size:
    - 3.1M to 2.6M `artifacts/bin/System.Buffers.Tests/net6.0-Release/browser-wasm/AppBundle/managed/`
    - 46M to 31M `artifacts/bin/System.Buffers.Tests/net6.0-Release/browser-wasm/AppBundle/publish/`

* cleanup

* Trim the test runner also. based on @mareks' feedback

3 years agoEnsure special static slots respect alignment. (#43683)
monojenkins [Tue, 5 Jan 2021 21:19:04 +0000 (16:19 -0500)]
Ensure special static slots respect alignment. (#43683)

Without proper alignment, this may lead to reference types
being stored at non-pointer aligned offsets. Among other
issues this may lead to the GC not scanning those pointers
properly.

For example, a type such as
```
struct Point
{
    public int X;
    public int Y;
}
```
will have size 8 and alignment 4 on x64 platforms.

If we reuse the special slot allocated for the `Point` type to store
a reference pointer, it may not be pointer aligned.

Co-authored-by: joncham <joncham@users.noreply.github.com>
3 years ago[mono] Add support for PINVOKE_OVERRIDE (#46442)
Ryan Lucia [Tue, 5 Jan 2021 21:04:00 +0000 (16:04 -0500)]
[mono] Add support for PINVOKE_OVERRIDE (#46442)

Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
3 years agoUse assembly name formatting code for missing satellite assemblies (#45472)
Marek Safar [Tue, 5 Jan 2021 20:52:39 +0000 (21:52 +0100)]
Use assembly name formatting code for missing satellite assemblies (#45472)

exception message

3 years ago[master] Update dependencies from mono/linker (#46557)
dotnet-maestro[bot] [Tue, 5 Jan 2021 20:36:16 +0000 (20:36 +0000)]
[master] Update dependencies from mono/linker (#46557)

[master] Update dependencies from mono/linker

3 years agoUse Centos8 instead Centos7 for Helix tests (#46205)
Tomas Weinfurt [Tue, 5 Jan 2021 20:28:55 +0000 (12:28 -0800)]
Use Centos8 instead Centos7 for Helix tests (#46205)

* use Centos8 instead Centos8 for tests

* pick up image with libicu

* pull in new image with openssl app

3 years agoRemove StartupHooks ILLink warning suppressions from shared file (#46559)
Eric Erhardt [Tue, 5 Jan 2021 19:27:54 +0000 (13:27 -0600)]
Remove StartupHooks ILLink warning suppressions from shared file (#46559)

One suppression is needed going forward in order for developers to get a warning if they trim apps with StartupHookProvider.IsSupported=true.

Contributes to #45623

3 years agoReturn actual LoadLibrary failures for IJW scenarios. (#45997)
Aaron Robinson [Tue, 5 Jan 2021 19:19:02 +0000 (11:19 -0800)]
Return actual LoadLibrary failures for IJW scenarios. (#45997)

* Return actual LoadLibrary failures for IJW scenarios.

3 years agoHTTP/3: Header encoding and decoding fixes (#46565)
James Newton-King [Tue, 5 Jan 2021 19:12:22 +0000 (08:12 +1300)]
HTTP/3: Header encoding and decoding fixes (#46565)

3 years ago[master] Update dependencies from dotnet/llvm-project dotnet/icu (#46576)
dotnet-maestro[bot] [Tue, 5 Jan 2021 18:35:54 +0000 (13:35 -0500)]
[master] Update dependencies from dotnet/llvm-project dotnet/icu (#46576)

* Update dependencies from https://github.com/dotnet/llvm-project build 20210104.1

runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
 From Version 9.0.1-alpha.1.20628.1 -> To Version 9.0.1-alpha.1.21054.1

* Update dependencies from https://github.com/dotnet/icu build 20210104.1

Microsoft.NETCore.Runtime.ICU.Transport
 From Version 6.0.0-alpha.1.20628.1 -> To Version 6.0.0-alpha.1.21054.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
3 years agoUpdate MicrosoftCodeAnalysisNetAnalyzersVersion (#46581)
Stephen Toub [Tue, 5 Jan 2021 18:26:58 +0000 (13:26 -0500)]
Update MicrosoftCodeAnalysisNetAnalyzersVersion (#46581)

3 years agoRemove ThreadStart delegate allocation from TryCreateWorkerThread (#46563)
Stephen Toub [Tue, 5 Jan 2021 18:15:29 +0000 (13:15 -0500)]
Remove ThreadStart delegate allocation from TryCreateWorkerThread (#46563)

3 years agoFix incorrect IsEnabled check on TplEventSource.TaskWaitContinuation* (#46304)
Sung Yoon Whang [Tue, 5 Jan 2021 18:14:48 +0000 (10:14 -0800)]
Fix incorrect IsEnabled check on TplEventSource.TaskWaitContinuation* (#46304)

3 years agoCheck EnabledFor* individually for non-self-describing events (#46555)
Brian Robbins [Tue, 5 Jan 2021 16:54:55 +0000 (08:54 -0800)]
Check EnabledFor* individually for non-self-describing events (#46555)

3 years agoSet WasmBuildDir so that AOT tests can properly run (#46575)
Steve Pfister [Tue, 5 Jan 2021 16:18:19 +0000 (11:18 -0500)]
Set WasmBuildDir so that AOT tests can properly run (#46575)

Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
3 years agoImprove generated dump debugging instructions (#46493)
Dan Moseley [Tue, 5 Jan 2021 15:57:42 +0000 (07:57 -0800)]
Improve generated dump debugging instructions (#46493)

* Improve generated dump debugging instructions

* Update eng/testing/debug-dump-template.md

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Update eng/testing/debug-dump-template.md

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Update eng/testing/debug-dump-template.md

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Update debug-dump-template.md

* Fix ```

* fix some ```cmd

* Reverse .cmd to .bat

* Open only for reading

* Improve foldername

* Install only one SOS

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
3 years agoAvoid an exception in Exception.GetCaptureState() if the stack trace is empty, it...
Zoltan Varga [Tue, 5 Jan 2021 15:46:28 +0000 (10:46 -0500)]
Avoid an exception in Exception.GetCaptureState() if the stack trace is empty, it can happen on wasm+aot. (#46539)

3 years agoIncrease timeout for ProcessWaitingTests.WaitAsyncForSignal (#46564)
Dan Moseley [Tue, 5 Jan 2021 12:44:38 +0000 (04:44 -0800)]
Increase timeout for ProcessWaitingTests.WaitAsyncForSignal (#46564)

3 years agoDelete stale x86 TODOs from crossgen2 (#46562)
Jan Kotas [Tue, 5 Jan 2021 09:33:32 +0000 (01:33 -0800)]
Delete stale x86 TODOs from crossgen2 (#46562)

3 years agoAdd a NOSTRIP make variable to allow the wasm runtime to be compiled without strippin...
Zoltan Varga [Tue, 5 Jan 2021 09:06:28 +0000 (04:06 -0500)]
Add a NOSTRIP make variable to allow the wasm runtime to be compiled without stripping. (#46544)

3 years ago[marshal-ilgen] Fix NULL check for blittable out lparray. (#46548)
monojenkins [Tue, 5 Jan 2021 08:48:12 +0000 (03:48 -0500)]
[marshal-ilgen] Fix NULL check for blittable out lparray. (#46548)

Found while working on WPF clipboard code in Wine Mono. The test case causes a NullReferenceException in Mono but works in .NET Framework.

Co-authored-by: madewokherd <madewokherd@users.noreply.github.com>
3 years ago[browser][websocket] Fix for Close Description validation (#45536)
Kenneth Pouncey [Tue, 5 Jan 2021 05:29:08 +0000 (06:29 +0100)]
[browser][websocket] Fix for Close Description validation (#45536)

* [browser][websocket] Fix for Close Description validation

- Issue https://github.com/dotnet/runtime/issues/45531
- The description validation exception was not being percolated through to the unit test

* Remove test code

* Address review comments.  Wrap in a try/catch that will catch that exception and store it into a task to be returned.

* Fix merge conflict

* Remove active issue

Co-authored-by: Larry Ewing <lewing@microsoft.com>
3 years agoFix createdump fault in diagnostic tests (#46554)
Mike McLaughlin [Tue, 5 Jan 2021 03:09:49 +0000 (19:09 -0800)]
Fix createdump fault in diagnostic tests (#46554)

3 years agoFix setting timeout too early for QuicConnectionlistener (#46549)
Justin Kotalik [Tue, 5 Jan 2021 01:32:04 +0000 (17:32 -0800)]
Fix setting timeout too early for QuicConnectionlistener (#46549)

3 years agoUpdate SKIP_ALLOC_FRAME to match 3.1, 5.0 and 6.0 instruction sequences in function...
Egor Chesakov [Tue, 5 Jan 2021 01:07:09 +0000 (17:07 -0800)]
Update SKIP_ALLOC_FRAME to match 3.1, 5.0 and 6.0 instruction sequences in function prolog (#45184)

* Add regression tests for https://github.com/dotnet/runtime/issues/45090

* Add instruction opcodes in src/coreclr/vm/eetwain.cpp

* Add SKIP_LEA_EAX_ESP in src/coreclr/vm/eetwain.cpp

* Add SKIP_HELPER_CALL in src/coreclr/vm/eetwain.cpp

* Update SKIP_ALLOC_FRAME in src/coreclr/vm/eetwain.cpp

* Use constant (0x1000) rather than calling GetOsPageSize() in SKIP_ALLOC_FRAME in src/coreclr/vm/eetwain.cpp

* Draft of the changes that are back-compatible with earlier versions of R2R code in src/coreclr/vm/eetwain.cpp

* Update src/coreclr/vm/eetwain.cpp and include missing SKIP_ARITH_REG for 3.1 stack probing loop

* Update test and include more scenarios

* Update R2R version to 5.1 in src/coreclr/inc/readytorun.h src/coreclr/tools/Common/Internal/Runtime/ModuleHeaders.cs

3 years agoFix array interface generation if both IList and IReadOnlyList are linked out. (...
Zoltan Varga [Tue, 5 Jan 2021 01:04:30 +0000 (20:04 -0500)]
Fix array interface generation if both IList and IReadOnlyList are linked out. (#46533)

3 years agoUpdate changed paths to consider new path updates (#46308)
Santiago Fernandez Madero [Tue, 5 Jan 2021 00:39:25 +0000 (16:39 -0800)]
Update changed paths to consider new path updates (#46308)

3 years agomove netcore platforms and targets to csproj (#46474)
Anirudh Agnihotry [Mon, 4 Jan 2021 23:45:22 +0000 (15:45 -0800)]
move netcore platforms and targets to csproj (#46474)

3 years agolog ulimit (#46511)
Dan Moseley [Mon, 4 Jan 2021 23:43:09 +0000 (15:43 -0800)]
log ulimit (#46511)

3 years ago[master] Update dependencies from mono/linker (#46531)
dotnet-maestro[bot] [Mon, 4 Jan 2021 23:20:32 +0000 (23:20 +0000)]
[master] Update dependencies from mono/linker (#46531)

[master] Update dependencies from mono/linker

3 years agoImprove msg for corrupted perf counters (#46535)
Dan Moseley [Mon, 4 Jan 2021 23:01:34 +0000 (15:01 -0800)]
Improve msg for corrupted perf counters (#46535)

* Improve msg for corrupted perf counters

* Remove machine name

3 years agoRemove targets* platform condition from project references (#46377)
Anirudh Agnihotry [Mon, 4 Jan 2021 22:26:32 +0000 (14:26 -0800)]
Remove targets* platform condition from project references (#46377)

* remove targets* platform condition from project references

* Remove extra condition

* remove redundant condition

3 years ago[wasm] Standup EnableAgressiveTrimming for library tests (#46367)
Mitchell Hwang [Mon, 4 Jan 2021 21:21:55 +0000 (16:21 -0500)]
[wasm] Standup EnableAgressiveTrimming for library tests (#46367)

* Trim wasm library tests

* Add SystemBuffers HelloTest and only test that

* Import linker from nuget to override sdk linker

* Remove redundant assembly inclusions

* Add WasmTestRunner referenced assemblies

* Add properties to reduce library size

* Updates

* Configure trimming for library tests

* Link assemblies except for test assembly

* Use another path to WasmTestRunner.dll

* Fix typo

* Setup correctly rooted assemblies

* Don't copy WasmTestRunner.dll from wrong patch when using linker

* Don't inflate publish output with packages which are not used for tests runs

* Fix xunit framework files copying to publish location to not overwrite
version copied as part of trimming publish

* Add linker descriptor for xunit code which linker cannot track

* Add tested assembly to the test payload closure

* One more method to preserve

* Preserving some xunit types to make sure we can actually discover the tests

* Put Wasm.targets import in the right spot

* Add a mode where we can run the regular system.buffers tests

* Dont link out Microsoft.DotNet.RemoteExecutor

* Move Microsoft.DotNet.RemoteExecutor inclusion to xml

* Consolidate ConfigureTrimming itemgroups

* Build PrepareForWasmBuildApp before WasmBuildApp

* Remove manual import of WasmTestRunner assemblies

* Remove temporary HelloTest from System.Buffers

* Added flag to not aggressively link by default

* Revert import and build order changes

* Condition trimming related changes on EnableAggressiveTrimming

* Revert "Don't copy WasmTestRunner.dll from wrong patch when using linker" as MainAssembly is back to $(PublishDir)\WasmTestRunner.dll
This reverts commit 79dc240f4c99f61af1a7e4c98d299be25f8f854e.

* Add comment to note temporary RemoteExecutor assembly inclusion

* Move props from general tests to mobile tests

* Revert "Condition trimming related changes on EnableAggressiveTrimming"

This reverts commit a97fb56eeb47522a4af1e7e47acd3595cf48271e.

* Broaden trimming options for all mobile targets

* Enable PublishTrimmed regardless of OS when aggressively trimming

* Move trimming specific property to ConfigureTrimming

* Import NuGet linker in mobile tests by default

* Add file description

* Add detail to ILLink XML descriptor file

* Reformat ConfigureTrimming target tag

* Fix typo

Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
Co-authored-by: Steve Pfister <steve.pfister@microsoft.com>
Co-authored-by: Marek Safar <marek.safar@gmail.com>
3 years agoAdd memory related logging to S.R.IS tests in Helix (#46517)
Dan Moseley [Mon, 4 Jan 2021 21:03:41 +0000 (13:03 -0800)]
Add memory related logging to S.R.IS tests in Helix (#46517)

* Log more info in Helix

* feedback:

* lambda

3 years agoFurther optimize storage of icu locale data (#45643)
Ben Adams [Mon, 4 Jan 2021 19:28:27 +0000 (19:28 +0000)]
Further optimize storage of icu locale data (#45643)

3 years agouse a different way of removing the access for the temporary test account (#46527)
Adam Sitnik [Mon, 4 Jan 2021 17:54:06 +0000 (18:54 +0100)]
use a different way of removing the access for the temporary test account (#46527)

* use a different way of removing the access for the temporary test account:

use RemoveAccessRule instead of adding a new AccessControlType.Deny rule

* Apply suggestions from code review

Co-authored-by: Stephen Toub <stoub@microsoft.com>
3 years agoHalf conversion test cases for subnormal corner cases (#46523)
Emile Cormier [Mon, 4 Jan 2021 17:41:38 +0000 (13:41 -0400)]
Half conversion test cases for subnormal corner cases (#46523)

* Half conversion test cases for subnormal corner cases

* Single/Double->Half rounding corner test cases

* Single/Double->Half conversion subnormal rounding corner test cases

3 years agoAdd support for rebuilding the wasm executable in non-aot mode. (#45072)
Zoltan Varga [Mon, 4 Jan 2021 17:40:08 +0000 (12:40 -0500)]
Add support for rebuilding the wasm executable in non-aot mode. (#45072)

* Add support for rebuilding the wasm executable in non-AOT mode.

* Run the pinvoke generator as well.
* Strip the final executable.
* Document some of the public msbuild properties.

* Add some properties to make things more readable.

* Fix AOT support.

* Fix AOT.

3 years agoFix bug in W3C ID version check (#46492)
xiang17 [Mon, 4 Jan 2021 17:11:34 +0000 (09:11 -0800)]
Fix bug in W3C ID version check (#46492)

3 years agoUpdate to latest centos 7 prereqs image (#46422)
Adeel Mujahid [Mon, 4 Jan 2021 16:35:36 +0000 (18:35 +0200)]
Update to latest centos 7 prereqs image (#46422)

* Update to latest centos 7 prereqs image

* Fix stringop-overflow in interop tests
Warnings were of the form:

```sh
/runtime/src/tests/Interop/BestFitMapping/BestFitMappingNative.cpp:94:12: error: 'char* strncpy(char*, const char*, size_t)' specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
   94 |     strncpy(pBack, pStr, len);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~
/runtime/src/tests/Interop/BestFitMapping/BestFitMappingNative.cpp:92:24: note: length computed here
   92 |     size_t len = strlen(pStr) + 1; //+1, Include the NULL Character.
      |                  ~~~~~~^~~~~~
```

3 years agoUpdate dependencies from https://github.com/dotnet/runtime build 20210103.3 (#46530)
dotnet-maestro[bot] [Mon, 4 Jan 2021 16:20:59 +0000 (16:20 +0000)]
Update dependencies from https://github.com/dotnet/runtime build 20210103.3 (#46530)

[master] Update dependencies from dotnet/runtime

3 years ago[mono] Fix DISABLE_REFLECTION_EMIT on netcore (#46443)
Ryan Lucia [Mon, 4 Jan 2021 15:04:34 +0000 (10:04 -0500)]
[mono] Fix DISABLE_REFLECTION_EMIT on netcore (#46443)

3 years agoRemove some dead stuff (#46494)
Dan Moseley [Sun, 3 Jan 2021 23:28:57 +0000 (15:28 -0800)]
Remove some dead stuff (#46494)

* Remove some dead stuff

* Remove unnecessary test

* Remove FCall alias

3 years ago[master] Update dependencies from dotnet/xharness dotnet/llvm-project dotnet/icu...
dotnet-maestro[bot] [Sun, 3 Jan 2021 12:05:56 +0000 (12:05 +0000)]
[master] Update dependencies from dotnet/xharness dotnet/llvm-project dotnet/icu dotnet/arcade (#46450)

[master] Update dependencies from dotnet/xharness dotnet/llvm-project dotnet/icu dotnet/arcade

 - Merge branch 'master' into darc-master-471b4a40-3bef-4a13-b73c-02196b660069

 - Merge branch 'master' into darc-master-471b4a40-3bef-4a13-b73c-02196b660069

3 years ago[llvm] Change branch weights for GC safe points to 1000:1, 64:4 seems to cause a...
monojenkins [Sun, 3 Jan 2021 00:06:21 +0000 (19:06 -0500)]
[llvm] Change branch weights for GC safe points to 1000:1, 64:4 seems to cause a warning from clang: (#46254)

warning: <unknown>:0:0: 94.12% (64 / 68)

Co-authored-by: vargaz <vargaz@users.noreply.github.com>
3 years agoremove lo argument in ArratSortHelper.DownHeap (#46503)
hrrrrustic [Sat, 2 Jan 2021 20:41:32 +0000 (15:41 -0500)]
remove lo argument in ArratSortHelper.DownHeap (#46503)

3 years agoFix building interp-whitebox test. (#46388)
monojenkins [Sat, 2 Jan 2021 19:37:53 +0000 (14:37 -0500)]
Fix building interp-whitebox test. (#46388)

<!--
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
-->

Co-authored-by: vargaz <vargaz@users.noreply.github.com>
3 years ago[jit] Make the stelem helper calls non-virtual if possible. (#46262)
monojenkins [Sat, 2 Jan 2021 16:30:18 +0000 (11:30 -0500)]
[jit] Make the stelem helper calls non-virtual if possible. (#46262)

Co-authored-by: vargaz <vargaz@users.noreply.github.com>
3 years ago[wasm] Handle the case when emscripten interleaves methods from multiple AOT images...
monojenkins [Sat, 2 Jan 2021 15:17:27 +0000 (10:17 -0500)]
[wasm] Handle the case when emscripten interleaves methods from multiple AOT images. (#46393)

<!--
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
-->

Co-authored-by: vargaz <vargaz@users.noreply.github.com>
3 years agoRemove MainAssembly parameter from WasmAppBuilder (#46453)
Mitchell Hwang [Fri, 1 Jan 2021 16:54:12 +0000 (11:54 -0500)]
Remove MainAssembly parameter from WasmAppBuilder (#46453)

Co-authored-by: Mitchell Hwang <mitchell.hwang@microsoft.com>
3 years agoFix arm64 wrong multireg copies from reg to small type field in memory (#46345)
Sergey Andreenko [Thu, 31 Dec 2020 22:47:14 +0000 (14:47 -0800)]
Fix arm64 wrong multireg copies from reg to small type field in memory (#46345)

* Add a repro.

* improve the test.

* Fix the issue and add a few comments.

* response review.

3 years agoApple Silicon Fix GCStressC (#46471)
Steve MacLean [Thu, 31 Dec 2020 17:32:12 +0000 (12:32 -0500)]
Apple Silicon Fix GCStressC (#46471)

* Fix W^X Thread::CommitGCStressInstructionUpdate()

* Fix RemoveGcCoverageInterrupt

* Fix PAL_DispatchException continueExecution

3 years agoRemove managed Mono.MonoDomainSetup class and MonoAppDomainSetup struct (#46472)
Aleksey Kliger (λgeek) [Thu, 31 Dec 2020 13:21:12 +0000 (08:21 -0500)]
Remove managed Mono.MonoDomainSetup class and MonoAppDomainSetup struct (#46472)

* [runtime] remove MonoDomain:setup field

* [CoreLib] Delete Mono.MonoDomainSetup

* [metadata] Use a System.Object sentinel object for MonoAppDomainSetup

Doesn't seem like we need any of this stuff on netcore

* [metadata] MonoAppDomainSetup struct is dead code on netcore

3 years agoAllow incremental servicing of packages and more packaging infra cleanup (#46447)
Viktor Hofer [Thu, 31 Dec 2020 10:20:46 +0000 (11:20 +0100)]
Allow incremental servicing of packages and more packaging infra cleanup (#46447)

* More packaging cleanup

* Add incremental package servicing throughout the repo

* Update dependencies to 6.0.0-beta.20630.3