Alex Rønne Petersen [Tue, 30 Aug 2016 19:47:14 +0000 (21:47 +0200)]
Merge pull request #3464 from alexrp/arm64-native-atomics
[runtime] Fix C and LLVM atomics on ARM64
Alex Rønne Petersen [Sun, 28 Aug 2016 15:12:19 +0000 (17:12 +0200)]
[utils] Remove ia64-specific atomics/membar code.
All ia64 compilers have intrinsics that we use. Also, this ia64 code was very
out of date (missing many functions we use now) so it wouldn't compile anyway.
Alex Rønne Petersen [Sun, 28 Aug 2016 14:52:21 +0000 (16:52 +0200)]
[llvm] Fix atomic opcodes on ARM64 to emit correct fences.
This is a workaround. It's needed for the same reason that we need the fix for
Clang's atomic intrinsics in mono/utils/atomic.h.
Alex Rønne Petersen [Sun, 28 Aug 2016 12:50:38 +0000 (14:50 +0200)]
[utils/atomic] Fix native atomic intrinsics on buggy ARM64 compilers.
See the comment in atomic.h for details.
Alex Rønne Petersen [Sun, 28 Aug 2016 12:50:09 +0000 (14:50 +0200)]
[utils] Add a MONO_GNUC_VERSION macro.
Marek Safar [Tue, 30 Aug 2016 17:05:29 +0000 (19:05 +0200)]
Merge pull request #3477 from Unity-Technologies/create-delegate-exception
Throw an ArgumentException when a delegate is bound to an open generi…
Josh Peterson [Tue, 30 Aug 2016 14:46:02 +0000 (10:46 -0400)]
Make improvments after code review:
* Use mono_set_pending_exception instead of mono_raise_exception
* Make the test an nunit test instead of a runtime test.
Ludovic Henry [Tue, 30 Aug 2016 10:45:53 +0000 (12:45 +0200)]
[mono-threads] Use create_suspended_sem on windows (#3482)
Marek Safar [Tue, 30 Aug 2016 09:02:43 +0000 (11:02 +0200)]
Merge pull request #3483 from alexavator/bugfix-keepalive
[System] Set KeepAlive flag for HttpWebRequest
Pozdeev [Tue, 30 Aug 2016 08:36:21 +0000 (13:36 +0500)]
[System] Set KeepAlive flag for HttpWebRequest
Ludovic Henry [Tue, 30 Aug 2016 08:24:12 +0000 (10:24 +0200)]
[pedump] Fix assertion error
We would previously observe the following crash:
```
ludovic-laptop :: ~/Xamarin/mono ‹
16c07b5› » (cd tools/pedump && MONO_PATH=../../mcs/class/lib/net_4_x lldb -- ./pedump --verify metadata,code ../.././mono/tests/xdomain-threads.exe)
(lldb) target create "./pedump"
Current executable set to './pedump' (x86_64).
(lldb) settings set -- target.run-args "--verify" "metadata,code" "../.././mono/tests/xdomain-threads.exe"
(lldb) r
Process 14407 launched: './pedump' (x86_64)
mono_os_mutex_lock: pthread_mutex_lock failed with "Invalid argument" (22)
Process 14407 stopped
* thread #1: tid = 0x27c9715, 0x00007fff93cfcf06 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
frame #0: 0x00007fff93cfcf06 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
-> 0x7fff93cfcf06 <+10>: jae 0x7fff93cfcf10 ; <+20>
0x7fff93cfcf08 <+12>: movq %rax, %rdi
0x7fff93cfcf0b <+15>: jmp 0x7fff93cf77cd ; cerror_nocancel
0x7fff93cfcf10 <+20>: retq
(lldb) bt
* thread #1: tid = 0x27c9715, 0x00007fff93cfcf06 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
* frame #0: 0x00007fff93cfcf06 libsystem_kernel.dylib`__pthread_kill + 10
frame #1: 0x00007fff8b9b74ec libsystem_pthread.dylib`pthread_kill + 90
frame #2: 0x00007fff908d56e7 libsystem_c.dylib`abort + 129
frame #3: 0x000000010022da6a pedump`monoeg_log_default_handler(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, message="mono_os_mutex_lock: pthread_mutex_lock failed with \"Invalid argument\" (22)", unused_data=0x0000000000000000) + 202 at goutput.c:231
frame #4: 0x000000010022d98d pedump`monoeg_g_logv(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, format="%s: pthread_mutex_lock failed with \"%s\" (%d)", args=0x00007fff5fbff4a0) + 109 at goutput.c:111
frame #5: 0x000000010022dbd9 pedump`monoeg_g_log(log_domain=0x0000000000000000, log_level=G_LOG_LEVEL_ERROR, format="%s: pthread_mutex_lock failed with \"%s\" (%d)") + 361 at goutput.c:121
frame #6: 0x000000010022301e pedump`mono_os_mutex_lock(mutex=0x00000001002ec630) + 110 at mono-os-mutex.h:98
frame #7: 0x0000000100223a66 pedump`mono_w32handle_new(type=MONO_W32HANDLE_PROCESS, handle_specific=0x00007fff5fbff540) + 246 at w32handle.c:440
frame #8: 0x00000001001ef8bb pedump`_wapi_processes_init + 123 at processes.c:1149
frame #9: 0x00000001001fbcc3 pedump`wapi_init + 19 at wapi.c:23
frame #10: 0x0000000100116486 pedump`mono_init_internal(filename="pedump", exe_filename=0x0000000000000000, runtime_version="v4.0.30319") + 102 at domain.c:528
frame #11: 0x0000000100117124 pedump`mono_init_version(domain_name="pedump", version="v4.0.30319") + 36 at domain.c:868
frame #12: 0x0000000100001496 pedump`verify_image_file(fname="../.././mono/tests/xdomain-threads.exe") + 678 at pedump.c:466
frame #13: 0x0000000100000f87 pedump`main(argc=4, argv=0x00007fff5fbff9a0) + 1095 at pedump.c:708
frame #14: 0x00007fff93e655ad libdyld.dylib`start + 1
```
That would be because the w32handle wouldn't be initialized before calling into `wapi_init` which allocates w32handle.
Ludovic Henry [Tue, 30 Aug 2016 08:04:32 +0000 (10:04 +0200)]
Merge pull request #3476 from lambdageek/fix-conc-ht
[test-conc-hashtable] Init w32 handles. Fixes OSX+coop.
Zoltan Varga [Mon, 29 Aug 2016 22:01:18 +0000 (00:01 +0200)]
Revert "[runtime] Fix pedump by using the normal embedding APIs instead of in…" (#3479)
Rodrigo Kumpera [Mon, 29 Aug 2016 21:51:30 +0000 (17:51 -0400)]
Merge pull request #3478 from vargaz/fix-pedump
[runtime] Fix pedump by using the normal embedding APIs instead of in…
Zoltan Varga [Mon, 29 Aug 2016 20:37:22 +0000 (22:37 +0200)]
[runtime] Fix pedump by using the normal embedding APIs instead of initializing parts of the runtime. Fixes #43786.
monojenkins [Mon, 29 Aug 2016 20:30:06 +0000 (22:30 +0200)]
Merge pull request #3422 from xmcclure/tarjan-doublefan
Make GC bridge perform well in the "double fan" scenario
The GC bridge currently performs VERY poorly when the object graph has a "double fan" shape. If M Java objects point to 1 C# object which points to N Java objects, the graph exported to Monodroid will currently drop the C# object node and replace it with (M\*N) edges. It is easy to write code where (M\*N) grows ludicrously big.
In testing on device, this patch solves that problem while leaving other cases unaffected. In testing on device, I found:
* All performance tests except double fan: No discernible performance difference after patch
* Double fan test with M=N=1000: Before the patch this took between three and seven seconds. After the patch this took between 0.2 and 0.3 seconds.
* Double fan test with M=N=4000: Before the patch this took anywhere from one to two minutes. After the patch, this took about 1.2 seconds.
* Double fan test with M=N=6000: Before the patch, this took so long I was not able to get it to ever complete. After the patch, this took about 1.3 seconds.
* Double fan test with M=N=20000: I did not attempt this test pre-patch. After the patch, it took about 5.6 seconds.
The commit messages describe the changes in some detail but the short version is:
* Add a mechanism for exporting non-bridged SCCs to the bridge client
* Turn that mechanism on whenever the product fanin*fanout grows too large
* Make the merge cache more aggressive
To function, this patch requires a corresponding change to monodroid. See https://github.com/xamarin/xamarin-android/pull/154
Marek Safar [Mon, 29 Aug 2016 19:40:50 +0000 (21:40 +0200)]
[Facades] Remove private facade
Marek Safar [Mon, 29 Aug 2016 19:31:33 +0000 (21:31 +0200)]
Merge pull request #3463 from david-mitchell/al-platform-switch
Add missing switch and functionality to al.
Andi McClure [Mon, 29 Aug 2016 18:34:22 +0000 (14:34 -0400)]
GC bridge: Fix non-buildable assert ()s added in previous commits
Alex Rønne Petersen [Mon, 29 Aug 2016 18:26:46 +0000 (20:26 +0200)]
Merge pull request #3468 from alexrp/hwcap-improvements
[utils/hwcap] Clean up and improve the hwcap code.
Andi McClure [Mon, 29 Aug 2016 17:48:48 +0000 (13:48 -0400)]
GC bridge: Move bridge-require-precise-merge to MONO_GC_PARAMS
This was previously in MONO_GC_DEBUG, but we do not use this for
production-viable flags.
Marek Safar [Mon, 29 Aug 2016 16:39:14 +0000 (18:39 +0200)]
[corlib] Improve CanceledContinuationExecuteSynchronouslyTest test
Josh Peterson [Fri, 26 Aug 2016 18:54:27 +0000 (14:54 -0400)]
Throw an ArgumentException when a delegate is bound to an open generic method.
* This change was made in Unity's old version of Mono at: https://github.com/Unity-Technologies/mono/commit/
9e27edaec9a91a75d6ebf0d21654dedcab74653d
David Mitchell [Fri, 26 Aug 2016 23:24:32 +0000 (16:24 -0700)]
Add missing switch and functionality to al.
When running msbuild on mono against an architecture-specific
project that also defines satellite assemblies, the /platform
switch will be passed to al.exe. Mono's implementation of al.exe
does not support this switch, which results in a failed build.
This commit adds the /platform switch, which also required
changing the implementation from System.Reflection to
IKVM.Reflection because Mono's implementation of AssemblyBuilder
does not support the necessary options.
While testing this change, I also noticed a few attributes that
the MS version of al.exe will copy from "template" assemblies,
so I added support for those, as well.
Marek Safar [Mon, 29 Aug 2016 16:01:39 +0000 (18:01 +0200)]
[mcs] Add reference to parent storey when current value type async storey needs fabricated this access. Fixes #40860
Aleksey Kliger [Mon, 29 Aug 2016 15:57:31 +0000 (11:57 -0400)]
[test-conc-hashtable] Init w32 handles. Fixes OSX+coop.
Zoltan Varga [Mon, 29 Aug 2016 14:49:05 +0000 (16:49 +0200)]
[llvm] Fix the arm cross compiler build when using llvm 3.9.
Marek Safar [Mon, 29 Aug 2016 14:46:04 +0000 (16:46 +0200)]
Merge pull request #3453 from ntherning/cleanup-AssemblyTest-temp-file-handling
Cleanup temp file handling in AssemblyTest
Niklas Therning [Thu, 25 Aug 2016 15:33:14 +0000 (17:33 +0200)]
Cleanup temp file handling in AssemblyTest
SetUp() already sets up a temp folder for the test methods and TearDown()
handles cleaning up and taking into account that on Windows, loaded assemblies
cannot be deleted. However, some of the tests created temp files outside of
this folder and had their own cleanup code which didn't expect temp files to
be undeletable on Windows.
This patch removes any custom temp file creation/cleanup from individual test
methods. It also slightly changes the way SetUp() created the temp folder for
each test, now the paths will be shallower.
Alex Rønne Petersen [Thu, 28 Jul 2016 15:26:49 +0000 (17:26 +0200)]
[utils/hwcap] Clean up and improve the hwcap code.
* Get rid of the arch-specific headers.
* Do verbose printing in one place.
* Simplify the cross compilation case to avoid repetition.
* Define all variables with a macro in a single header.
* Print detected hwcap info via g_print () so it's visible on mobile.
* Expose plain bool variables in the s390x implementation.
Miguel de Icaza [Sun, 28 Aug 2016 01:51:53 +0000 (21:51 -0400)]
[runtime] Bundle support, implement missing stream processing (#3423)
Alexander Köplinger [Sat, 27 Aug 2016 19:24:10 +0000 (21:24 +0200)]
[corlib] Fix Marshal test to not rely on Assert.Less
It doesn't work on nunitlite e.g. on XA:
```
src/corlib/Test/System.Runtime.InteropServices/MarshalTest.cs(268,11): error CS0117: `NUnit.Framework.Assert' does not contain a definition for `Less'
```
Aleksey Kliger (λgeek) [Fri, 26 Aug 2016 21:46:11 +0000 (17:46 -0400)]
[runtime] ves_icall_AssemblyBuilder_InternalAddModule is dead code (#3461)
There is no System.Refleciton.Emit.AssemblyBuilder::InternalAddModule method
Vlad Brezae [Fri, 26 Aug 2016 20:57:29 +0000 (23:57 +0300)]
Merge pull request #3451 from BrzVlad/fix-armel-emulation
[arm] Fix armel no fp
Alexander Köplinger [Fri, 26 Aug 2016 19:21:55 +0000 (21:21 +0200)]
Merge pull request #3460 from akoeplinger/remove-net_4_5-ifdef
[mcs] Remove NET_4_5 ifdef from the source files
Alexander Köplinger [Fri, 26 Aug 2016 19:18:07 +0000 (21:18 +0200)]
Merge pull request #3459 from akoeplinger/fix-parameter-names
[bcl] Fix method parameter names to match .NET
Alexander Köplinger [Fri, 26 Aug 2016 18:58:59 +0000 (20:58 +0200)]
Merge pull request #3457 from akoeplinger/fix-gethrforexception
[corlib] Return e.HResult instead of PlatformNotSupportedException/-1 for Marshal.GetHRForException
Andi McClure [Fri, 26 Aug 2016 18:13:44 +0000 (14:13 -0400)]
PR feedback: Add a runtime switch for the aggressive SCC merging
Previously every time we add a new runtime setting for the bridge
processor we have added a new callback for it. Because this is getting
unweildy, and also because some of these settings might have been
broken by recent init order changes, I created a new set_config
callback and merged the existing set_dump_prefix and enable_processing
with it.
Andi McClure [Fri, 26 Aug 2016 19:00:37 +0000 (15:00 -0400)]
PR feedback: Corrections to aggressive merge cache
hash_perturb was being mixed in in the wrong place. Fix that, also
make the hash function take some input from high bits on 64-bit
systems, also make the types around the hash more reasonable.
Zoltan Varga [Fri, 26 Aug 2016 17:56:12 +0000 (19:56 +0200)]
[sre] Remove TypeBuilder::create_internal_class () icall, it doesn't seem to be needed. (#3458)
Alexander Köplinger [Fri, 26 Aug 2016 13:33:35 +0000 (15:33 +0200)]
[bcl] Fix method parameter names to match .NET
The names were fixed only for the subset of methods that are included in netstandard,
and in cases where netstandard differs from Desktop .NET we match with .NET.
Alexander Köplinger [Fri, 26 Aug 2016 15:31:12 +0000 (17:31 +0200)]
Fix tarball build
emitnunit.pl was removed in
d3129a762419ea579de7e35a36b3471e35e5a75c
Alexander Köplinger [Fri, 26 Aug 2016 10:22:10 +0000 (12:22 +0200)]
[corlib] Return e.HResult instead of PlatformNotSupportedException/-1 for Marshal.GetHRForException
Follow what coreclr/corefx does now: https://github.com/dotnet/coreclr/pull/6929.
Zoltan Varga [Fri, 26 Aug 2016 10:32:05 +0000 (12:32 +0200)]
[runtime] Remove most of the contents of MonoDynamicGenericClass, the… (#3441)
* [runtime] Remove most of the contents of MonoDynamicGenericClass, the elements of the 'fields' array are not used anywhere, making all the other fields unneccesary too.
* [runtime] Remove the MonoDynamicGenericClass structure, merge it into MonoGenericClass. Add some comments.
Zoltan Varga [Fri, 26 Aug 2016 10:02:54 +0000 (12:02 +0200)]
[jit] Add an assert to the native types code to make sure we are using the matching managed assembly.
Zoltan Varga [Thu, 25 Aug 2016 20:18:45 +0000 (22:18 +0200)]
[llvmonly] Initialize native-to-managed wrappers when they are loaded instead of on the first call, since the call might be made on a thread not attached to the runtime. Fixes #43357.
Zoltan Varga [Thu, 25 Aug 2016 18:35:08 +0000 (20:35 +0200)]
[jit] Fix an assertion on amd64 when using fixed size buffers and pinvoke. Fixes #33571.
Marek Safar [Thu, 25 Aug 2016 16:27:45 +0000 (18:27 +0200)]
[corcompare] Show extension argument changes. Make parameter name difference breaking change.
Marek Safar [Thu, 25 Aug 2016 15:55:54 +0000 (17:55 +0200)]
[mcs] Don't crash when as operand cannot be resolved. Fixes #43718
Marek Safar [Thu, 25 Aug 2016 15:23:27 +0000 (17:23 +0200)]
[mcs] Correctly detect catch resume point marker in scope of resume points. Fixes #43636
Ludovic Henry [Thu, 25 Aug 2016 13:55:15 +0000 (15:55 +0200)]
Merge pull request #3447 from ludovic-henry/iolayer-extract-threading
[threads] Get thread handle from MonoThreadInfo when attaching
Vlad Brezae [Thu, 25 Aug 2016 10:45:38 +0000 (10:45 +0000)]
[jit] Don't lower store_r4 and load_r4 on armel with no fp
When having a float variable in memory, we should always access its contents through the fload_r4/fstore_r4 funcs, which do the conversion between float and double and different memsize vs var size. It is common case, to have a temp float, have its address loaded with ldaddr and later do a load_r4_membase on that address to access the contents. If alias analyis lowers this load_r4_membase to an op_fmove directly on the register pair, this would in turn be decomposed into 2 simple int op_moves on soft float, which is wrong if these op_moves are converted to memory accesses.
João Matos [Thu, 25 Aug 2016 10:39:54 +0000 (11:39 +0100)]
Merge pull request #3449 from lateralusX/jlorenss/win-add-missing-source-file
Add missing source file, sgen-os-coop.c, to libmonoruntime Visual Studio project.
Vlad Brezae [Thu, 25 Aug 2016 10:15:16 +0000 (10:15 +0000)]
[arm] Fix opcode emulation on armel with no fp
Even though we register emulations for these opcodes, the native function doesn't not map to the opcode logic, being used instead as part of the opcode decomposition along with other instructions. Make sure we don't try to emulate these opcodes through the general emulation pass.
lateralusX [Thu, 25 Aug 2016 09:14:33 +0000 (11:14 +0200)]
Add missing source file, sgen-os-coop.c, to libmonoruntime Visual Studio project.
Add missing source file, sgen-os-coop.c to project.
Add source files and headers into correct filters (Header/Source Files).
Eliminated Visual Studio linker warning LNK4221 for libmonoruntime project generated
by empty source files under certain configurations, boehm-gc.c, lock-tracer.c,
null-gc.c and sgen-os-coop.c
Alexander Köplinger [Wed, 24 Aug 2016 21:38:29 +0000 (23:38 +0200)]
Merge pull request #3437 from ntherning/fix-DirectoryNotFoundException-thrown-in-FileInfoTest.MoveTo_DestFileName_DirectoryDoesNotExist-on-windows
FileInfo.MoveTo() throws DirectoryNotFoundException rather than FileNotFoundException on Windows when target doesn't exist
Andi McClure [Wed, 24 Aug 2016 19:33:00 +0000 (15:33 -0400)]
PR feedback: Formatting, comments, asserts
Ludovic Henry [Thu, 14 Jul 2016 16:36:54 +0000 (18:36 +0200)]
[threads] Get thread handle from MonoThreadInfo when attaching
Ludovic Henry [Wed, 24 Aug 2016 18:54:04 +0000 (20:54 +0200)]
Merge pull request #3439 from ludovic-henry/iolayer-extract-threading
[mono-threads] Create Win32 handle when attaching the thread
Alexander Köplinger [Wed, 24 Aug 2016 18:05:08 +0000 (20:05 +0200)]
Merge pull request #3444 from akoeplinger/fix-netstandard-extensions
[Facades] Implement methods for *Extensions types that are available on the extended type
Alexander Köplinger [Wed, 24 Aug 2016 16:35:57 +0000 (18:35 +0200)]
[mini] Wrap error output for NUnit xml in CDATA section
Makes sure that characters like <> (which appear in stack traces) don't confuse the XML parser.
Marek Safar [Wed, 24 Aug 2016 15:05:04 +0000 (17:05 +0200)]
[monosymbolicate] Add pdb detection
Ludovic Henry [Tue, 23 Aug 2016 17:13:23 +0000 (19:13 +0200)]
[mono-threads-windows] Allocate ThreadStartInfo on the stack
Ludovic Henry [Wed, 13 Jul 2016 15:19:36 +0000 (17:19 +0200)]
[mono-threads] Create Win32 handle when attaching the thread
This guarantee that a MonoThreadInfo always has a handle.
Ludovic Henry [Wed, 24 Aug 2016 13:45:08 +0000 (15:45 +0200)]
[w32handle] Remove unused assertions
Ludovic Henry [Wed, 24 Aug 2016 10:09:08 +0000 (12:09 +0200)]
[w32handle] Initialize them earlier
If we happen to have the debugger or the log profiler enabled, we would run into a use before initialization case for the w32handle. The debugger or profiler would call `mono_gc_base_init` which would attach the current thread, and that would crash in `mono_w32handle_new` at w32handle.c:437 with `scan_mutex` being an invalid value (EINVAL).
Marek Safar [Wed, 24 Aug 2016 14:11:50 +0000 (16:11 +0200)]
Merge pull request #3445 from rolfbjarne/cecil-update
[tuner/linker] Update code to fix build errors after cecil update.
Marek Safar [Wed, 24 Aug 2016 14:08:25 +0000 (16:08 +0200)]
Revert "[corcompare] Reflects cecil breaking changes"
This reverts commit
b0ec389b68300278163dc31949ad747e0e206cca.
Rolf Bjarne Kvinge [Wed, 24 Aug 2016 13:56:43 +0000 (15:56 +0200)]
[tuner/linker] Update code to fix warnings after cecil update.
Marek Safar [Wed, 24 Aug 2016 13:16:17 +0000 (15:16 +0200)]
[corcompare] Reflects cecil breaking changes
Niklas Therning [Tue, 23 Aug 2016 14:19:11 +0000 (16:19 +0200)]
FileInfo.MoveTo() throws DirectoryNotFoundException rather than
FileNotFoundException on Mono on Windows and on .NET when target doesn't exist
FileInfoTest.MoveTo_DestFileName_DirectoryDoesNotExist() expects
FileNotFoundException to be thrown but on Windows a DirectoryNotFoundException
is thrown instead.
This patch changes MoveFile() in mono/io-layer/io.c to set the last error to
ERROR_PATH_NOT_FOUND rather than ERROR_FILE_NOT_FOUND when the destination
path doesn't exist. This results in a DirectoryNotFoundException being thrown
in managed code rather than FileNotFoundException. This is the behaviour
observed in .NET.
Also updated FileInfoTest.MoveTo_DestFileName_DirectoryDoesNotExist() to check
for DirectoryNotFoundException rather than FileNotFoundException.
Niklas Therning [Wed, 24 Aug 2016 13:02:04 +0000 (15:02 +0200)]
Merge pull request #3443 from ntherning/do-not-pass-FILE_FLAG_OVERLAPPED-to-CreateFile
Don't pass FILE_FLAG_OVERLAPPED to CreateFile()
Alexander Köplinger [Wed, 24 Aug 2016 12:50:21 +0000 (14:50 +0200)]
[Facades] Add argument null validation for extension methods
Alexander Köplinger [Wed, 24 Aug 2016 11:51:20 +0000 (13:51 +0200)]
[Facades] Implement methods for *Extensions types that are available on the extended type
The methods are already available in our implementations of those types so we can just forward the calls
to the "real" types instead of throwing NotImplementedException.
I audited all code in mcs/class/Facades and the only places where we still throw NotImplementedException
are ones where we really need to add a custom implementation.
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=43695
Alexander Köplinger [Wed, 24 Aug 2016 11:44:55 +0000 (13:44 +0200)]
[Facades] Make sure "this" is added to the type extensions
It was missing on a few methods.
Alexander Köplinger [Wed, 24 Aug 2016 11:43:29 +0000 (13:43 +0200)]
[Facades] Throw PlatformNotSupportedException instead of NotImplementedException for ServiceController on mobile
It's unlikely the ServiceController APIs will be supported on mobile since they don't really make sense there,
they were initially designed for controlling Windows Services.
Marek Safar [Wed, 24 Aug 2016 11:17:24 +0000 (13:17 +0200)]
Merge pull request #3436 from ntherning/fix-alt-dir-separator-not-replaced-in-Path.CleanPath
Path.CleanPath() does not always replace AltDirectorySeparatorChar
Rolf Bjarne Kvinge [Wed, 24 Aug 2016 10:12:48 +0000 (12:12 +0200)]
[linker] Mark declaring types of nested types resolved from xml descriptors. Fixes #43658. (#3434)
If the declaring type of a nested type marked by an xml descriptor
is not otherwise marked, the members of the nested type will not
be preserved, because the linker will not process the nested type
(since the parent type isn't marked, MarkStep:InitializeAssembly
will skip it, and thus skip akk its nested types as well).
https://bugzilla.xamarin.com/show_bug.cgi?id=43658
Niklas Therning [Tue, 23 Aug 2016 13:54:09 +0000 (15:54 +0200)]
Path.CleanPath() does not always replace AltDirectorySeparatorChar
If sub == 0, i.e. there are no repeated separators, this method just returns
the input string. On Windows, where DirectorySeparatorChar (\) is different
from AltDirectorySeparatorChar (/), this means that the call
Path.GetDirectoryName ("foo/bar/dingus")
won't return "foo\bar" as .NET would but rather returns "foo/bar".
This patch makes sure the '/' -> '\' conversion is run when
AltDirectorySeparatorChar characters have been seen in the input string, even
if sub == 0.
PathTest.GetDirectoryName() triggered this bug.
Niklas Therning [Wed, 24 Aug 2016 08:49:23 +0000 (10:49 +0200)]
Don't pass FILE_FLAG_OVERLAPPED to CreateFile()
When a FileStream is opened with the FileOptions.Asynchronous flag set the
code in file-io.c will pass FILE_FLAG_OVERLAPPED to the CreateFile() function.
On Windows this means the file will be in asynchronous mode and when
ReadFile()/WriteFile() are called an OVERLAPPED struct has to be passed. Mono
doesn't do this which means that when reading/writing asynchronous FileStreams
Windows returns an ERROR_INVALID_PARAMETER and an exception is raised in
managed code.
This patch simply removes the code which passes the FILE_FLAG_OVERLAPPED to
CreateFile(). This will work since asynchronous I/O is handled in managed code
anyway, using threads. On the OS level the I/O is still synchronous. The patch
won't affect other platforms since the implementation of
ReadFile()/WriteFile()/etc in mono/io-layer/, which is used on non-Windows, is
always synchronous and ignores the FILE_FLAG_OVERLAPPED.
This bug was triggered by the
MonoTests.System.IO.BinaryWriterTest.AsynchronousModeWrites test.
Marek Safar [Tue, 23 Aug 2016 22:26:23 +0000 (00:26 +0200)]
[bcl] More netstandard api matching
Alexander Köplinger [Tue, 23 Aug 2016 19:02:54 +0000 (21:02 +0200)]
Merge pull request #3430 from akoeplinger/simplify-mini-nunit
[mini] Replace emitnunit.pl with simpler Makefile-based xml generation
Alexander Köplinger [Tue, 23 Aug 2016 17:20:31 +0000 (19:20 +0200)]
Merge pull request #3431 from mhutch/fix-targetframeworkattribute
[xbuild] Fix incremental build of TargetFrameworkAttribute
Niklas Therning [Tue, 23 Aug 2016 14:46:27 +0000 (16:46 +0200)]
Merge pull request #3435 from ntherning/fix-DirectoryInfoTest-assumes-current-dir-is-c-on-windows
Fix for DirectoryInfoTest assuming current dir is C:\ on Windows
Niklas Therning [Tue, 23 Aug 2016 13:44:54 +0000 (15:44 +0200)]
Fix for DirectoryInfoTest assuming current dir is C:\ on Windows
This test assumes that `new DirectoryInfo (@"c:").Name == "C:\"` when run on
Windows but the actual value depends on the current directory. If current dir
is C:\temp the Name property will return "temp". Similar problem in the
FullName() and Parent() tests.
This patch sets the current directory to C:\ explicitly before running the
failing tests on Windows. The current dir is reset in TearDown().
Alexander Köplinger [Thu, 11 Aug 2016 15:52:20 +0000 (17:52 +0200)]
[mini] Replace emitnunit.pl with simpler Makefile-based xml generation
In an effort to cut down on the number of different scripts we have that try to output NUnit xml.
It also fixes a bug in emitnunit.pl where it would not output anything when one of the tests crashes
the process, because then the final "Overall results: tests: 22425, 100% pass, opt combinations: 25"
line isn't printed and emitnunit.pl just exits. This happens on Alpine.
Alexander Köplinger [Tue, 23 Aug 2016 13:15:51 +0000 (15:15 +0200)]
[mcs] Remove NET_4_5 ifdef from the source files
It is always set in all profiles that we support so we can remove it.
Zoltan Varga [Tue, 23 Aug 2016 13:09:21 +0000 (15:09 +0200)]
[jit] Avoid strengh reducing divisions when using llvm, llvm can do it by itself.
Niklas Therning [Tue, 23 Aug 2016 11:55:25 +0000 (13:55 +0200)]
Merge pull request #3426 from ntherning/fix-handle-leak-in-DirectoryInfo.EnumerateFileSystemInfos-on-windows
Fixes a handle leak in DirectoryInfo.EnumerateFileSystemInfos()
Niklas Therning [Tue, 23 Aug 2016 10:22:50 +0000 (12:22 +0200)]
Merge pull request #3433 from ntherning/fix-DoubleTest.Parse-assumes-en-US
Don't assume "3 5" is unparseable in the current culture in DoubleTest.Parse()
Niklas Therning [Tue, 23 Aug 2016 09:32:41 +0000 (11:32 +0200)]
Don't assume "3 5" is unparseable in the current culture in DoubleTest.Parse()
DoubleTest.Parse() expects "3 5" to be unparseable in the current culture and
expects an exception to be thrown. In sv-SE however "3 5" parses to 35 and
this test fails.
This patch sets the current culture to en-US when the DoubleTest.Parse() test
is run.
Niklas Therning [Mon, 22 Aug 2016 14:54:03 +0000 (16:54 +0200)]
Fixes a handle leak in DirectoryInfo.EnumerateFileSystemInfos()
When running DirectoryInfo.EnumerateFileSystemInfos() on an empty directory
MonoIO.FindFirst() will return null and the method returns without closing the
handle which is opened by FindFirst(). This patch makes sure the finally block
which closes the handle is run even when FindFirst() returns null.
Also added a call to FindClose() and some more cleanup in the native
implementation of MonoIO.FindFirst() when an allocation fails.
This bug caused an exception in DirectyoryInfoTest.TearDown() and several
other TearDown() methods in the MonoTests.System.IO tests on Windows due to
RemoveDirectory() failing on an empty directory which still had an open handle
associated with it.
Marek Safar [Tue, 23 Aug 2016 07:17:43 +0000 (09:17 +0200)]
Merge pull request #3103 from marek-safar/rs-Threading
[corlib] EventWaitHandle from referencesource
Mikayla Hutchinson [Tue, 23 Aug 2016 02:52:31 +0000 (22:52 -0400)]
[xbuild] Fix incremental build of TargetFrameworkAttribute
The targets depended on a feature that doesn't exist in
xbuild (https://bugzilla.xamarin.com/show_bug.cgi?id=43645)
and as a consequence would fail to add the generated file to
the build when the GenerateTargetFrameworkMonikerAttribute
target was up to date.
Alexander Köplinger [Tue, 23 Aug 2016 00:35:44 +0000 (02:35 +0200)]
Merge pull request #3429 from akoeplinger/fix-signaturedescription
[corlib] Add new values for RSAPKCS1SHA(256/384/512)SignatureDescription to CryptoConfig and fix SignatureDescriptionTest in FullAOT
Alexander Köplinger [Mon, 22 Aug 2016 23:24:39 +0000 (01:24 +0200)]
Merge pull request #3381 from krytarowski/netbsd-support-20
Resurrect NetBSD support in mono-perfcounters.c
Marek Safar [Fri, 3 Jun 2016 13:18:42 +0000 (15:18 +0200)]
[corlib] EventWaitHandle from referencesource
Vlad Brezae [Mon, 22 Aug 2016 21:06:23 +0000 (14:06 -0700)]
[arm64] Bump instruction sizes for atomic ops to match the emmited code
Alexander Köplinger [Mon, 22 Aug 2016 18:04:57 +0000 (20:04 +0200)]
[corlib] Add new values for RSAPKCS1SHA(256/384/512)SignatureDescription to CryptoConfig and fix SignatureDescriptionTest in FullAOT
With the .NET 4.6.2 merge in https://github.com/mono/mono/commit/
b6a30059db8319348ebb454cc303633dfabd6a29#diff-799d44d25450b5b84906cbe7095708a0L86
the RSAPKCS1SignatureDescription class switched from using SHA1CryptoServiceProvider as the DigestAlgorithm to SHA1Cng.
This uncovered an issue when running SignatureDescriptionTest in FullAOT, as we were missing an entry for SHA1Cng
in CryptoConfig.fullaot.cs and so we didn't find the algorithm.
Additionally, 4.6.2 added new variants of the SignatureDescription class using SHA256, SHA384 and 512 which
had to be added alongside the corresponding digest/signature URLs defined by https://msdn.microsoft.com/en-us/library/windows/desktop/
dd979768(v=vs.85).aspx
Note that on mobile/FullAOT we're falling back to the *Managed variants of the SHA algorithms as the *Cng/*CryptoServiceProvider variants
aren't exposed there (except for SHA1CryptoServiceProvider since it was in the framework from the beginning) so we need to special case these in the tests.
Aleksey Kliger [Mon, 22 Aug 2016 18:07:59 +0000 (14:07 -0400)]
[s390x] Fix compilation of sre-save.c