Age | Commit message (Collapse) | Author | Files | Lines |
|
* Introduce FEATURE_GDBJIT_SYMTAB
This commit adds new feature FEATURE_GDBJIT_SYMTAB. When it's set
ELF file with symtab section will be generated for all JITed methods.
It helps lldb and gdb correctly unwind frames of JITed methods as they
can use assembly language inspection to determine location of saved
registers on stack.
* gdbjit symtab feature: use different symbols for each function in JITed code
|
|
* [GDBJIT] Specify C# language in DWARF debug information
To correctly support C# language in lldb DWARF debug information
should contain correct information about language.
Now we use 0x9e57 constant for specify C# language.
* [GDBJIT] Introduce FEATURE_GDBJIT_LANGID_CS
If this feature is set gdbjit will use 0x9e57 as c# lang id,
otherwise it will use DW_LANG_C89.
|
|
* Remove always defined FEATURE_RANDOMIZE_STRING_HASHING
* Fully remove randomized hashing
* Leftovers
* Remove additionalEntropy from HashSortKey as it was always 0
* Remove additionalEntropy from HashString as it was always 0
* Change to private, as not in fact called by reflection in .NET Core
* Fix build break due to FCDECLn
* Revert removed QCALL
* Remove unused strlen parameter
|
|
* [Local GC] Build the GC using system headers
* Disable features to get the GC to build
* Get rid of the separate 'GC PAL' build
* Remove unused stuff
* Don't build gcenv.os.cpp when linking in a standalone gc
* Stub out CPUGroupInfo and NumaNodeInfo
* Stub out IsGCThread and friends
* Build the GC as a shared library :tada:
* Build, link, and run! :tada:
* Fix standalone GC build break
* Fixes where the GC's MethodTable and VM's MethodTable classes disagree
* Integrate a standalone GC into the CoreCLR build system (so it gets copied to the output folder). Re-enable some ifdef-ed out includes that are required for a non-standalone build of the GC.
* Bring changes to Unix and fix the Unix build. Implement some compiler intrinsic wrappers and alignment functions expected by the GC.
* Fix the Windows build
* 1. Code review feedback: use standard types for BitScanForward and
BitScanForward64
2. Delete FEATURE_COM stuff from the build system, not needed for this
PR
3. Fix the Unix build
* Fix the Windows x86 build - the _BitScanForward64 intrinsic is not available when targeting 32-bit platforms
* Remove a number of things from gcenv.base.h that are not used
* Remove a linker workaround now that we are not linking a standalone GC into the runtime
* Remove dead code, make the lack of GC_PROFILING for standalone gc not break profiling on the non-standalone build
* Code review feedback - use add_library_clr and other cmake-related fixes
* Fix include indentation
* Remove some extraneous parameters to cmake functions (cmake is remarkably lenient...)
|
|
* Add COMPlus_GDBJitElfDump
* Fix Release build error
* Add flags in EEConfig
|
|
Implement out of context stack unwinder
Decode the eh frame info found in the in-memory module image
and pass it back to the remote libunwind8 to do the unwind.
Added remote-unwind.cpp for all the out of context unwind code.
Added an all managed threads option -all the "clrstack" (sos ClrStack).
The IDebugDataTarget4 feature needs to be enabled for OS X.
Add libunwind license notice to third party notices file.
|
|
This makes tiered compilation work properly with profiler ReJIT, and positions the runtime to integrate other versioning related features together in the future. See the newly added code-versioning design-doc in this commit for more information.
Breaking changes for profilers: See code-versioning-profiler-breaking-changes.md for more details.
|
|
Fixes #11611. The old hand generated assembly path did not work well for structs passed by reference.
|
|
Re-Factor EventSource to Support Writing to EventPipe.
|
|
* Add FEATURE_NI_BIND_FALLBACK support
* Fix incorrect variable setup
* Negate the check condition
* Use WIN32 instead of FEATURE_PAL
* Check WIN32 first, and FEATURE_NI_BIND_FALLBACK later
|
|
* Implement the EventPipe object model for providers and events.
* Plumb Runtime Events into EventPipe (#11145)
Plumb runtime ETW events into the EventPipe.
* Fix bug where all events except for SampleProfiler events were never enabled.
* Plumb EventPipeEventInstance through the EventPipe.
* Implement EventPipeFile and FastSerializer.
* Write event contents to the EventPipeFile.
* Only build EventPipe on Linux.
* Conditionally add a sentinel value marking event end.
* Send SampleProfiler events to the EventPipeFile.
* Fix provider ID printing to JSON file.
* Write the start date/time, timestamp, and clock frequency into the trace file.
* Support unloading of EventPipeProviders.
* Handle failure cases when we can't walk the stack or are shutting down.
* Fix a bug where we pass a null src pointer to memcpy.
|
|
* [Arm64/Unix] Enable FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP
* [Arm64/Unix] Enable FEATURE_MANUALLY_MANAGED_CARD_BUNDLES
|
|
These changes remove support for the x86 compat JIT from the build, the
runtime, and the various perf/test scripts.
Fixes #10733, #10734.
|
|
* Allow FEATURE_INTERPRETER to be enabled by command-line option
* Set FEATURE_INTERPRETER as 0
|
|
|
|
|
|
* Build libcoreclrtraceptprovider.so for ARM32 and modify cmake
- Build libcoreclrtraceptprovider.so for ARM32
- Include libcoreclrtraceptprovider.so in nuget package
- Don't build libcoreclrtraceptprovider.so for
Tizen: lttng is not supported in Tizen
- Exclude packaging libcoreclrtraceptprovider.so based on os-name
excluded for tizen
* Remove libcoreclrtraceptprovider.so before test for ARM32/Linux
Remove libcoreclrtraceptprovider.so before test for ARM32/Linux in CI
CI test environment using docker with qemu has some problem to use lttng library
|
|
JSON. SampleProfiler that globally suspends the runtime every 1ms to walk stacks and write them to the EventPipe.
|
|
Tiered compilation is a new feature we are experimenting with that aims to improve startup times. Initially we jit methods non-optimized, then switch to an optimized version once the method has been called a number of times. More details about the current feature operation are in the comments of TieredCompilation.cpp.
This is only the first step in a longer process building the feature. The primary goal for now is to avoid regressing any runtime behavior in the shipping configuration in which the complus variable is OFF, while putting enough code in place that we can measure performance in the daily builds and make incremental progress visible to collaborators and reviewers. The design of the TieredCompilationManager is likely to change substantively, and the call counter may also change.
|
|
Enable Windows hosted, Linux target amd64 altjit
With this change, we build a JIT that runs on Windows amd64
and targets Linux amd64, as an altjit named linuxnonjit.dll.
This is useful for debugging, or generating asm code or diffs.
You can even easily create Windows/non-Windows asm diffs
(either to compare the asm, or compare the generated code size).
For this to work, the JIT-EE interface method
getSystemVAmd64PassStructInRegisterDescriptor() was changed
to always be built in, by defining `FEATURE_UNIX_AMD64_STRUCT_PASSING_ITF`
in all AMD64 builds. The `_ITF` suffix indicates that this is
functionality specific to implementing the JIT-EE interface
contract. There were many places in the VM that used this
interchangeably with `FEATURE_UNIX_AMD64_STRUCT_PASSING`. Now,
`FEATURE_UNIX_AMD64_STRUCT_PASSING` means code in the VM needed
to implement this feature, but not required to implement the
JIT-EE interface contract. In particular, MethodTables compute
and cache the "eightbyte" info of structs when loading a type.
This is not done when only `FEATURE_UNIX_AMD64_STRUCT_PASSING_ITF`
is set, to avoid altering MethodTable behavior on non-Unix
AMD64 builds. Instead, if `getSystemVAmd64PassStructInRegisterDescriptor()`
is called on a non-Unix build (by the altjit), the `ClassifyEightBytes()`
function is called, and nothing is cached. Hopefully (though it was
hard for me to guarantee by observation), calling `ClassifyEightBytes()`
does not have any side effects on MethodTables. It doesn't really matter,
since if called for altjit, we don't care too much about running.
The previously used `PLATFORM_UNIX` define is now insufficient.
I introduced the `#define` macros `_HOST_UNIX_` to indicate the
JIT being built will run on Unix, and `_TARGET_UNIX_` to indicate
the JIT is generating code targeting Unix. Some things were
converted to use the `UNIX_AMD64_ABI` define, which makes more
sense.
|
|
Implement second-level card tables for non-Windows platforms
|
|
|
|
This change fixes a mismatch in the cmake script endif condition introduced
by #9809.
|
|
* Disable DBGIPC_TRANSPORT_DI and DBGIPC_TRANSPORT_VM on Android
|
|
* [x86/Linux] Enable FEATURE_ARRAYSTUB_AS_IL
* Move FeatureStubsAsIL into Windows-specific block
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Fix ABI flag based on target
- Exclude corefx for cross-architecture component
|
|
platforms (#8976)
* Add way to build with FEATURE_STANDALONE_GC from build.sh
* Make CMake changes to build the GC 'PAL' as its own build target (to avoid -nostdinc).
In addition, introduce a "GC PAL" that provides an implementation of
GCToOSInterface on Unix-like platforms, for use with
FEATURE_STANDALONE_GC.
|
|
Add UNIX_X86_ABI definition for Unix/Linux specific ABI parts
First will be for 16 byte stack alignment codes
|
|
This feature is always defined and the PAL functions that would be used
if the feature was not defined are not in PAL anymore.
|
|
Found sos portable pdb problem on x86. Fixed interop problems between the native sos and SOS.NetCore managed helper assembly.
|
|
* Re-introduce changes lost in a merge conflict
* Enable GCToOSInterface to be defined behind the GC interface
when building the GC in standalone mode. Provide a skeleton Windows
implementation and the framework for a Unix implementation.
* Address code review feedback
|
|
Mostly:
- Exposed flow-related methods on `ExecutionContext`
- Enabled and exposed `SynchronizationContext` wait overriding
Realted issues:
- dotnet/corefx#11638
- dotnet/corefx#11633
- dotnet/corefx#11635
- dotnet/corefx#11636
- dotnet/corefx#13484
|
|
|
|
This change enables build of CoreCLR on Alpine Linux. Here is the list
of changes:
- Disable asserts checking RSP in arbitrary threads against cached stack limit
for the respective thread. The stack on Alpine obviously grows over the limit
reported by the pthread functions.
- Disable using XSTATE. This should be re-enabled after MUSL gets the _xstate,
_fpx_sw_bytes and related data structures added to the signal.h header.
- Disable setting rlimit of RLIMIT_NOFILE to the max value, since it breaks
debugging for some reason.
- Add skipping over the hardware signal trampoline in the PAL_VirtualUnwind.
While we were not trying to walk over it in a simple case, in a case where
an exception was thrown from a catch handler of a hardware exception, we
still attempted to walk over it and it fails on Alpine.
- Fix detection of Alpine Linux in the PAL's CMakeLists.txt so that it works
in Docker containers too.
- Modified PAL_VirtualUnwind to make the check for unwinding past the bottom
of the stack unconditional. We had a long list of platforms where we were
doing this check and it doesn't hurt to do it on platforms where it is not
needed. I have done that rather than adding a check for Alpine Linux as
another platform that needs it.
|
|
|
|
executables on Nano Server (#7317)
Needed to add back a dummy version of ICorDebugLegacyNetCFHostCallbackInvoker_PrivateWindowsPhoneOnly interface so
VS doesn't get the QI failure and stop working by not calling the "Continue" method.
Issue #7316
|
|
|
|
This commit enables FEATURE_STUBS_AS_IL for ARM/Linux. This commit
tries to fix #6452.
|