Age | Commit message (Collapse) | Author |
|
Otherwise the script will not replace the variable and we get confusing error messages like this:
```
[command]/bin/bash --noprofile --norc /home/builder/azdo/_work/_temp/ba0890e7-8c80-4245-b9dc-14253b0d399f.sh
/home/builder/azdo/_work/_temp/ba0890e7-8c80-4245-b9dc-14253b0d399f.sh: line 2: llvm: command not found
/home/builder/azdo/_work/_temp/ba0890e7-8c80-4245-b9dc-14253b0d399f.sh: line 2: [: =: unary operator expected
```
|
|
|
|
Resolves https://github.com/mono/mono/issues/17288 where RequestUri
in HttpRequestMessage did not allow file:// based Uri's the same
way its constructor did.
|
|
Get notifications for various files in metadata
|
|
- Microsoft.Private.CoreFx.NETCoreApp - 5.0.0-alpha1.19513.1
|
|
- Microsoft.NETCore.App - 5.0.0-alpha1.19514.1
|
|
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.19511.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.19511.1
|
|
- Microsoft.Private.CoreFx.NETCoreApp - 5.0.0-alpha1.19508.3
|
|
- Microsoft.NETCore.App - 5.0.0-alpha1.19508.2
|
|
See https://github.com/mono/mono/pull/17232#issuecomment-541973035.
|
|
(#17318)
CoreCLR doesn't suspend threads on exit (https://github.com/dotnet/corefx/pull/41450#issuecomment-536755093, https://github.com/dotnet/coreclr/pull/1813).
Fixes #17317
Fixes #15006
Fixes #15010
Fixes #15181
Unblocks #17232
|
|
It is still used by the non-pipeline PR builds (we should unify this at some point).
|
|
|
|
|
|
* This adds the ability to continue loading the application even though the .pdb files are not found.
When uploading an app built with mono-wasm the `.pdb` may not get committed so they will not exist when trying to load them.
- Add new boolean variable to MONO library support to control skipping these files on errors.
- `mono_wasm_ignore_pdb_load_errors` default is true
- Modify the assembly file fetching routine `mono_load_runtime_and_bcl` within our MONO module.
- Allows skipping the .pdb files if the `mono_wasm_ignore_pdb_load_errors` flag is true.
|
|
The previous one was broken.
|
|
|
|
|
|
|
|
|
|
As of https://github.com/dotnet/coreclr/pull/27090
|
|
|
|
As requested by the xamarin-macios team.
|
|
* [System.Net.Http] Clean up HttpMessageHandler setup
to avoid reflection and not to be recursive
Superseded #15051 and #15922
* [csproj] Update project files
|
|
* Enable fast-paths on Mono for Array (dotnet/coreclr#27144)
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
* [CoreLib] Remove String fields moved to shared
* Stub Array Try* methods
|
|
|
|
gcc-specific impl. (#16855)
* Remove unused mono_class_get_field_from_name_cached.
* Replace gcc-specific:
mono_array_class_get_cached
mono_array_new_cached
mono_array_new_cached_handle
with portable forms that are easy enough to use and general enough.
Before was "easier" because cache provided for you -- possibly multiple.
Before was more general because rank was a parameter -- and had to be a constant.
It was always 1.
|
|
* Enable more hw intrinsics for AOT
* Address feedback
* does it fix the failure?
* fix loadedllvm
* Address feedback
* fix copy-paste
* forgot MONO_LLVM_INTERNAL
|
|
app (#17261)
* [sdks] properly shutdown runtime for Mono.Debugger.Soft test app
mini_jit_cleanup will cause mono_runtime_try_shutdown to be called before
mono_runtime_quit which will set the shutting down flags in the runtime.
* [test] Re-enable disabled tests
|
|
* 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.
|
|
* Bump corefx to get Azure testhost change
See https://github.com/mono/corefx/pull/360
* Update ClientWebSocketTest as well
|
|
(#25508)
* Rewriting the ARM64 HWIntrinsic JIT infrastructure to share with and mirror the x86 infrastructure where possible.
* Lowercasing the hwintrinsicarm64 and hwintrinsiclistarm64 files.
* Applying formatting patch.
* Fixing up some names in the PAL and VM that were missed.
* Adding support for AdvSimd.Add
* Ensure impSpecialIntrinsic returns nullptr for unsupported base types.
* Rewording various method headers and simplifying some code.
* Fixing getEmitter to GetEmitter
* Adding support for the ld1 instruction
* Applying formatting patch
* Clarifying a todo comment and removing a stray newline
* Fixing the Arm64 impSpecialIntrinsic to not assert for helper intrinsics
* Fixing some intrinsic signatures that were incorrect
* Adding the initial template files for generating Arm HWIntrinsic tests
* Generating the initial batch of Arm HWIntrinsic tests
* Replace gtRegNum with GetRegNum()
* Fixing the test template alignment checks for Arm
* Regenerating the Arm HWIntrinsic tests
* Fixing the namespace checked for Arm intrinsics
* Changing Base to ArmBase and fixing some Arm hwintrinsic metadata
* Fixing the arm emitter and lowering to not assert for hwintrinsics
* Fixing the arm intrinsics to not set the number of vector elements for SIMDScalar intrinsics
* Updating the AdvSimd.Abs tests to use negative input values
* Regenerating the arm hwintrinsic tests
* Fixing the arm hwintrinsic codegen to use the element size for simd scalar operations.
* Fixing the arm scalar intrinsic tests to check for 0 on upper bits
* Regenerating the ARM intrinsic tests
* Fixing AdvSimd.AbsScalar and AdvSimd.AddScalar to be recursive
* Marking AdvSimd.Arm64 and ArmBase.Arm64 as implemented
* Ensure that AdvSimd.Arm64.Abs is marked as variable size
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
|
|
|
|
* [interp] Replace STLOC to dead local with MINT_POP
* [interp] Optimize MINT_POP
It was only used for 0 and 1 values. The implementation for values larger than 1 was broken anyway.
* [interp] Remove unnecessary usage of MINT_POP1
When storing a static field from a CEE_STFLD instruction.
* [interp] Prevent optimizing away the stack, after a branch
We know the contents of the stack following a branch, so we could have optimized away some instructions preceding the branch. We shouldn't do this because the code we are branching to expects a certain stack size.
* [interp] Clear instructions which push unused values on stack
* [interp] Properly initialize stack when pushing local
|
|
|
|
to platform handler. This simplifies HttpClientHandler in shared libraries
and the "default" socket handler would always throw PNSE anyway
|
|
|
|
type. (#17227)
* Incorrect constrained virtual call in method using gsharedvt for reference type.
For generic constrained virtual calls using reference type's, the
virtual call will be dispatched using instance vtable. When the same
virtual call is taking place in a gsharedvt method, mono_gsharedvt_constrained_call
gets called that will assist making the call, the problem is that it will
use the constrained class for reference types meaning that it will not call
the most derived implementation of the method. This difference in the behavior
compared to none gsharedvt versions of methods, gives inconsistent results.
One way this will reproduce is by using Dictionary<Type, EmptyStruct>. For
methods that will take both Type (reference type) and EmptyStruct (value type)
like Add, calling that through IDictionary (hiding details from compiler) will
use the gsharedvt version of the method. Internally that method will call
Type.GetHashCode (), and since Type really is a RuntimeType it overrides
GetHashCode. But since mono_gsharedvt_constrained_call will use the constrained
class instead of the instance class, the called method will be
Object.GetHashCode, that gives a different result. When later ContainsKey
is called using the same Type, it only takes a reference value, so not
using a gsharedvt version of the method, then the most derived version of
GetHashCode will be called, given a different hash, not finding item
in dictionary.
Fix is to make sure behavior in mono_gsharedvt_constrained_call match
behavior for regular constrained virtual calls when having a reference type.
This makes sure we always call the most derived version of the method.
Commit also adds a test for this specific scenario using a dictionary.
* Updated to a more low-level test.
|
|
* [mini] trace snippet should restore return value
This is a problem on architectures with a floating point stack (x86).
Without this PR and without `--trace` the managed-to-native wrapper for `Math.Ceiling` has a basic block like this at the end:
```
AFTER LOWER-VTYPE-OPTS 4: [IN: BB6(5) BB3(1), OUT: BB1(3) ]
fmove R34 <- R16
ldaddr R35 <- R10
load_membase R37 <- [R35 + 0x0]
store_membase_reg [R36] <- R37
il_seq_point il: 0x2d
```
`R16` contains the return value. `ldaddr`/`load_membase`/`store_membase_reg` is the sequence for LMF popping. `mono_spill_global_vars` does this with it:
```
SPILL BLOCK 4:
fmove R34 <- R16
ff 34 16
0 loadr8_membase R34 <- [%ebp + 0xffffffd4]
1 nop
ldaddr R35 <- R10
ii 35 5
1 add_imm R35 <- %ebp [-36] clobbers: 1
load_membase R37 <- [R35 + 0x0]
ii 37 35
1 load_membase R37 <- [R35 + 0x0]
store_membase_reg [R36] <- R37
ii -1 37
1 store_membase_reg [%edi] <- R37
il_seq_point il: 0x2d
-1
1 il_seq_point il: 0x2d
```
The local register allocator takes care of the FP stack handling:
```
processing: 0 loadr8_membase %fr0 <- [%ebp + 0xffffffd4]
[%fr0]
processing: 0 load_membase %eax <- [%ebp + 0xffffffdc]
[%fr0]
processing: 0 store_membase_reg [%edi] <- %eax
[%fr0]
processing: 0 il_seq_point il: 0x2d
[%fr0]
```
At the end of the basic block we have one value left on the FP stack. That's good as we are in the `cfg->bb_exit` basic block, so this is ought to be the return value.
Let's enable `--trace=M:System.Math:Ceiling`. It will insert some code in order to copy arguments/return value to some datastructure that can then be printed by the trace code:
```
processing: 0 loadr8_membase %fr0 <- [%ebp + 0xffffffd4]
[%fr0]
processing: 0 iconst %eax <- [11116832]
[%fr0]
processing: 0 iconst %eax <- [52]
[%fr0]
processing: 0 localloc_imm %eax <-
[%fr0]
processing: 0 localloc_imm %ecx <-
[%fr0]
processing: 0 store_membase_reg [%eax + 0x30] <- %ecx
[%fr0]
processing: 0 x86_lea_membase %edx <- %ebp
[%fr0]
processing: 0 store_membase_reg [%ecx] <- %edx
[%fr0]
processing: 0 store_membase_imm [%eax + 0x28] <- [11116832]
[%fr0]
processing: 0 storer8_membase_reg [%ebp + 0xffffffcc] <- %fr0
[]
processing: 0 x86_lea_membase %ecx <- %ebp
[]
processing: 0 store_membase_reg [%eax + 0x2c] <- %ecx
[]
processing: 0 store_membase_reg [%esp + 0x4] <- %eax
[]
processing: 0 store_membase_imm [%esp] <- [11116832]
[]
processing: 0 voidcall [mono_trace_leave_method] clobbers: c
[]
processing: 0 x86_lea_membase %eax <- %ebp
[]
processing: 0 load_membase %eax <- [%ebp + 0xffffffdc]
[]
processing: 0 store_membase_reg [%edi] <- %eax
[]
processing: 0 il_seq_point il: 0x2d
[]
```
At the very beginning we push some value on the FP stack, same as before. However the code inserted by the tracing code will pop that value. Now, when returning to the, it will pop again something from the FP stack, but alas it's gonna be garbage.
With this PR it looks like this:
```
processing: 0 loadr8_membase %fr0 <- [%ebp + 0xffffffd4]
[%fr0]
processing: 0 iconst %eax <- [11116832]
[%fr0]
processing: 0 iconst %eax <- [52]
[%fr0]
processing: 0 localloc_imm %eax <-
[%fr0]
processing: 0 localloc_imm %ecx <-
[%fr0]
processing: 0 store_membase_reg [%eax + 0x30] <- %ecx
[%fr0]
processing: 0 x86_lea_membase %edx <- %ebp
[%fr0]
processing: 0 store_membase_reg [%ecx] <- %edx
[%fr0]
processing: 0 store_membase_imm [%eax + 0x28] <- [11116832]
[%fr0]
processing: 0 storer8_membase_reg [%ebp + 0xffffffcc] <- %fr0
[]
processing: 0 x86_lea_membase %ecx <- %ebp
[]
processing: 0 store_membase_reg [%eax + 0x2c] <- %ecx
[]
processing: 0 loadr8_membase %fr0 <- [%ebp + 0xffffffcc]
[%fr0]
processing: 0 store_membase_reg [%esp + 0x4] <- %eax
[%fr0]
processing: 0 store_membase_imm [%esp] <- [11116832]
[%fr0]
processing: 0 voidcall [mono_trace_leave_method] clobbers: c
[%fr0]
processing: 0 x86_lea_membase %eax <- %ebp
[%fr0]
processing: 0 load_membase %eax <- [%ebp + 0xffffffdc]
[%fr0]
processing: 0 store_membase_reg [%edi] <- %eax
[%fr0]
processing: 0 il_seq_point il: 0x2d
[%fr0]
```
Leaving us the return value on the FP stack before returning.
Fixes https://github.com/mono/mono/issues/16410
|
|
Fix g_assert_not_reached message regression.
|
|
Running these tests makes the application crash, probably at shutdown. Even if the tests are reported as passing, check if disabling them fixes the suite timeout on android osx sdks.
|
|
Remove varargs from g_assert and g_assert_not_reachable (save 200+ bytes per frame in wasm interp).
g_assertf unchanged.
I have a strong suspicion, this will save approximately 432 - sizeof (InterpFrame) bytes of stack
per function call in the WebAssembly interpreter.
It will not significantly benefit or hurt any other system.
Systems with disabled asserts will receive a small size improvement.
WebAssembly has no provision for varargs.
Emscripten emulates it.
It appears the emulation allocates room in the frame per outgoing varargs call.
No stack packing.
So each g_assert takes space.
Alternative would be to discourage or disable or remove asserts.
|
|
two dates with same kind (UTC) to avoid unexpected results (#17162)
Fixes #17161
|
|
* [Mono.Posix] Add support for memfd_create() and file sealing
Add the linux syscall memfd_create() and add support for file sealing with
fcntl().
* Bump API snapshot submodule
|
|
[mini] print inserted instruction in verbose logging
before:
```
fmove R11 <- R9
ff 11 9
1 nop
```
after:
```
fmove R11 <- R9
ff 11 9
0 loadr8_membase R11 <- [%ebp + 0x8]
1 nop
```
|
|
* Fix check for FastAllocateString that used old name
* Fix linker scripts
* Update the icall name for FastAllocateString to match managed name
* Update size check in managed allocator
* One more 64-bit target fix
|
|
When doing memory copy dest is the destination address and src is the source address. If we are copying a single reference, we need to emit a write barrier and pass to the write barrier the value, not the pointer where the value is stored.
|
|
* Add drawing type converters to mobile profiles
Needed for https://github.com/xamarin/xamarin-android/issues/3726
* Bump API snapshot submodule
* [csproj] Update project files
|
|
|
|
Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
|