Age | Commit message (Collapse) | Author | Files | Lines |
|
* Enables whole program optimization for release configuration
on Windows.
* Fixes all messages "/LTCG specified but no code generation required;
remove /LTCG from link command line to improve linker performance"
which slow down the build process.
* Fixes all messages "MSIL .netmodule or module compiled with /GL
found; restarting link with /LTCG; add /LTCG to the link command
line to improve linker performance" which slow down the build
process.
* The previous two fixes work in Release and Debug builds on Windows.
Issue-URL: #1086
|
|
allowing them to be used side by side with c++11 headers.
Contains few fixes to PAL library as well.
|
|
Without this, ctrl-C will not interrupt a program, nor
will Console.CancelKeyPress in corefx work.
|
|
Add PAL error message strings
|
|
|
|
This change adds PAL error message strings to PAL. Until now, the
FormatMessage in PAL formatted the PAL error codes as "Error xxx".
With this change, it inserts textual form of the messages.
|
|
Now that the default string resources are embedded in the libcoreclr, it is no longer necessary to
set the LC_MESSAGES locale to en_US in the PAL.
|
|
Not all platforms have bash in /bin/.
Documentation added to the general FreeBSD build-instructions.
|
|
Enable ReadyToRun feature on Unix
|
|
This change enables building the ReadyToRun feature on Unix systems.
|
|
Take the resources in RC files and build a static library that contains
the ID->English string mappings. Use those strings as the key to gettext
so that when gettext is not able to find a suitable string in the desired
language, it falls back on returning the English string.
|
|
|
|
Fix OSX personality routines encoding
|
|
This change fixes a crash that occured in case a managed callback
called from a native code throws an exception. The correct behavior
is to exit the process and dump the managed call stack. It works ok
on Linux, but on OSX, it crashes with segmentation violation trying
to execute code at address 4.
The problem is caused by the fact that either the assembler or
the linker ignores personality routines specified using the encoding
0 (absolute pointer) and stores value 4 instead of the routine address
no matter what routine is specified.
Fortunatelly, there is another encoding that can be used and that works.
It is an indirect PC relative encoding (code 0x9b).
However, there is another problem. The linker issues a warning when there
are more than 3 personality routines in the whole libcoreclr.dylib:
ld: warning: too many personality routines for compact unwind to encode
As for now, I have removed the ExceptionHijackPersonalityRoutine from
the ExceptionHijack asm helper to fix this problem.
We will need to figure out what to do about it once we enable the thread
hijacking on Unix. This personality routine's purpose is to make stack
walker walk stack of a highjacked function as if the highhack routine was
called from it. It seems we can use a different technique for that -
to create a helper frame that would have IP pointing to a function that
is never called, but has an unwind info that ensures that we walk
through the hijack correctly. The same technique is used for hardware
exception handling on OSX.
|
|
Export OpenSemaphoreW from PAL
|
|
Fix VM total space issue
|
|
This change fixes an issue that caused brick table corruption due to
an incorrectly reported VM total space and the gc_heap::grow_brick_card_tables
not being resilient against that.
This change updates the GlobalMemoryStatusEx PAL function to return appropriate
VM user space size value and also modifies the gc_heap::grow_brick_card_tables
so that in case an end address of a new GC heap segment is larger than the
approximate maximum obtained using the GlobalMemoryStatusEx, we don't
clip down the range that the new card_table / brick_table will cover.
Otherwise an object allocated above that range would cause indexing into the
card_table to overrun the end of the table.
|
|
Semaphore.OpenExisting uses OpenSemaphoreW from the PAL, but it's not being exported, resulting in EntryPointNotFoundExceptions.
|
|
Add ability to use pipes for creating threads suspended
|
|
Remove USE_PIPES_FOR_CREATING_SUSPENDED_THREADS and just enable it for all
the platforms. Previously, it was disabled on Darwin.
|
|
Included build instructions for FreeBSD on how to
manually build and install LLDB on FreeBSD STABLE
Included FreeBSD LLDB install script
Fixed spacing issues
Fixed installation formatting
|
|
Added the ability in PAL to create a thread in suspended state by
specifying a pipe which ResumeThread will write to in order to
wake it up. This functionality is protected behind
USE_PIPES_FOR_CREATING_SUSPENDED_THREADS which is enabled on
everything except Darwin.
|
|
Merge changes from TFS
|
|
[tfs-changeset: 1466545]
|
|
|
|
|
|
Add -Bsymbolic linker option to prevent static variables from being shared across PAL instances
Install coreclrpal and palrt libraries so VS has easy access to link against them.
Don't install the debug-pal library to binary directory.
Fix "corerun" lldb test command.
|
|
This change fixes a new bunch of warnings that were recently introduced
unnoticed to the coreclr / pal. Also, I've discovered that in release build,
there are some additional warnings, so I've fixed them as well.
I have also added a compiler switch to treat warnings as errors so that
we catch a new issue right away next time.
|
|
|
|
- Crossgen is now built as part of coreclr
- Crossgen successfully compiles mscorlib.dll
- Resulting mscorlib.ni.dll not yet usable
|
|
Make DbgShim really useful for managed attach on Linux
|
|
|
|
|
|
Go back to a statically linked PAL (issue #728).
|
|
Add back setting locale for gettext
|
|
Add back setting locale for gettext that was accidentally removed by change #736
|
|
Cleanup signal handling. Make sure the default signal action will happen if no previous handler by restore the signal and returning from the handler restarting the h/w exception.
|
|
Handle threads in side-by-side statically linked PALs
|
|
Create CPalThread object on the fly in InternalGetCurrentThread. SIGUSR1/SIGUSR2 are needed by the PAL thread suspend/resume logic. Enable them for PAL_InitializeDLL. Added an assert and ExitProcess to the on the fly CPalThread data allocation failure path.
Fixed a problem introduced in #807. HandleSuspendSignal and HandleResumeSignal needed to indicate whether to chain or continue the SIGUSR1/2 signal.
|
|
pass arguments to real scanf functions
|
|
|
|
This closes https://github.com/dotnet/coreclr/issues/801
|
|
Fixes issue #801 which was caused by the CoreCLR and PAL being
dlopened, but pthread not being initialized by the runtime linker yet.
FreeBSD requires that the main executable load pthread, rather than a
downstream dependency. Also fixed a few missing calls to pthread_attr_init
which was causing asserts() on FBSD.
|
|
Previous it was required to have VS2013 but now VS2015 can also be used. The default is still 2013 though.
On a machine with both version installed it is possible to force VS2013/VS2015 with a parameter.
Note: Still some work has to be done to make compilation successfull on VS2015.
|
|
Implemented hardware exception chaining.
|
|
This change fixes a bug in the OSX hardware exception handling. The catch_exception_raise
function in machexceptions.cpp creates a stack frame that allows stack unwinder to
walk to the place where the hardware exception happened from the actual exception
handling code.
The problem was that this method stores the address of the faulting instruction
PLUS 1 as the return address on the stack. There was a long comment about the
reasons for doing so, but these reasons are not valid for jitted code that we
unwind using the windows style unwinder and the "+1" breaks the unwinder in
some cases.
In the case that we've hit, there was an idiv instruction with instruction code
0xF7 0xFF, followed by instruction code 0x25. The windows style unwinder got
the address of the second byte of the instruction code, the 0xFF, which followed
by the 0x25 is an unconditional indirect jump. So the unwinder decided based on
that that it is in the epilogue of the function and returned an unwound context
containing an invalid instruction pointer.
The fix is to not to increase the instruction by one in the catch_exception_raise.
We don't do that in the Linux exception handling either.
We may need to do this fixup at other place for exceptions happening in the debugger
libraries where a hardware exception can happen and be handled in our C++ code as well.
|
|
Test CLR hosting under a debugger (lldb). In order to test the debugger modules and coreclr running together in the same process, add the test command "corerun" to the lldb plugin that uses the CLR hosting apis to run managed code in the lldb process.
Fixed a problem where the dac module was picking up an constructor in the coreclr module instead of using the dac version. This is because the corerun code was dlopen'ing coreclr with RTLD_GLOBAL which exposed all the symbols to the reset of the dynamic modules loaded. Changing it to RTLD_LOCAL (the default) fixes this problem.
Changed from an ASSERT to an ERROR in the hardware exception handler because ASSERT does an SIGTRAP (DebugBreak) that keeps recursively being hit.
Removed all signals that installed a fatal_signal_handler especially SIGINT which was interfering with lldb's. The rest of the signals, the default action should be good enough.
Checked if the EE was started in the VM's hardware exception handler just to make sure everything is ready before the managed exception chain is called.
Cleanup signal thread masking. Only wait for SIGINT/SIGQUIT explicitly instead of trying to mask all the signals we don't want to wait on.
|
|
|
|
Fix loading of PAL on OSX
|
|
Fixing an issue in FILECanonicalizePath where some paths did not canonicalize properly
|