Age | Commit message (Collapse) | Author |
|
* W^X support
This change is the last part of enabling the W^X support. It adds the
actual executable allocator that handles all double mapped memory
allocations and creating the writeable mappings.
The platform specific functionality is placed in a new minipal that is
going to be a basis for future removal of Windows APIs usage from the
native runtime.
The last state of the change was tested on all the platforms that we
support using coreclr pri 1 tests with both the W^X enabled and disabled
using the COMPlus_EnableWriteXorExecute variable.
The debugger changes were tested using the managed debugger testing
suite on Windows x64, x86 and on Apple Silicon so far. Further testing
on other platforms is in progress.
* Replace LeafLock in UMEntryThunkFreeList by a new lock
* Also allocate LoaderHeapFreeBlock from regular heap.
* Set the W^X default to disabled
|
|
|
|
* Fix PAL_JitWriteProtect export on Linux
I have not realized that we actually export that symbol on Linux too and
that mscordac then have the dummy function missing.
* Code review feedback
* Disable PAL_JitWriteEnable usage in DBI / DAC
* Fix typo in amd64 version
Co-authored-by: Mike McLaughlin <mikem@microsoft.com>
|
|
* Unify macOS ARM64 write protection holders with W^X ones
This change removes the original holders that were added for changing
memory protection for executable code and moves the actual switching to
the recently added W^X holders.
The unixexports files don't support target specific symbols. So I needed
to export a dummy version of the PAL_JitWriteProtect for macOS x64.
|
|
This change implements initial CoreCLR runtime support for static virtual interface methods and adds over 1700 test cases covering various aspects of this new runtime feature.
1) In the JIT, we are relaxing the assumption that ".constrained" must be always followed by a "callvirt" by allowing two more IL instructions to be constrained, "call" and "ldftn".
2) In the JIT interface, we're adding bits of code to CEEInfo::getCallInfo to properly handle the new static virtual methods. We're extending constrained method resolution to cater for the static virtual method case in a new method "ResolveStaticVirtualMethod".
3) In our work on the implementation we found a pre-existing JIT interface issue - the interplay between getCallInfo and embedGenericHandle doesn't work well in case of constrained calls as the existing API surface doesn't provide any means for communicating compile-time resolution of the constraint from getCallInfo to embedGenericHandle. In this change we're working around this by deferring to runtime resolution of the constraint in the presence of shared generics.
4) In the method table builder, we're newly tracking a flag saying whether we're implementing an interface declaring static virtual methods (fHasVirtualStaticMethods) that is used to speed up the runtime checks by skipping irrelevant interfaces.
5) For Crossgen / Crossgen2, this change only adds minimalistic support in the form of bailing out in getCallInfo whenever we hit a call to a static virtual method, cancelling AOT compilation of the caller and deferring it to runtime JIT.
|
|
* Add Objective-C interop support.
* Include handling of HNDTYPE_REFCOUNTED when FEATURE_OBJCMARSHAL is defined (#47534)
* Allow overriding of Objective-C message send P/Invokes (#47721)
* Add new flag to MethodTable for types with ObjectiveCTrackedTypeAttribute.
Discover attribute during type load and set bit.
Update EagerFinalizer callout to query bit.
* Add testing for API
* Bridge API for propagating managed exception to native.
* Update GCEE interface to support GCServer scenario for Objective-C.
The new callbacks now fire when before the GC scans handles and is
non-concurrent.
* Comment added for ExceptionTracker non-NULL condition.
Co-authored-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
Co-authored-by: Rolf Bjarne Kvinge <rolf@xamarin.com>
|
|
|
|
Now LC_RPATH for libmscordbi.dylib on macOS ARM64 is set to @loader_path again. This commit partly reverts #45978.
Similar to #50932.
|
|
build dependency issues. (#51254)
|
|
crosscomponent build. (#51004)
* Install crossgen, jitinterface, clrjit into the sharedframework folder.
* Remove unneeded dependency
* Add dac/dbi to cross-component sharedFramework folder.
* Don't install the cross-os dac in crosscomponents in cross-bitness scenarios.
* Jit Interface doesn't need to go into the sharedFramework folder (it wasn't there in 6.0.0p3)
|
|
system is untouched (#49906)
|
|
Co-authored-by: Juan Hoyos <juan.hoyos@microsoft.com>
|
|
* Support and prefer DOTNET_ prefix.
Add support for EnableDOTNETPrefix to disable respecting the DOTNET_ prefix.
Enable environment variable caching on non-Windows platforms.
|
|
* Delete unrechable code for emitting PE fixups and obj files
* Fold ICeeGen into ICeeGenInternal and change IID
|
|
* Add CoreCLR implementation of CallConvMemberFunction.
* Add tests and make a few fixes to get them passing.
* Fix Clang build
* Fix argument ordering for calling a cdecl or stdcall instance method from managed.
* Update src/coreclr/dlls/mscorrc/mscorrc.rc
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Fix UnmanagedCallersOnly instance method calls for stdcall and cdecl.
* Update issues.targets.
* Fix formatting.
* Add dummy param to validate param order. Rewrite traversal to second-to-last argument.
* Merge implementations of call conv modopt name comparison.
Use a macro-based implementation initially since it allows us to add new calling conventions by adding one line and the macro-ized code is relatively small.
* Fix assignment alignment.
* SAL and contracts.
* Add assert
* Fix UnmanagedCallersOnly parsing in the refactored parser.
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
|
|
* Embedding dac and other debugging resources into singlefilehost
* Embed DAC later, when it had a chance to be signed.
* MINIDUMP_EMBEDDED_AUXILIARY_PROVIDER
Co-authored-by: Juan Hoyos <juan.hoyos@microsoft.com>
* fix for cross builds
Co-authored-by: Juan Hoyos <juan.hoyos@microsoft.com>
|
|
Enable Hot Reload API on Linux
Only define EnC_SUPPORTED for vm/ee on xplat. Doesn't enable the ENC ICorDebug API.
Enable hotreload api tests on Linux/MacOS. API not implemented on arm/arm64
Remove all the ENC_DELTA_HACK code. Remove more ENC_DELTA_HACK code from ilasm
|
|
* building single file host with clr partition
* make coreclr_static a STATIC lib again
|
|
|
|
Emit (#47784)
- Add routine/lock for updating friend assemblies
- Unify all assembly handling custom attribute updates in the runtime
- This adjusts the handling of the DebuggableAttribute, which in the past would have worked even if it was applied to anything via the CustomAttributeBuilder apis
Co-authored-by: Krzysztof Wicher <kwicher@microsoft.com>
|
|
GetFullyQualifiedName returns special strings for modules without
paths. Those names are currently localized. To improve predictability,
this change removes localization for these strings.
|
|
* Exporting DotNetRuntimeInfo from singlefilehost
* move runtimeinfo into a separate lib
* enable runtimeinfo on macOS
* export only runtimeinfo
* fix FreeBSD build
* revert DLLEXPORT change
|
|
* Replace AWK with Bash scripts
* Replace awk usage with Bash or POSIX tr
* Simplify genmoduleindex.sh
|
|
* Fix macos DAC & DBI search dependency paths
* Only apply changes to macos-arm64
|
|
(src/coreclr/src becomes src/coreclr) (#44973)
* Move src/coreclr/src/Directory.Build.targets to src/coreclr
Merge src/coreclr/src/CMakeLists.txt into src/coreclr/CMakeLists.txt
* Mechanical move of src/coreclr/src to src/coreclr
* Scripts adjustments to reflect the changed paths
|