Age | Commit message (Collapse) | Author | Files | Lines |
|
Cross-Platform Sample-Based Profiler
|
|
The function was missing restoring of some callee saved registers
which caused crashes in Checked build and hang in Release build.
|
|
This message can be misleading, since it says "The specified module
could not be found", but it would also report case when the module
was found, but one of the module's dependencies were not found.
Multiple people in the past were hit by that when their module was
not loaded, they were thinking that there is some problem with
the path coreclr is loading modules from or something like that and
spent non-trivial amount of time trying to figure that out.
The fact that the module could have missing dependencies is really
not obvious.
So I am updating the message to reflect that fact.
|
|
Fix handling of empty environment variables in PAL
|
|
|
|
Remove in CMakeLists.txt
1) read cross-build from environment variable
2) read linux-id from file system
Instead, pass cross-build and linux-id from gen-buildsys-clang.sh using cmake arguments
|
|
1. Remove disable of C4996
|
|
JSON. SampleProfiler that globally suspends the runtime every 1ms to walk stacks and write them to the EventPipe.
|
|
* Fix Double.ToString performance on Linux and OSX
* some feedback fixes
* Remove the implementation depending on ecvt_r
|
|
2. delete some dead code
3. Remove implementation of GetOSVersion and hardcode OS version to be 0.0.0
4. Add implementation of IsWindows8OrAbove & IsWinrtSupported (donno why this was deleted earlier)
5. remove GetVersionEx from PAL
|
|
89 * 366 + 280 * 365 equals to 134774 (not 134744)
|
|
* Do NOT check execute bit in INIT_FindEXEPath
* Do NOT lookup path during PAL_Initialize
This commmit removes path lookup inside INIT_FindEXEPath, and renames
INIT_FindEXEPath as INIT_EXEPath.
|
|
memory limit in containers on linux
|
|
|
|
* Add handling of multiple CMake installations in probe-win
Check if multiple CMake versions are installed, and use by default the first path available
Fixes #8221
* Fix typo in value accessor
* Restore previous null check in probe_win
* Remove redundant assignment
|
|
pow(-1.0, ±∞). (#10295)
* Removing the special handling in classlibnative for atan2(±∞, ±∞) and pow(-1.0, ±∞).
* Fixing up the logic for HAVE_COMPATIBLE_POW in the PAL layer.
|
|
See #8321
|
|
|
|
|
|
|
|
* Switch to full 10.12
* Disable query performance counter test
|
|
Issue #9730
The output of the vmmap changed between OS X versions. Changed the sscanf formatting to deal with both old/new formats.
|
|
Improve span copy of pointers and structs containing pointers
Fixes #9161
PR #9786 fixes perf of span copy of types that don't contain references
|
|
Updating the build scripts to support VS2017.
|
|
* Add scripts for building for arm Android
* Use arm soft float for bringup
* Use NDK r14
* Set HAVE_PT_REGS to false, as they are not available on Android
* _aligned_alloc is not available on clang
* Detect Visual C++ instead of clang
* Detect Android instead of clang
|
|
* [x86/Linux] CDECL as default P/Invoke Calling Convetion
|
|
|
|
|
|
|
|
* [x86/Linux] Initial Filter Support
|
|
|
|
This restore the functionality lost by #9866 w/o functional
loss
|
|
Implement second-level card tables for non-Windows platforms
|
|
|
|
|
|
define & use PAL_ARCH_SOURCES_DIR in PAL CMakeLists.txt to build assembly based on platform architecture.
root/CMakeLists.txt defines ARCH_SOURCES_DIR based on target architecture.
|
|
|
|
|
|
gettimeofday() is currently used in DateTime.UtcNow. Depending on the system, it may have accuracy and precision in line with either clock_gettime(CLOCK_REALTIME) or clock_gettime(CLOCK_REALTIME_COARSE), but in returning its data it's necessarily limited by struct timeval's tv_usec field (microseconds), whereas clock_gettime uses struct timespec which has tv_nsec (nanoseconds). This commit switches to use clock_gettime(CLOCK_REALTIME) to gain the additional precision (though the FILETIME through which the data is returned only supports 100-nsec precision). On my machine, there was no measurable impact to throughput.
|
|
|
|
It turns out that the getcontext and setcontext that I have used in my stack
oveflow reporting change are not present e.g. on Alpine Linux or on Android.
So I am replacing their usage with RtlCaptureContext and RtlRestoreContext
instead.
I have also found that the addition of the .cfi_adjust_cfa_offset to the
PROLOG_SAVE_REG_PAIR has broken unwinding of all helpers that use
PROLOG_WITH_TRANSITION_BLOCK, because the PROLOG_STACK_ALLOC macro
updates the CFA offset. So I am fixing that by removing the CFA offset
updating from the PROLOG_STACK_ALLOC and adding explicit one to the
ARM64 CallSignalHandlerWrapper.
|
|
- Generate a simple EH funclet frame and support SP-based stack unwinding for funclets.
- Introduce assembly helpers : CallEHFunclet and CallEHFilterFunclet
|
|
* Android: workaround absence of getcontext/setcontext
use RtlCaptureContext and RtlRestoreContext
|
|
* Improve stack overflow reporting
This change modifies the SIGSEGV handling to use an alternate stack so that
we can safely detect and report stack overflow even in case when we are
really out of stack. Before, we were able to detect stack overflow and report
it only when JIT inserted stack probes (for functions with frames larger than
4kB) and so there was still space on the stack to run the sigsegv handler.
It brings in some additional complexity, since we need to switch to the original
stack of the thread once we figure out the sigsegv is not a stack overflow and
if we return from the hardware exception handler, we need to switch back to the
alternate stack before returning from the sigsegv handler.
Also, the alternate stack is created per thread and so we need to correctly destroy
it when a thread terminates and also install it on foreign threads that enter PAL.
This also requires creating fake stack frames to enable the libunwind to walk
the stack from the exception handler to the sigsegv location.
* Fix stack unwinding in CallDescrWorkerInternal
While testing the change to enable stack overflow handling, I've noticed that
the PROLOG_SAVE_REG_PAIR and PROLOG_SAVE_REG_PAIR_INDEXED macros are missing
.cfi_def_cfa_register fp. That resulted in inability to unwind through the
CallDescrWorkerInternal, since this function dynamically allocates stack slots
and so the default sp based frame doesn't work.
|
|
|
|
* [Arm64/Unix] Update arm64 *.S files to match *.asm
* [Arm64/Unix] Fix CONTEXTToNativeContext()
* [Arm64/Unix] ThrowExceptionFromContextInternal
* [Arm64/Unix] Preserve x8 argument register
* [ARM64/Unix] Add CFI directives
Add native unwind info
* [Arm64/Unix] Fix RtlRestoreContext
* [Arm64/Unix] Restore FP from CurrentContextPointers
* [Arm64/Unix] fix pointer math
* [Arm64/Unix] Fix CallDescrWorkerInternal personality
* [Arm64/Unix] More Fp fixups
* [Arm64/Unix] CallEHFunclet machine state
Restore non-volatile machine state in CallEHFunclet
* [Arm64/Unix] CallDescrWorkerInternal
Use empty stack slot to save argument
* [Arm64/Unix] RtlVirtualUnwind update pointers
* [Arm64] LazyMachState fixes
* [Arm64/Unix] disable USE_REDIRECT_FOR_GCSTRESS
When FEATURE_PAL is enableds USE_REDIRECT_FOR_GCSTRESS
is not supported
* [Arm64] ClearRegDisplayArgumentAndScratchRegisters()
* [Arm64] Remove unnecesary copy in TransitionFrame
* [Arm64/Unix] Fix comment per review
* [Arm64/Unix] move constants per review
* [Arm64/Unix] Use ldp per review
Also fix indentation
* [Arm64/Unix] Fix indentation per review
* [Arm64/Unix] Remove m_Unwound per review comments
* [Arm64/Unix] Use PREPARE_EXTERNAL_VAR to access globals
* [Arm64/Unix] Fix more whitespace per earlier review comments
|
|
* [x86/Linux] Fix GetCallerSp
* Do NOT pop stack argument for TransitionFrame
* Add ResumeEsp to CONTEXT
|
|
|
|
|
|
|