Age | Commit message (Collapse) | Author | Files | Lines |
|
This pulls out resource string handling out of mscorrc into top level.
The scripts (awk) are now parameterized to generate a unique string table for the
given name.
Added resourcestring.cpp to create an API "LoadResourceString".
Added a few macros into resourcestring.h, which are used for definition/uses of
the string table.
|
|
This change improves performance of CoreCLR with Server GC enabled by
about 30% according to ASP.NET benchmarks on Linux. The table below shows
number of requests per second that an ASP.NET benchmark could handle on my
machine before and after the change.
Pipeline Before After Improvement
16 230K Req/sec 305K Req/sec 33%
256 240K Req/sec 340K Req/sec 42%
The problem was that with Server GC enabled, the GC initialization code was
reserving a large chunck (about 18GB on my machine) of virtual address
space during runtime initialization. Unfortunately, due to implementation
details of MM on Linux, GC memory was located next to the location of
libcoreclr. As a result, the runtime could not allocate memory for JIT'ed
code close to the coreclr library. Because of that the JIT'ed code had to
use jump stubs to call functions from the runtime (which can become very
expensive, for example, for write barriers).
This change fixes this issue by implementing a simple allocator that tries
to reserve (during process startup) a chuck of virtual memory that is
located near the coreclr library (within 2GB range) that can be later used
for JIT'ed code.
|
|
It is always defined - even in internal builds
|
|
|
|
|
|
Initial removal of thread suspension code from PAL
|
|
|
|
Resource string loading during CrossGen doesn't work on Linux.
Disable it for now. In many cases the loaded string isn't even used.
|
|
|
|
|
|
Fix a few issues reported by cppcheck
|
|
[tfs-changeset: 1529946]
|
|
|
|
|
|
|
|
[tfs-changeset: 1512590]
|
|
Most of the changes are about mismatches between printf formatting strings and argument types.
Fix #1294.
|
|
Merge changes from TFS
|
|
c_runtime/vprintf/test1 is disabled as casting NULL to va_list is
against the C specification.
Fix SetFilePointer tests on 32 bit platforms.
Define _FILE_OFFSET_BITS=64 so that we have long file support on 32 bit
platforms.
Implement context capture/restore for ARM.
Link libgcc_s before libunwind on ARM so C++ exceptions work.
Translate armasm to gas syntax.
Specify Thumb, VFPv3, ARMv7 for the ARM target.
Add ARM configuration to mscorlib build
Implement GetLogicalProcessorCacheSizeFromOS in PAL.
Set UNWIND_CONTEXT_IS_UCONTEXT_T from configure check.
|
|
The fix was to rearrange the code so the assert isn't necessary and removed it. Fixes TFS bug 1199569.
[tfs-changeset: 1504713]
|
|
The order of declaration doesn't matter when the call to CreateInstance
succeeds because the call to unload the DLL is suppressed. However, if
CreateInstance fails, we do unload the DLL, and this needs to happen after the
call to Release on the class factory.
|
|
|
|
Remove assert in VM break handler to prevent recursive asserts. Fixed problem where the DebugBreak wasn't terminating the app on an assert causing double assert messages. Restoring the SIGTRAP handler and returning was continuing the DebugBreak not terminating. Replaced this with an abort().
Cleanup the assert message formatting.
|
|
Fix the warning. Since VC++ until VS2015 doesn't support the noexcept keyword,
define a NOEXCEPT macro as empty for VC++ older than VS2015 and as noexcept for others.
|
|
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.
|
|
|
|
|
|
Currently the export of the C++ operators can cause issues when interoping with
native code on (at least) OSX, since it will hook the delete from native libraries.
This should be fixed long term by #247 when proper library exports are figured out
but for now we can just hide these on llvm.
Fixes #943
|
|
- HelloWorld.exe now works with mscorlib.ni.dll on Linux.
- Generating or using native images for other assemblies not yet supported.
|
|
- Crossgen is now built as part of coreclr
- Crossgen successfully compiles mscorlib.dll
- Resulting mscorlib.ni.dll not yet usable
|
|
Adds and modifies CMakeLists.txt files to enable building of crossgen.exe from build.cmd for x64 processor on Windows. Also adds a step in build.cmd to generate native image for mscorlib.
[tfs-changeset: 1456454]
|
|
Simply change the case of the library the PAL lives in so that is all
lowercase.
|
|
|
|
stacktrace)
Fixes that were required to achieve that
1. Funnel SIGTRAP into EE debugger.
2. Making that memory allocated by EE debugger is executable.
3. Disable metadata reading optimizations which are not working on Linux.
4. Workaround RtlRestoreContext not properly working with EFlags.
5. Avoid calls to ShimRemoteDataTarget.GetContext on Linux, it is not
implemented and not needed for pure managed debugging.
6. Adjust IP value after breakpoint SIGTRAP to meet debuggers expectations.
|
|
This change fixes the following warnings:
1) Assignment in a condition should be wrapped in ()
2) Priority of && / || should be indicated by parentheses.
3) Unknown #pragma optimize ifdefed out for non MSVC
4) Unused functions deleted or put under #ifdef
5) Extra tokens warning disabling moved to the CMakeLists.txt in the src/inc
6) Self assignment of a member or local variable
7) Assigning ~0 to a bitfield member that was just 8 bit wide
It also fixes a bug in the STRESS_LOGxx macro invocation in exceptionhandling.cpp and
stackwalk.cpp related to recent adding the DBG_ADDR macro usage. This macro expanded
a single parameter into two expressions to extract high / low 32 bits separately.
But the STRESS_LOGxx parameters are passed to the StressLog::LogMsg method as follows:
(void*)(size_t)(data1)
That means that the expanded pair x, y would be inserted as data 1 and that leads
to ignoring the x due to the comma operator.
|
|
statically liked PAL
|
|
This change fixes:
1) Member initiazalization order in class constructor didn't correspond to the member order in some classes
2) Objects with vtables were copied via memcpy. While this is intentional, cast of the pointers to void*
is required to silence clang warning
3) Switch case statements containing values of different enums
4) Casting int to pointer
5) Missing return value in methods with _ASSERTE
6) Class name classifier on methods in the .h
7) Invalid position of the DECLSPEC_ALIGN at few places - it had no effect
8) Invalid position of the 'used' attribute
9) Issue with comparing holders to NULL
10) Operator 'new' returning NULL without being marked with throw() or noexcept
11) Variables marked as 'extern' at the declaration / initialization place
12) Data structure declared as struct at one place and forward declared as class at another
Some disabled warnings were no longer happening, so options to disable them were removed too
|
|
Add native resources compilation on Linux
|
|
The bindtextdomain can fail due to OOM. Propagate the status out of the
PAL_BindResources.
|
|
This change adds compilation of native resources into a gettext binary format and
loading of string resources in coreclr on Linux.
On OSX, the resource string still contains just a formatted resource id.
|
|
Introducing of PAL_GetPalModuleBase removes dependency on CoreCLR name for
stress log module address.
|
|
|
|
Workaround native resource string loading temporarily
|
|
This change is a temporary workaround for native resource string loading until we have
the resource string support implemented.
Instead of asserting in the resource loading methods, return a string representing
the id for the requested resource.
The change implements a similar workaround for the FMTMSG_GetMessageString which now
returns a string containing "Error errorCode" where the errorCode is the error code
passed to the method.
This way, exceptions that use those two functions can be raised without asserting.
|
|
|
|
|
|
Goal of this change is to make managed debugging on Linux possible. (It is not fully achieved, but we're getting there)
So far our provision for debugging on Linux is somewhat different from debugging on Windows.
Instead of using WaitForDebugEvent and RaiseException as means of communication between debugger and debuggee, we're gonna use pipes.
Thankfully from old times of Silverlight Mac debugging we had debugging via network sockets under ifdefs FEATURE_DBGIPC_TRANSPORT_DI and FEATURE_DBGIPC_TRANSPORT_VM.
So this change is taking that old way of debugging, changing sockets for network pipes, removes lots of unused stuff and implements whatever is missing on Linux.
Testing:
Due to infrastructural issues I wasn't able to test debugging on Linux yet. So my testing consistent of
1. End to end net pipe debugging on Windows
2. Testing of twowaypipe implementation on Linux
3. Testing of search for loaded CoreCLR module on Linux.
|
|
|
|
|
|
finished or working yet.
The sos plug in is broken into two modules:
1) The lldb plugin (sosplugin) module that is built with the lldb h and lib files. This module dynamically loads the
sos module and finds the subcommand argument as a symbol export like windbg does for it's extensions. So
"sos IP2MD 0x100000" loads sos, finds the export "IP2MD" and calls it with the rest of the command and a
"IDebugClient" instance. This instance is a small subset of the the various dbgeng's API's implemented under
lldb without any COM to keep things simple.
OPEN ISSUE: This module's build depends on the lldb API includes and the lldb library. Need to figure
out the best way to deal with the dependency on the lldb source.
2) The sos module (sos) module that is the strike source built under linux. Currently only the IP2MD command
is built and the support/utility functions it needs. It dynamically loads the DAC (libmscordaccore.so)
and queries the IXCLRDataProcess interface via the DAC's CLRDataCreateInstance export.
OPEN ISSUE: Where and how to search for the sos/dac modules. Currently have a hard coded path to the binaries.
It probably should be the directory the plug in (sosplugin) is loaded.
|