Bruce Bowyer-Smyth [Sun, 27 Sep 2015 20:47:43 +0000 (06:47 +1000)]
String.StartsWith ordinal optimization
Commit migrated from https://github.com/dotnet/coreclr/commit/
2005a137172d33f551b4370600ee3fc582a71177
Jan Kotas [Sat, 19 Sep 2015 03:32:53 +0000 (20:32 -0700)]
Merge pull request dotnet/coreclr#1566 from tijoytom/master
Implement NativeCallableMethods for CoreCLR
Commit migrated from https://github.com/dotnet/coreclr/commit/
9fa52c4b8c4e54ee1023140993be3a12f080b5cd
Eugene Zemtsov [Sat, 19 Sep 2015 00:39:54 +0000 (17:39 -0700)]
Merge pull request dotnet/coreclr#1593 from Djuffin/funceval
Fix debugger's funceval on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f6172fe2ac167253615f998f42e41167b6f12e8
Eugene [Fri, 18 Sep 2015 02:07:37 +0000 (19:07 -0700)]
Fix debugger's funceval on Linux
Address issues which prevented funceval from working on Linux:
1. Invalid stack alignment in funceval hijacks
2. Using System V calling convention for funceval hijacks
3. Disable executability check that is not implemented on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec040a9919ad20161f4f4aae37c9b49521a2bb57
Lubomir Litchev [Fri, 18 Sep 2015 21:04:36 +0000 (14:04 -0700)]
Merge pull request dotnet/coreclr#1577 from LLITCHEV/master
Fix for Issue dotnet/coreclr#3164.
Thanks all!
Commit migrated from https://github.com/dotnet/coreclr/commit/
18a776f1961061f474bb84a96f34c876cde59222
Koundinya Veluri [Fri, 18 Sep 2015 18:56:22 +0000 (11:56 -0700)]
Merge pull request dotnet/coreclr#1565 from kouvel/TryGetRawMetadataFix
Fix TryGetRawMetadata to return false when the assembly is not a Runt…
Commit migrated from https://github.com/dotnet/coreclr/commit/
c83642af770bf5a00d36a0c3a93ac5852947a7cc
Mike McLaughlin [Fri, 18 Sep 2015 18:54:26 +0000 (11:54 -0700)]
Merge pull request dotnet/coreclr#1588 from mikem8361/target4
Add ICorDebugDataTarget4 to SOS.
Commit migrated from https://github.com/dotnet/coreclr/commit/
793dfa9f3430b368833b4c28cc00359814ccb4f5
Lubomir Litchev [Fri, 18 Sep 2015 17:58:12 +0000 (10:58 -0700)]
Disable the clang/llvm optimizer for a method that triggers wrong codegen.
There is a bug in the clang-3.5 optimizer. The issue is that in release
build the optimizer is mistyping (or just wrongly decides to use 32 bit
operation for a corner case of MIN_LONG) the args of the (ltemp / lval2)
to int (it does a 32 bit div operation instead of 64 bit.)
For the case of lval1 and lval2 equal to MIN_LONG (0x8000000000000000)
this results in raising a SIGFPE.
Commit migrated from https://github.com/dotnet/coreclr/commit/
93a90d45e66eefe916295f2812a3c6437b0806b3
tijoytom [Thu, 3 Sep 2015 20:58:14 +0000 (13:58 -0700)]
Add support for NativeCallableAttribute
Apply [NativeCallable] attribute to a managed method and then it can be
called from native code.Typical use would be passing a managed method as
callback to native, now it can be done by wrapping the method in a
delegate or directly using Marshal.GetFunctionPointerForDelegate.This's
fine as long as we make sure that delegate is not garbage
collected.[NativeCallable] introduce another way, where you can directly
load the function pointer of a native callable method and use it as
callback.This feature cannot be directly used from C#,but can be very
useful in dynamic code generation scenarios where you want a callback to
be passed to native.
Here's an example of how it can be used.
public static class NativeMethods {
[DllImport("user32.dll")]
public static extern int EnumWindows(IntPtr enumProc, IntPtr lParam);
}
//Method attributed with NativeCallable
[NativeCallable]
public static int CallbackMethod(IntPtr hWnd, IntPtr lParam){ return 1; }
Now you can generate the below IL to load native callable function pointer
( LDFTN) and then pass it a native method.
.locals init ([0] native int ptr)
nop
ldftn int32 CallbackMethod(native int,native int)
stloc.0
ldloc.0
ldsfld native int System.IntPtr::Zero
call bool NativeMethods::EnumWindows(native int,native int)
pop
ret
Encoding native callable methods as ENCODE_METHOD_NATIVECALLABLE_HANDLE
so that we don't have to check for the custom attribute at runtime to
decode the method.Also fixing the remaining code review comments.
Adding runtime check to prevent Native Callable methods from being used as
calli target with an ldftn. Also adding some negative test cases , they
are disabled for now since the tests failfast and msbuild report it as
failure.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1e62862b631fb64c6a9fae0a0084c0ae1d9fbeba
Matt Mitchell [Fri, 18 Sep 2015 15:58:44 +0000 (08:58 -0700)]
Merge pull request dotnet/coreclr#1580 from ravimeda/fixTestBuildProj
Remove Clean Target in Test Build Proj.
Commit migrated from https://github.com/dotnet/coreclr/commit/
e6183617997a6c72c8a060745e7d09d4d2840d90
Jan Kotas [Fri, 18 Sep 2015 03:09:47 +0000 (20:09 -0700)]
Merge pull request dotnet/coreclr#1582 from janvorli/osx-thread-suspension-activation
Change PAL_InjectActivation to use pthread_kill
Commit migrated from https://github.com/dotnet/coreclr/commit/
4486bcf73cf9f2926ee8b1e9cb8b5c80339d9627
Sergiy Kuryata [Fri, 18 Sep 2015 01:40:16 +0000 (18:40 -0700)]
Merge pull request dotnet/coreclr#1583 from adityamandaleeka/coreclr_tests_linux
CoreCLR tests on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
b844d2a4114342b1ad08ae6b8a31a694281d4570
Jan Vorlicek [Thu, 17 Sep 2015 21:16:13 +0000 (23:16 +0200)]
Change PAL_InjectActivation to use pthread_kill
This change modifies the PAL_InjectActivation to use much more portable pthread_kill
instead of pthread_sigqueue.
Remove the activation function passing from the PAL_InjectActivation
and add a PAL API to set the activation function globally, since we need just one.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f65f17708609ab554ed106822bf6d27dd658b712
Jan Kotas [Fri, 18 Sep 2015 01:20:23 +0000 (18:20 -0700)]
Merge pull request dotnet/coreclr#1585 from DasAllFolks/patch-2
Fix link to "Public Contract" subsection
Commit migrated from https://github.com/dotnet/coreclr/commit/
28930c2f2ae2a5a8d746551470696cc8db87f23e
Jan Kotas [Fri, 18 Sep 2015 01:18:50 +0000 (18:18 -0700)]
Merge pull request dotnet/coreclr#1586 from DasAllFolks/patch-1
Fix link to "Coding Style" page
Commit migrated from https://github.com/dotnet/coreclr/commit/
37ea695c52ca0f4c3398c218c1fdd2ba51ba14dc
Jan Kotas [Fri, 18 Sep 2015 01:18:20 +0000 (18:18 -0700)]
Merge pull request dotnet/coreclr#1587 from DasAllFolks/patch-3
Fix link to CoreFX Performance Guidelines
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce42c2edae783f24948142f5d76daf148ba5ae7e
Mike McLaughlin [Wed, 16 Sep 2015 22:08:11 +0000 (15:08 -0700)]
Add ICorDebugDataTarget4 to SOS.
Now that Eugene fixed out of context unwinding in the DAC for Linux after
this change, the SOS "clrstack" command should always work and not hang anymore.
Commit migrated from https://github.com/dotnet/coreclr/commit/
cd8f7c437156a811d1003c2cd17da593c8f5e5da
Steven Das [Fri, 18 Sep 2015 00:15:03 +0000 (19:15 -0500)]
Fix link to CoreFX Performance Guidelines
This link currently returns a 404 error.
It appears to be one of several links broken by some of the CoreFX
documentation having been moved into the new `coding-guidelines`
subdirectory.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0d80b2b478300bd2f483e7034c697576f2884f6f
Steven Das [Thu, 17 Sep 2015 23:59:34 +0000 (18:59 -0500)]
Fix link to "Coding Style" page
This link is currently returning a 404 error; it appears that several of these links may have been broken when a new `coding-guidelines` subdirectory was created.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a9ad8dd7e2d9516ff28204d2ad2dd8a2628900d9
Steven Das [Thu, 17 Sep 2015 23:55:11 +0000 (18:55 -0500)]
Fix link to "Public Contract" subsection
The link to the "Public Contract" subsection of the "Breaking Changes" page is currently stale and returns a 404 error.
Commit migrated from https://github.com/dotnet/coreclr/commit/
bce0a5cee6ba05d3c5e2185d58a8b1feafe31aab
Jan Kotas [Thu, 17 Sep 2015 23:50:42 +0000 (16:50 -0700)]
Merge pull request dotnet/coreclr#1584 from DasAllFolks/patch-1
Unbreak "breaking changes" link
Commit migrated from https://github.com/dotnet/coreclr/commit/
8811dcdddbbde43e8286bfe29765fe4bd3ae328d
Steven Das [Thu, 17 Sep 2015 23:48:48 +0000 (18:48 -0500)]
Unbreak "breaking changes" link
Previous link produced a 404 error.
Commit migrated from https://github.com/dotnet/coreclr/commit/
17fb74a8dbf90c335987a3bb28ebc53708ead6f9
Aditya Mandaleeka [Thu, 17 Sep 2015 23:21:50 +0000 (16:21 -0700)]
Minor improvements to runtest.sh
Commit migrated from https://github.com/dotnet/coreclr/commit/
a3a7282226443ba702ec9282358aa104e2bbde64
Aditya Mandaleeka [Thu, 17 Sep 2015 23:01:42 +0000 (16:01 -0700)]
Add runtest.sh script to run CoreCLR tests on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
25d056b046065778f9cf79778f0446e068ab26b5
Jan Kotas [Thu, 17 Sep 2015 22:55:33 +0000 (15:55 -0700)]
Merge pull request dotnet/coreclr#1581 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
5f359dc2c22fc2d30f346911814d7ed91f40d2b1
Matt Mitchell [Thu, 17 Sep 2015 20:49:46 +0000 (13:49 -0700)]
Merge pull request dotnet/coreclr#1574 from kouvel/FixPalTests
Fix some frequently failing PAL tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
8c86f7fdfe7b1f48a06f4172a35a69f5a461bccd
Koundinya Veluri [Wed, 16 Sep 2015 18:32:46 +0000 (11:32 -0700)]
Fix some frequently failing PAL tests
Some PAL tests are frequently failing in the CI. The specified output folder is currently used as the working folder for all PAL tests. The CI machine happened to have the output folder on a mount mounted as fuseblk instead of ext4. We don't know why this is happening. For the moment, I'm fixing the test runner to work around this issue.
Changes:
- Use /tmp/PalTestOutput/default as the output folder by default
- If a specific folder is specified for the output, use a unique folder inside /tmp/PalTestOutput for output files, and copy them to the specified folder at the end. A unique folder is used to support parallel runs on the same machine in this mode.
- Run each test in its own folder. Many PAL tests don't clean up after themselves, and create/use the same file/folder names in the current folder.
- Add a few more checks to some tests to hopefully provide more information upon the next failure
- Fix GetFileAttributes tests, which were crashing upon some failures due to mismatched number of placeholders and arguments to vprintf
Fixes dotnet/coreclr#1561
Commit migrated from https://github.com/dotnet/coreclr/commit/
e0c013e2af50bace4004e856cba67fcbec01fc00
Tarek Mahmoud Sayed [Thu, 17 Sep 2015 18:05:43 +0000 (11:05 -0700)]
Port the DateTime parser fix with Serbia cultures
Serbia has '.' at the end of the date and time parts. (like 'd.M.yyyy.'). while '.' is marked as date and time separator in same time. this confuse the parser and make it fail
to parse date/time string formatted with the Serbia culture.
[tfs-changeset: 1526268]
Commit migrated from https://github.com/dotnet/coreclr/commit/
596f0cdafe9f8f2ee2a16419e6203c8e1a8e46d4
AlexGhiondea [Thu, 17 Sep 2015 17:19:56 +0000 (10:19 -0700)]
Merge pull request dotnet/coreclr#1460 from bbowyersmyth/StringJoin
String.Join optimization for single item lists
Commit migrated from https://github.com/dotnet/coreclr/commit/
d176041723f366c35fd71ee4b176253fefddfee1
Ravi Eda [Thu, 17 Sep 2015 16:09:02 +0000 (11:09 -0500)]
Remove Clean Target in Test Build Proj.
Commit migrated from https://github.com/dotnet/coreclr/commit/
11f1c6be9db3e64c97704ef6acc3a406d815f91d
Jan Kotas [Thu, 17 Sep 2015 14:57:10 +0000 (07:57 -0700)]
Merge pull request dotnet/coreclr#1578 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
5c3324b982039efdf9f1c1cc9a401a5c7fd3770b
Jan Kotas [Thu, 17 Sep 2015 12:27:09 +0000 (05:27 -0700)]
Fix build break on arm
[tfs-changeset: 1526208]
Commit migrated from https://github.com/dotnet/coreclr/commit/
586006e4255a7db70601c556e9ab95e50771a7a3
Lubomir Litchev [Thu, 17 Sep 2015 05:53:49 +0000 (22:53 -0700)]
Fix for Issue dotnet/coreclr#3164.
Added extra code to work around an optimizer bug in clang 3.5. In a
particular case 0/MIN_LONG results into MIN_LONG that causes a const
folding to produce a result of 0 instead of overflow exception for
MIN_LONG * MIN_LONG.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8ff8514192ff83a1625f009bb5783a3ee675e072
Jan Kotas [Thu, 17 Sep 2015 02:42:32 +0000 (19:42 -0700)]
Merge pull request dotnet/coreclr#1575 from benpye/arm-unwind-regression
Fix ARM unwind regression
Commit migrated from https://github.com/dotnet/coreclr/commit/
097e72ad43195c4c4c8a6332ff5e1fc3134751d0
Jan Kotas [Thu, 17 Sep 2015 02:38:27 +0000 (19:38 -0700)]
Merge pull request dotnet/coreclr#1568 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
de5f5f9c1d308f523d318ad7758f3aa3f348d3c1
Ben Pye [Wed, 16 Sep 2015 23:38:18 +0000 (23:38 +0000)]
Fix ARM build regression
Commit migrated from https://github.com/dotnet/coreclr/commit/
c893bf0699c81d7ea9ca9d37543eb5339d64d116
Eric Erhardt [Wed, 16 Sep 2015 20:06:03 +0000 (15:06 -0500)]
Merge pull request dotnet/coreclr#1559 from eerhardt/Fix2788
Time Zone transitions are 1 tick off on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
059b6592a9bc1390a982f34a4a693a1159d7bd97
Lakshmi Priya [Wed, 16 Sep 2015 19:06:13 +0000 (12:06 -0700)]
Merge pull request dotnet/coreclr#1560 from Priya91/longpath-test
Replace MAX_PATH with new defines in rest of coreclr.
Commit migrated from https://github.com/dotnet/coreclr/commit/
8ff2389204d7c41b17eff0e9536267aea8d6496f
Gaurav Khanna [Wed, 16 Sep 2015 18:45:06 +0000 (11:45 -0700)]
Fix for GH issue 410 - https://github.com/dotnet/coreclr/issues/410
Whenever a managed exception is thrown, the details about the thrown exception are also saved off the managed thread object (as LastThrownObject). The VM also has an exception tracker that tracks its dispatch across the managed frames and incase of nested exceptions, the trackers are collapsed correctly, when the nested exception is handled, and last thrown object is updated correctly. The VM works on the premise that the LastThrownObject is updated correctly.
Incase of this bug, a method (M1)is invoked via Reflection and has an exception E1. During exception dispatch for E1, an IL filter is invoked that, in turn, has an exception (E2) that remains unhandled. While this is swallowed by the VM (as expected), the LastThrownObject is not updated to reflect the active exception to be E1. Thus, when the dispatch for original exception E1 completes and no managed handler is found, the exception is caught by Reflection subsystem that extracts the thrown exception using the GET_THROWABLE macro that uses the LastThrownObject to determine the thrown exception. Since the LTO was not updated, it still reflects E2.
The fix is to update the managed exception state, if the filter has an unhandled exception, similar to how we do when a managed catch block successfully handles the exception. I have refactored the code to make the semantic cleaner.
[tfs-changeset: 1525835]
Commit migrated from https://github.com/dotnet/coreclr/commit/
14de7d30063c2955523c1ff2ccb48e339977742b
Eric Erhardt [Tue, 15 Sep 2015 22:49:54 +0000 (17:49 -0500)]
Time Zone transitions are 1 tick off on Linux
When we build the AdjustmentRules up, we set the StartDate to be the Transition Time that comes from the tzfile, and we set the EndDate to the be (the next Transition Time - 1 tick). That way the next AdjustmentRule goes into effect at the exact transition time. The issue is that the code in CheckIsDst uses a less than operator when comparing the endTime, but for these rules it should be less than or equal to.
Fix https://github.com/dotnet/corefx/issues/2788.
Commit migrated from https://github.com/dotnet/coreclr/commit/
5841002dca5c1138e4c51ccf6ab16bf9c6e177e6
Jan Kotas [Wed, 16 Sep 2015 18:17:53 +0000 (11:17 -0700)]
Merge pull request dotnet/coreclr#1564 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
8cad40bbcf4c404c518c1f202a0f93cf71c866c6
Koundinya Veluri [Wed, 16 Sep 2015 17:17:56 +0000 (10:17 -0700)]
Fix TryGetRawMetadata to return false when the assembly is not a RuntimeAssembly
Related to dotnet/corefxdotnet/coreclr#2768
Commit migrated from https://github.com/dotnet/coreclr/commit/
ca3e85d395dfadadf309e6111f254eea35cdcbde
Vance Morrison [Wed, 16 Sep 2015 16:09:56 +0000 (09:09 -0700)]
Merge pull request dotnet/coreclr#1562 from cshung/EventCounterWork
Port bug fixes and add hooks for EventCounter work
Commit migrated from https://github.com/dotnet/coreclr/commit/
b66746c9132c157b807e3387147c4337b8c6cae0
Jan Kotas [Wed, 16 Sep 2015 16:07:48 +0000 (09:07 -0700)]
Merge pull request dotnet/coreclr#1553 from paulnice/patch-1
Fix runtime versions in the Console example
Commit migrated from https://github.com/dotnet/coreclr/commit/
c27a149e3e0b15e5449ab5a0b6c87752dae2ee4e
Jan Kotas [Wed, 16 Sep 2015 16:06:37 +0000 (09:06 -0700)]
Merge pull request dotnet/coreclr#1557 from ravimeda/master
Update Build CoreCLR Instructions on Mac OS X.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f8c2d7a18e90834f29107fa6cd1a3fc3d80da77c
Andrew Au [Wed, 16 Sep 2015 14:59:03 +0000 (07:59 -0700)]
Port bug fixes and add hooks for EventCounter work
Commit migrated from https://github.com/dotnet/coreclr/commit/
cb67da60a9c462b620afc1e8b7571228cbf46ac3
Stephen Toub [Wed, 16 Sep 2015 13:13:53 +0000 (09:13 -0400)]
Merge pull request dotnet/coreclr#1554 from kouvel/WaitAllCheckForDuplicates
Check for duplicate handles in PAL's implementation of a wait-all ope…
Commit migrated from https://github.com/dotnet/coreclr/commit/
830570c135db0bd917c9e4239314fd6f976e21bb
Aditya Mandaleeka [Tue, 15 Sep 2015 23:20:55 +0000 (16:20 -0700)]
Handle pre- and post-commands gracefully in bash execution scripts.
Existing tests can specify pre- or post-commands that are injected into
the execution scripts. However, today these are all using Windows syntax
so they break the bash scripts. We will handle that by skipping any tests
that are using pre- or post-commands unless they specify the bash-specific
equivalent. The scripts will continue to run and just exit with an exit
code that indicates a skip, so that the skipped tests are tracked and not
just hidden.
Also, this change moves the global pre-command that was being added for
running __TestEnv into the bash/batch targets rather than in the dir.props
file that is used for all platforms.
Commit migrated from https://github.com/dotnet/coreclr/commit/
093f4eeb4bb1dddec685b35bdc8ffcd6bc9cce86
Aditya Mandaleeka [Tue, 15 Sep 2015 23:10:24 +0000 (16:10 -0700)]
Enable bash run scripts to handle tests with multiple arguments.
Commit migrated from https://github.com/dotnet/coreclr/commit/
09cd6baa9399c80aaa6605e0702cde5f34f5bf6c
Aditya Mandaleeka [Tue, 15 Sep 2015 23:08:57 +0000 (16:08 -0700)]
Enable coreclr tests to run on Unix with corerun.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1f9ab47d24a10c546a96b5e04dc3c4838dc65134
Aditya Mandaleeka [Tue, 15 Sep 2015 23:04:19 +0000 (16:04 -0700)]
Enable building coreclr tests on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
5aedb627a91f72f2606a12d904177ef9a481c77e
Aditya Mandaleeka [Tue, 15 Sep 2015 22:51:16 +0000 (15:51 -0700)]
Clean up some test scripts
Commit migrated from https://github.com/dotnet/coreclr/commit/
2e7e7585ec51871856287681bf178f23822e46ea
Eugene Zemtsov [Tue, 15 Sep 2015 22:09:35 +0000 (15:09 -0700)]
Merge pull request dotnet/coreclr#1538 from Djuffin/get_context2
Make DBI/SOS stackwalk work when thread is running native code
Commit migrated from https://github.com/dotnet/coreclr/commit/
15875d3a98e496191f221ebb003ab53ec77cfae9
Aditya Mandaleeka [Tue, 15 Sep 2015 21:21:38 +0000 (14:21 -0700)]
Merge pull request dotnet/coreclr#1555 from richlander/roadmap
Add link to .NET Core Roadmap
Commit migrated from https://github.com/dotnet/coreclr/commit/
cdb64362a7b3754738b11f0623daa0a3217d570a
Ravi Eda [Tue, 15 Sep 2015 21:10:33 +0000 (16:10 -0500)]
Update Build CoreCLR Instructions on Mac OS X.
Rebuild option is not handled in build.sh. Hence removing the sentence
that suggests using a rebuild option that will delete previously built
assemblies.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a0864bcf599287d268c765d6558a7718d365561e
Eugene [Fri, 21 Aug 2015 04:11:31 +0000 (21:11 -0700)]
Use out-of-proc libunwind to unwind native stack from DAC
Implementation of PAL_VirtualUnwindOutOfProc that uses ptrace libunwind
to be able to unwind native stack in debugee. This allows to get valid managed
stack for threads that passed HelperMethodFrames.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d0f71d0b22e9012263e4a078d24738c75e384a90
Eugene Zemtsov [Fri, 7 Aug 2015 08:08:37 +0000 (01:08 -0700)]
Use Frame list context when GetThreadContext is unavailable
When DAC tries to obtain thread context for debugee thread on the system without working GetThreadContext, it uses filter context
and if it is NULL, it goes through thread Frame list looking for a Frame that can provide meaningful CONTEXT to start the stackwalk.
Filter context can be NULL if the thread is currently running native code, or manage exception just has been thrown (first chance).
Before this change DBI stackwalker would fail to provide stack trace in such cases.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb3260e67bc653b56a80fbf0e8a07d78e3a404c1
Bruce Forstall [Tue, 15 Sep 2015 18:31:37 +0000 (11:31 -0700)]
Merge pull request dotnet/coreclr#1540 from BruceForstall/FixPow1TestForLinux
Fix pow1 test to run on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
235d807ed6012590241a8e21433a257df7de264a
Matt Mitchell [Tue, 15 Sep 2015 17:30:33 +0000 (10:30 -0700)]
Merge pull request dotnet/coreclr#1144 from mmitche/real-debug-build
Do not pass /O1 except in release/release with debug info modes
Commit migrated from https://github.com/dotnet/coreclr/commit/
2bc5657bd796e78d33aff45c7137b92b821d3a93
Koundinya Veluri [Mon, 14 Sep 2015 20:55:30 +0000 (13:55 -0700)]
Check for duplicate handles in PAL's implementation of a wait-all operation
Commit migrated from https://github.com/dotnet/coreclr/commit/
ddf916ca46e913fbe3c8536b2a8c0d951ef1474b
Matt Mitchell [Tue, 16 Jun 2015 16:45:18 +0000 (09:45 -0700)]
Do not pass /O1 except in release/release with debug info modes
Commit migrated from https://github.com/dotnet/coreclr/commit/
fd5bea19761805968c966043fab38aedda23e912
Bruce Forstall [Tue, 15 Sep 2015 01:01:32 +0000 (18:01 -0700)]
Minor change to SystemV structs declarations in JIT-EE interface
Pull over a couple changes from the work-in-progress git branch.
[tfs-changeset: 1525036]
Commit migrated from https://github.com/dotnet/coreclr/commit/
81bd7868b69f99e2e3c8f6486547327461aa8941
Wes Haggard [Tue, 15 Sep 2015 00:48:18 +0000 (17:48 -0700)]
Fix build break on ARM.
[tfs-changeset: 1525030]
Commit migrated from https://github.com/dotnet/coreclr/commit/
3083f4a15ef307794a34b9a580de9039d0d06c5e
paulnice [Mon, 14 Sep 2015 15:07:24 +0000 (08:07 -0700)]
Fix runtime versions
1. Fix the sample output of 'dnvm list' command with the latest one.
2. Fix the 'dnvm use' commands with the current runtime versions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ceabbbc2c6cc129ee09b6159acae71055f99460f
Gaurav Khanna [Mon, 14 Sep 2015 14:23:12 +0000 (07:23 -0700)]
This fixes the case of 64bit (to be in sync with Arm/Arm64) failures when, due to Jit optimizations, the return address of two successive frames are the same, resulting in incorrect current context initialization. As a result, CrawlFrame specific lookup of data (e.g. GenericArgType) are incorrect and fails tests.
I have refactored the code to be common for X64/Arm/Arm64 as much as possible.
X64 EH Selfhost is clean (and so is DDR).
[tfs-changeset: 1524814]
Commit migrated from https://github.com/dotnet/coreclr/commit/
565c615fc357e06e328de2ce0b26a58163edeedc
Jan Kotas [Mon, 14 Sep 2015 10:07:35 +0000 (03:07 -0700)]
Merge pull request dotnet/coreclr#1547 from jkotas/standalone-gc
Initial port of GC sample to Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
98c63c1612b2635a40d9a719c1505e0ad4bef08a
Jan Kotas [Mon, 14 Sep 2015 08:20:09 +0000 (01:20 -0700)]
Merge pull request dotnet/coreclr#1546 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
8b45ec0f0213f9b85b1f38c606e8d25a68a5bc58
Jan Kotas [Sat, 12 Sep 2015 18:31:02 +0000 (11:31 -0700)]
Initial port of GC sample to Linux
- Add CMake build for the GC sample
- Add Unix clone of the GC environment. The Unix GC environment is partially
implemented, enough to make GC sample to compile and run on Linux.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eeb7076e3993ca3fea11ee599a272d985eb3d4d4
dotnet-bot [Mon, 14 Sep 2015 02:48:24 +0000 (19:48 -0700)]
Fix mscorlib asmmeta and add SecurityCritical attribute to the two new functions in AssemblyExtensions
[tfs-changeset: 1524637]
Commit migrated from https://github.com/dotnet/coreclr/commit/
8d7491b0ac6f7569f5a04587e5e0e3165066c5e6
Jan Kotas [Sat, 12 Sep 2015 22:59:30 +0000 (15:59 -0700)]
Merge pull request dotnet/coreclr#1543 from mikedn/unboxmsg
Improve the invalid cast message generated by unbox
Commit migrated from https://github.com/dotnet/coreclr/commit/
003a8b171a4fcac4907fe03facf4c84246435985
Mike Danes [Sat, 12 Sep 2015 09:01:35 +0000 (12:01 +0300)]
Improve the invalid cast message generated by unbox
Change JIT_Unbox to use COMPlusThrowInvalidCastException instead of
COMPlusThrow(kInvalidCastException). This mirrors the behavior of
the normal cast by including the source and destination types in
the exception message.
Fix dotnet/coreclr#1453
Commit migrated from https://github.com/dotnet/coreclr/commit/
6732963050da5881f380ede3ab3f491a64fd04ce
Jan Kotas [Sat, 12 Sep 2015 17:12:46 +0000 (10:12 -0700)]
Merge pull request dotnet/coreclr#1544 from jkotas/standalone-gc
GC sample improvements
Commit migrated from https://github.com/dotnet/coreclr/commit/
320ee7e64cc6304e7b01948dabbc5e9e26f9bf45
Jan Kotas [Sat, 12 Sep 2015 15:50:59 +0000 (08:50 -0700)]
Move sample GC environment to separate directory
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d78cb898e00369d6894af174d5727fc6660a211
Jan Kotas [Sat, 12 Sep 2015 14:59:37 +0000 (07:59 -0700)]
Use NULL for consistency
Commit migrated from https://github.com/dotnet/coreclr/commit/
3691f2a234c0ef361a54a946098ebdfdcf4fc391
Jan Kotas [Sat, 12 Sep 2015 06:14:00 +0000 (23:14 -0700)]
Replace unsigned __int64/__int64 with UINT64/INT64
Commit migrated from https://github.com/dotnet/coreclr/commit/
b9e4ab6395587064d99820f33b807abe20124dc2
Jan Kotas [Sat, 12 Sep 2015 08:39:03 +0000 (01:39 -0700)]
Merge pull request dotnet/coreclr#1539 from BruceForstall/DeleteBadTests
Delete two bad tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
58748f0c50e71aed5ed2a3e35feb0a9eb719eaa6
Jan Kotas [Sat, 12 Sep 2015 03:24:32 +0000 (20:24 -0700)]
Merge pull request dotnet/coreclr#1542 from jkotas/gcsample
Upgrade GCSample project to VS2015
Commit migrated from https://github.com/dotnet/coreclr/commit/
12d294af33553f6f9b93491143733ca78a85aef8
Jan Kotas [Sat, 12 Sep 2015 03:16:17 +0000 (20:16 -0700)]
Upgrade GCSample project to VS2015
Commit migrated from https://github.com/dotnet/coreclr/commit/
6169f97d41b1de101a884a3035804d893878bf54
Bruce Forstall [Sat, 12 Sep 2015 00:04:24 +0000 (17:04 -0700)]
Fix pow1 test to run on Linux
This tests queries PROCESSOR_ARCHITECTURE to see if it is running on ARM. This returns a null string on Linux. So, check for null on continue. If necessary, this could be adjusted later if we need to do something special for non-Windows .NET Core on ARM.
Commit migrated from https://github.com/dotnet/coreclr/commit/
396373adde3ea53f136ac99f7e9e1936811b3e9c
Bruce Forstall [Fri, 11 Sep 2015 23:30:43 +0000 (16:30 -0700)]
Delete two bad tests
These tests were deleted from internal runs long ago and should not have been ported.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2bb5c8c5cded8f6849bebf0ae5eb0c9e75ac37aa
Bruce Forstall [Fri, 11 Sep 2015 20:28:32 +0000 (13:28 -0700)]
Merge pull request dotnet/coreclr#1536 from BruceForstall/FixLinuxNullRefCheck
Fix JIT null reference checking for large field accesses on PAL
Commit migrated from https://github.com/dotnet/coreclr/commit/
0554a236ffe62e68f09969df4249a22bdf6ddc2c
Bruce Forstall [Fri, 11 Sep 2015 20:27:53 +0000 (13:27 -0700)]
Merge pull request dotnet/coreclr#1537 from BruceForstall/FixLinuxIntLongDifference
Replace 'long' by 'int' to avoid bug on Linux
Commit migrated from https://github.com/dotnet/coreclr/commit/
54913c983114fb451c8c55b3c51290b5512a4e59
Bruce Forstall [Fri, 11 Sep 2015 19:04:31 +0000 (12:04 -0700)]
Replace 'long' by 'int' to avoid bug on Linux
In GetSignedMagicNumberDivide(), a cast to (unsigned long) was doing a sign extend instead of a zero extend, leading
to an apparent infinite loop with test case b147814_il.exe. This change replaces the cast with (unsigned int), which
matches Windows behavior.
Commit migrated from https://github.com/dotnet/coreclr/commit/
81291720abef64f07db0b01162b4ee1bde4ff7f8
Bruce Forstall [Fri, 11 Sep 2015 18:13:54 +0000 (11:13 -0700)]
Fix JIT null reference checking for large field accesses on PAL platforms
The JIT needs to do explicit null checks for large field accesses if such an
access might exceed the unmapped zero page in the OS. On Windows, that means
fields over 32KB. On PAL platforms, we use 1/2 the OS page size. As far as I
can tell, the reason we use 1/2 the known unmapped page size is for "defense
in depth", in case we get it wrong somehow.
Commit migrated from https://github.com/dotnet/coreclr/commit/
26a4e5fd0f5eefc91d1b46e2505290723b01780e
Jan Kotas [Fri, 11 Sep 2015 18:06:20 +0000 (11:06 -0700)]
Merge pull request dotnet/coreclr#1523 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
ff51d9e5384a61d22342aa640deafe62ec5a8754
Sridhar Periyasamy [Fri, 11 Sep 2015 17:15:24 +0000 (10:15 -0700)]
Merge pull request dotnet/coreclr#1495 from Sridhar-MS/code-coverage
Build Code Coverage instrumented binaries for native binaries in Linux and OSX
Commit migrated from https://github.com/dotnet/coreclr/commit/
79880beb8c6d12b385db08ad1120d7edf7812b41
Bruce Bowyer-Smyth [Fri, 11 Sep 2015 06:15:06 +0000 (16:15 +1000)]
String.Join optimization
Commit migrated from https://github.com/dotnet/coreclr/commit/
c81320a28805b098aaee9ea0d0149e7f2dd24a8f
Jan Vorlicek [Fri, 11 Sep 2015 00:20:21 +0000 (02:20 +0200)]
Merge pull request dotnet/coreclr#1533 from janvorli/fix-native-unwind-issue
Fix null reference exception handling in JIT_WriteBarrier
Commit migrated from https://github.com/dotnet/coreclr/commit/
fd27971f925051dac191d429c5fdadc61adbd960
Jan Vorlicek [Thu, 10 Sep 2015 22:56:25 +0000 (00:56 +0200)]
Fix null reference exception handling in JIT_WriteBarrier
This change fixes an issue when a null reference exception happens in the first
instruction of the JIT_WriteBarrier. There were two problems.
First problem was that the native unwinder didn't know that it is unwinding a
frame where the PC is an address of a failing instruction instead of the next
address after a call instruction. So it decremented the PC before looking up the
unwind info. Unfortunately, that means that if the hardware exception happens
in the first instruction, the unwind info is not found and the unwinder resorts
to RBP chain unwinding, which effectively skips one managed frame.
The second problem was that the FaultingExceptionFrame we create when handling
the hardware exception had context pointing to the JIT_WriteBarrier. But that
breaks the stack walker. When it arrives at the FaultingExceptionFrame, it
calls its ReturnAddress method and expects to get a managed code address.
However, in this case, it was getting the address of the JIT_WriteBarrier instead
and that made the stack walker to skip to the next explicit frame, effectively
skipping multiple managed frames that it should have reported.
Commit migrated from https://github.com/dotnet/coreclr/commit/
af76ec004c3d7c50abe29ddbfd3be37df30e21cb
Koundinya Veluri [Thu, 10 Sep 2015 08:04:12 +0000 (01:04 -0700)]
Merge pull request dotnet/coreclr#1499 from kouvel/TryGetRawMetadata
Add AssemblyExtensions.TryGetRawMetadata to the System.Reflection.Met…
Commit migrated from https://github.com/dotnet/coreclr/commit/
f7d9f0b298f7801344172fbaa5ec435be7e7171f
Koundinya Veluri [Thu, 10 Sep 2015 06:28:47 +0000 (23:28 -0700)]
Merge pull request dotnet/coreclr#1522 from kouvel/AssemblyLoadNullVersion
Allow loading assemblies on the TPA list without specifying a version
Commit migrated from https://github.com/dotnet/coreclr/commit/
cd2e9f19be91127f448708ab81aca0b25011d981
Lakshmi Priya Sekar [Tue, 8 Sep 2015 23:19:52 +0000 (16:19 -0700)]
Respond to PR feedback.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3b05c625e21ed968f1966b78956c99326fcc0570
Venkata Sivaramakrishna Ramadugu [Wed, 9 Sep 2015 22:49:08 +0000 (15:49 -0700)]
Fix to correctly spill a special putarg_reg when the fixed register assigned to it is getting killed before its GT_CALL.
Essentially in execution order we have the following nodes
RCX <-- GT_PUTARG_REG(lcl var V07) here V07 is 'this' object
R8 <-- GT_PUTARG_REG(GT_AND(GT_LSH,...))
ControlExpr of call (i.e. call target) is a vtable call and uses 'this' object to get to the right virtual method. Essentially a GT_IND(GT_LEA(V07))
GT_CALL
While building ref positions for first putarg_reg, it is flagged as "special" and preferenced to its source lcl var V07 if it is the non-last use. The hope is that if there are further uses of V07 before the kill of fixed reg assigned to V07, they can continue to be in that register.
While allocating a register to a special putarg_reg, lsra checks that a) source lcl var's interval is active and b) register assigned to source lcl var is the same as putarg_reg
Second putarg_reg (to R8) has an operand which needs CL (shift operation) and hence will kill RCX before GT_CALL. As a result, V07 is marked for spilling after its use in special putarg_reg but not first putarg_reg. Further since next kill of RCX (GT_LSH) is well before the next use of source lcl var (in controlExpr), putarg_reg cannot be marked as isBusyUntilNextKill. As a result, LSRA would think that RCX is available for allocation after the last use of V07 in controlExpr and hence GT_IND is allocated RCX thereby thrashing 'this' object passed in RCX. This leads to an AV for the repro case while executing jitted code.
Fix is that while allocating LSRA also needs to check that the next use of special putarg_reg is same as the next kill of the fixed register assigned to it. Since first putarg_reg is not marked as special, kill of RCX by GT_SH would lead to spilling of putarg_reg into a tree temp.
Fix dotnet/coreclr#1475
[tfs-changeset: 1523584]
Commit migrated from https://github.com/dotnet/coreclr/commit/
698641c0a7807b7f37143b923f8926c8f90a0f42
Sridhar Periyasamy [Wed, 9 Sep 2015 21:20:07 +0000 (14:20 -0700)]
Address code coverage builds feedback
- Move the build type check to unix only.
- Remove the global fPIC compiler option and add it as compile flags for libcorguids @ src/inc/CMakeLists.txt
- Use add_compiler_options instead of add_definitions.
Commit migrated from https://github.com/dotnet/coreclr/commit/
2d433c12a29a68e8f9d03ed40e55acbfb601556e
Koundinya Veluri [Fri, 4 Sep 2015 05:06:56 +0000 (22:06 -0700)]
Add AssemblyExtensions.TryGetRawMetadata to the System.Reflection.Metadata namespace.
This patch contains has the necessary changes in coreclr and mscorlib. Tests will be added separately, once the new API is
published and can be consumed.
Part of dotnet/corefxdotnet/coreclr#2768
Commit migrated from https://github.com/dotnet/coreclr/commit/
2f042a1212137e558fca716dbb92197f7a770e55
Koundinya Veluri [Wed, 9 Sep 2015 06:52:15 +0000 (23:52 -0700)]
Allow loading assemblies on the TPA list without specifying a version
When comparing the bound assembly's version against the requested assembly name, removed the distinction between platform
assemblies and app assemblies when the bound assembly is on the TPA list. A requested version of null behaves equivalently to
a requested version of 0.0.0.0.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fda827e5f6c732472b95a3672cc888f28e02a0ec
Jan Kotas [Wed, 9 Sep 2015 15:13:46 +0000 (08:13 -0700)]
Merge pull request dotnet/coreclr#1520 from sergey-raevskiy/clarify-comment
Clarify comment
Commit migrated from https://github.com/dotnet/coreclr/commit/
b4c53d212ab86bdc1b9b948b22f88a0aea894fab
sergey-raevskiy [Wed, 9 Sep 2015 10:48:59 +0000 (13:48 +0300)]
Clarify comment
Commit migrated from https://github.com/dotnet/coreclr/commit/
f7ae389b4272fe7f95c69ca640516068fb044844
Jan Vorlicek [Wed, 9 Sep 2015 00:53:19 +0000 (02:53 +0200)]
Merge pull request dotnet/coreclr#1518 from janvorli/fix-some-printf-formats
Fix printf formatting for ll, I and I32 length modifiers
Commit migrated from https://github.com/dotnet/coreclr/commit/
bb260291f7b2dd7744a7ddd950c3b7ae00259611
Jan Vorlicek [Tue, 8 Sep 2015 22:53:41 +0000 (00:53 +0200)]
Reflect PR feedback
Commit migrated from https://github.com/dotnet/coreclr/commit/
7c07014c9967063adbc80295856086f214fd1885