mono.git
8 years ago[jit] Support decomposition of long imm ops to simple long ops
Vlad Brezae [Tue, 5 Jan 2016 21:43:36 +0000 (23:43 +0200)]
[jit] Support decomposition of long imm ops to simple long ops

8 years ago[jit] Don't crash in mono_op_imm_to_op if opcode is not handled
Vlad Brezae [Tue, 5 Jan 2016 20:32:50 +0000 (22:32 +0200)]
[jit] Don't crash in mono_op_imm_to_op if opcode is not handled

Mimic the behaviour of its counterpart, mono_op_to_op_imm, since crashing limits the usage of the function and it is the responsability of the upper layer.

8 years ago[jit] Don't decompose into unsupported instructions
Vlad Brezae [Tue, 5 Jan 2016 19:40:59 +0000 (21:40 +0200)]
[jit] Don't decompose into unsupported instructions

If we emulate these ops, it means we don't support the *_2 ops and we shouldn't decompose into them.

8 years ago[jit] Don't hardcode the long vreg components
Vlad Brezae [Fri, 11 Dec 2015 13:49:41 +0000 (05:49 -0800)]
[jit] Don't hardcode the long vreg components

8 years ago[llvmonly] Implement Assembly.GetCallingAssembly () in llvmonly mode by saving the...
Zoltan Varga [Thu, 14 Jan 2016 16:26:22 +0000 (11:26 -0500)]
[llvmonly] Implement Assembly.GetCallingAssembly () in llvmonly mode by saving the current assembly in the calling method. Enable it for Activator.CreateInstance () for now.

8 years ago[man/mono.1] Fix typo from 9115bf0a
Alexander Köplinger [Thu, 14 Jan 2016 15:27:46 +0000 (16:27 +0100)]
[man/mono.1] Fix typo from 9115bf0a

8 years ago[runtime] Make sure ptr-to-structure and structure-and-ptr wrappers are unique, this...
Zoltan Varga [Thu, 14 Jan 2016 15:11:55 +0000 (10:11 -0500)]
[runtime] Make sure ptr-to-structure and structure-and-ptr wrappers are unique, this is needed by full aot. Fixes #20186.

8 years ago[mono] Update predefined Hebrew negative sign. Fixes #37681
Marek Safar [Thu, 14 Jan 2016 14:12:59 +0000 (15:12 +0100)]
[mono] Update predefined Hebrew negative sign. Fixes #37681

8 years ago[corlib] Bump reference source for #37583
Marek Safar [Thu, 14 Jan 2016 13:40:00 +0000 (14:40 +0100)]
[corlib] Bump reference source for #37583

8 years agoMerge pull request #2427 from alexrp/socket-responder-dedup
monojenkins [Thu, 14 Jan 2016 13:10:19 +0000 (13:10 +0000)]
Merge pull request #2427 from alexrp/socket-responder-dedup

[bcl] Deduplicate the SocketResponder test helper class.

A number of fixes were made to the version in System but these fixes were never applied to the System.Web.Services version. Merge the two and place the class in the test-helpers directory to avoid this sort of maintenance problem.

8 years agoMerge pull request #2434 from knocte/bitmapattributes
Marek Safar [Thu, 14 Jan 2016 07:56:50 +0000 (08:56 +0100)]
Merge pull request #2434 from knocte/bitmapattributes

[System.Drawing] Include new .NET4.5 attributes (OWIN)

8 years ago[System.Drawing] Include new .NET4.5 attributes (OWIN)
Andrés G. Aragoneses [Thu, 14 Jan 2016 02:37:10 +0000 (10:37 +0800)]
[System.Drawing] Include new .NET4.5 attributes (OWIN)

These stubs should fix this OWIN issue brought up in StackOverflow:
http://stackoverflow.com/questions/34751771/system-drawing-bitmapsuffixinsameassemblyattribute-missing-in-mono

Docs:
* https://msdn.microsoft.com/en-us/library/system.drawing.bitmapsuffixinsameassemblyattribute%28v=vs.110%29.aspx
* https://msdn.microsoft.com/en-us/library/system.drawing.bitmapsuffixinsatelliteassemblyattribute%28v=vs.110%29.aspx

Patch contributed under the terms of the MIT/X11 licence.

8 years ago[bcl] Deduplicate the SocketResponder test helper class.
Alex Rønne Petersen [Wed, 13 Jan 2016 04:54:43 +0000 (05:54 +0100)]
[bcl] Deduplicate the SocketResponder test helper class.

A number of fixes were made to the version in System but these fixes were never
applied to the System.Web.Services version. Merge the two and place the class
in the test-helpers directory to avoid this sort of maintenance problem.

8 years agoMerge pull request #2426 from alexrp/http-test-remove-abort
Alex Rønne Petersen [Thu, 14 Jan 2016 02:11:41 +0000 (03:11 +0100)]
Merge pull request #2426 from alexrp/http-test-remove-abort

Revert "[bcl] Fix System.Net.HttpWebRequestTest.GetRequestStream hang"

8 years agoMerge pull request #2424 from alexrp/task-unobserved-exceptions
Alex Rønne Petersen [Thu, 14 Jan 2016 02:10:00 +0000 (03:10 +0100)]
Merge pull request #2424 from alexrp/task-unobserved-exceptions

[TPL] Add support for the <ThrowUnobservedTaskExceptions /> config element.

8 years ago[llvm] Add a missing r4 opcodes.
Zoltan Varga [Wed, 13 Jan 2016 21:47:31 +0000 (16:47 -0500)]
[llvm] Add a missing r4 opcodes.

8 years ago[llvmonly] Create empty stacktraces if backtraces are not supported by the platform.
Zoltan Varga [Wed, 13 Jan 2016 21:47:23 +0000 (16:47 -0500)]
[llvmonly] Create empty stacktraces if backtraces are not supported by the platform.

8 years ago[runtime] Disable a test which fails with bitcode.
Zoltan Varga [Wed, 13 Jan 2016 21:45:42 +0000 (16:45 -0500)]
[runtime] Disable a test which fails with bitcode.

8 years agoMerge pull request #2428 from akoeplinger/fix-ipv6-test
Alexander Köplinger [Wed, 13 Jan 2016 17:11:33 +0000 (18:11 +0100)]
Merge pull request #2428 from akoeplinger/fix-ipv6-test

[System] Ignore ReceiveIPv6() UdpClient test when IPv6 is not available

8 years ago[aot] Avoid overwriting entries in domain->seq_points if decode_exception_debug_info...
Zoltan Varga [Wed, 13 Jan 2016 17:10:08 +0000 (12:10 -0500)]
[aot] Avoid overwriting entries in domain->seq_points if decode_exception_debug_info () is called more than once. Fixes #37582.

8 years ago[System] Ignore ReceiveIPv6() UdpClient test when IPv6 is not available
Alexander Köplinger [Wed, 13 Jan 2016 15:48:47 +0000 (16:48 +0100)]
[System] Ignore ReceiveIPv6() UdpClient test when IPv6 is not available

The test hangs on Jenkins otherwise.

8 years ago[System] xamarin_start_wwan is not available for tvOS and watchOS.
Rolf Bjarne Kvinge [Wed, 13 Jan 2016 13:53:15 +0000 (14:53 +0100)]
[System] xamarin_start_wwan is not available for tvOS and watchOS.

8 years agoMerge pull request #2274 from esdrubal/udpclientreceive
Marcos Henrich [Wed, 13 Jan 2016 10:17:38 +0000 (10:17 +0000)]
Merge pull request #2274 from esdrubal/udpclientreceive

Fixes UdpClient.Receive with IPv6 endpoint

8 years agoMerge pull request #2423 from radical/mcs-args
Marek Safar [Wed, 13 Jan 2016 07:37:24 +0000 (08:37 +0100)]
Merge pull request #2423 from radical/mcs-args

[mcs] Accept and ignore command line args supported by csc ..

8 years agoRevert "[System] Tweak tests to work with Thread.Interrupt as well."
Alex Rønne Petersen [Wed, 13 Jan 2016 04:48:04 +0000 (05:48 +0100)]
Revert "[System] Tweak tests to work with Thread.Interrupt as well."

This reverts commit bb50c3f3c943ea85d49df160d45f8edea0005d10.

8 years agoRevert "[bcl] Fix System.Net.HttpWebRequestTest.GetRequestStream hang"
Alex Rønne Petersen [Thu, 10 Dec 2015 17:23:22 +0000 (18:23 +0100)]
Revert "[bcl] Fix System.Net.HttpWebRequestTest.GetRequestStream hang"

This reverts commit b3fa096e5eceea1c3b289b3655244a42c2884274.

The Abort () call is problematic on many platforms and is no longer necessary
as we properly close the listening socket since 1103abf3830131ba2a1deabc133e8d27402302c7.

Conflicts:

mcs/class/System.Web.Services/Test/System.Web.Services.Protocols/SocketResponder.cs
mcs/class/System/Test/System.Net/SocketResponder.cs

8 years ago[TPL] Add support for the <ThrowUnobservedTaskExceptions /> config element.
Alex Rønne Petersen [Wed, 13 Jan 2016 03:52:36 +0000 (04:52 +0100)]
[TPL] Add support for the <ThrowUnobservedTaskExceptions /> config element.

Improves the situation wrt: https://bugzilla.xamarin.com/show_bug.cgi?id=36560

8 years agoMerge pull request #2422 from akoeplinger/environment-is64bitoperatingsystem
João Matos [Wed, 13 Jan 2016 01:55:01 +0000 (01:55 +0000)]
Merge pull request #2422 from akoeplinger/environment-is64bitoperatingsystem

[corlib] Properly implement Environment.Is64BitOperatingSystem

8 years ago[corlib] Properly implement Environment.Is64BitOperatingSystem
Alexander Köplinger [Tue, 12 Jan 2016 15:51:13 +0000 (16:51 +0100)]
[corlib] Properly implement Environment.Is64BitOperatingSystem

Before we only checked if IntPtr.Size == 8, but this returns false for a 32bit Mono running on a 64bit OS.
Added an icall that gets the correct value from the runtime instead.

Note: this currently only whitelists x86_64, aarch64 and ppc64 as 64-bit platforms.

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=37414

8 years agoMerge pull request #2261 from BrzVlad/fix-arm-fast-tls-master
Vlad Brezae [Wed, 13 Jan 2016 01:31:33 +0000 (03:31 +0200)]
Merge pull request #2261 from BrzVlad/fix-arm-fast-tls-master

[arm] Fix arm fast tls

8 years ago[mcs] Accept and ignore command line args supported by csc ..
Ankit Jain [Fri, 8 Jan 2016 21:15:22 +0000 (16:15 -0500)]
[mcs] Accept and ignore command line args supported by csc ..

.. that we don't support:

/utf8output
/subsystemversion
/highentropyva
/highentropyva+
/highentropyva-

8 years ago[llvmonly] Avoid disabling llvm for the Selector.GetHandle () intrinsics.
Zoltan Varga [Tue, 12 Jan 2016 19:39:55 +0000 (14:39 -0500)]
[llvmonly] Avoid disabling llvm for the Selector.GetHandle () intrinsics.

8 years ago[llvmonly] Fix support for variant interface methods, they work similarly to generic...
Zoltan Varga [Tue, 12 Jan 2016 19:23:24 +0000 (14:23 -0500)]
[llvmonly] Fix support for variant interface methods, they work similarly to generic virtual methods.

8 years agoRevert "Apple has introduced the System Integrety Protection in OS X 10.11. This...
Joao Matos [Tue, 12 Jan 2016 17:40:46 +0000 (17:40 +0000)]
Revert "Apple has introduced the System Integrety Protection in OS X 10.11. This prevents writes to /usr amongst other paths. /usr/local is still writable though."

This reverts commit b723c89628187ab138334c108e16d62bc9530d6e.

@migueldeicaza thinks this is the wrong approach, reverting until we figure out the right way to go about this.

8 years ago[llvm] Ignore OP_IL_SEQ_POINT.
Zoltan Varga [Tue, 12 Jan 2016 17:26:30 +0000 (12:26 -0500)]
[llvm] Ignore OP_IL_SEQ_POINT.

8 years agoMerge pull request #2418 from lambdageek/dev/bug-12205
Aleksey Kliger (λgeek) [Tue, 12 Jan 2016 16:50:10 +0000 (11:50 -0500)]
Merge pull request #2418 from lambdageek/dev/bug-12205

[reflection] Correct ReflectedType for generic methods

8 years ago[aot] Add support for name mangling for more types.
Zoltan Varga [Tue, 12 Jan 2016 15:33:36 +0000 (10:33 -0500)]
[aot] Add support for name mangling for more types.

8 years ago[reflection] Test MethodInfo.ReflectedType property
Aleksey Kliger [Mon, 11 Jan 2016 17:10:23 +0000 (12:10 -0500)]
[reflection] Test MethodInfo.ReflectedType property

Test cases for [#12205](https://bugzilla.xamarin.com/show_bug.cgi?id=12205)

8 years ago[mscorlib] Add support for intercepting threadpool work, and use it for Xamarin.iOS...
Rolf Bjarne Kvinge [Fri, 8 Jan 2016 18:50:34 +0000 (19:50 +0100)]
[mscorlib] Add support for intercepting threadpool work, and use it for Xamarin.iOS/Mac.

This is used to Xamarin.iOS/Mac to wrap threadpool work in an NSAutoreleasePool.

Also open up corlib's internals to Xamarin.iOS/Mac so that the linker
doesn't have to be involved when accessing internal API.

8 years ago[reflection] remove override get ReflectedType for MonoGenericMethod and MonoGenricCM...
Aleksey Kliger [Mon, 11 Jan 2016 16:31:47 +0000 (11:31 -0500)]
[reflection] remove override get ReflectedType for MonoGenericMethod and MonoGenricCMethod

Should return the type that was queried, not the type where the method
is declared.

Fixes [#12205](https://bugzilla.xamarin.com/show_bug.cgi?id=12205)

8 years ago[runtime] Bump version to 4.3.3.
Zoltan Varga [Mon, 11 Jan 2016 17:01:10 +0000 (12:01 -0500)]
[runtime] Bump version to 4.3.3.

8 years agoMerge pull request #2382 from akoeplinger/system-net-mime-referencesource
Alexander Köplinger [Mon, 11 Jan 2016 13:13:37 +0000 (14:13 +0100)]
Merge pull request #2382 from akoeplinger/system-net-mime-referencesource

[System] Port System.Net.Mime namespace from referencesources

8 years ago[mcs] Fixes inconsistent accessibility check for partial types. Fixes #37232
Marek Safar [Mon, 11 Jan 2016 12:30:53 +0000 (13:30 +0100)]
[mcs] Fixes inconsistent accessibility check for partial types. Fixes #37232

8 years ago[llvm] Allow support for emitting some methods using 'linkonce' linkage. This allows...
Zoltan Varga [Sun, 10 Jan 2016 12:57:28 +0000 (07:57 -0500)]
[llvm] Allow support for emitting some methods using 'linkonce' linkage. This allows the linker to get rid of duplicate copies. Enable it for gsharedvt wrappers.

8 years agoMerge pull request #2415 from razzfazz/fix_timespec
Alexander Köplinger [Sat, 9 Jan 2016 21:42:14 +0000 (22:42 +0100)]
Merge pull request #2415 from razzfazz/fix_timespec

fix struct timespec member name

8 years agoMerge pull request #2414 from akoeplinger/fix-threadpool-test-hang
Zoltan Varga [Sat, 9 Jan 2016 20:45:56 +0000 (15:45 -0500)]
Merge pull request #2414 from akoeplinger/fix-threadpool-test-hang

[corlib] Don't throw exception for null locale to fix threadpool-exceptions5.exe hang

8 years agofix struct timespec member name
Daniel Becker [Sat, 9 Jan 2016 19:43:08 +0000 (11:43 -0800)]
fix struct timespec member name

The second member of struct timespec is actually called tv_nsec
(nanoseconds), not tv_usec (microseconds); this was likely
confused with struct timeval, where the second member is in fact
called tv_usec.

8 years ago[corlib] Don't throw exception for null locale to fix threadpool-exceptions5.exe...
Alexander Köplinger [Sat, 9 Jan 2016 20:11:08 +0000 (21:11 +0100)]
[corlib] Don't throw exception for null locale to fix threadpool-exceptions5.exe hang

We were seeing persistent hangs in the threadpool-exceptions5.exe test on the Jenkins ARM machines.
Tracing the execution showed the following exceptions:

```
[0x7f65e3284700:] EXCEPTION handling: System.Threading.ThreadAbortException:
[0x7f65e3284700:] EXCEPTION handling: System.Exception: From OnCBFinished
[0x7f65e3284700:] EXCEPTION handling: System.ArgumentNullException: Value cannot be null.  <-- from CultureInfo.CreateSpecificCulture()
Parameter name: name
[0x7f65e3284700:] EXCEPTION handling: System.Threading.ThreadAbortException:
exception inside UnhandledException handler:

... program hangs here ...
```

It turns out that the machines don't have the LANG/LC_ALL env vars set, resulting in a null string returned
from get_current_locale_name(). The code then tries to construct a locale from that and throws an ANE which is
normally catched and turned into the InvariantCulture.

However, in the threadpool-exceptions5 test the first time a CultureInfo is created is in the OnUnhandledException
event handler when calling ToString(). This means that an exception is thrown while we are in the unhandled exception
handler and the runtime apparently just stops there (despite the exception actually being catched, probably because of
the thread abort) so we never get to signaling the monitor object -> we hang in Main().

The fix is to not rely on catching the ArgumentNullException when we get a null locale, which is a better approach anyway.

To easily reproduce the issue before the fix, use the following (on Linux only, we don't use LANG for locale on OSX):

```
~/dev/mono/mono/tests$ LANG=C MONO_PATH=../../mcs/class/lib/net_4_x/ ../mini/mono-sgen --trace=N:nothing threadpool-exceptions5.exe
```

Note: If you pass an invalid LANG=foo, the hang is still there as we throw a CultureNotFoundException and hit the same issue.
As the behavior looks like a runtime bug to me I filed https://bugzilla.xamarin.com/show_bug.cgi?id=37547

8 years ago[llvmonly] Avoid creating an empty output file for the JITted code.
Zoltan Varga [Sat, 9 Jan 2016 17:21:51 +0000 (12:21 -0500)]
[llvmonly] Avoid creating an empty output file for the JITted code.

8 years ago[llvmonly] Avoid emitting the 'globals' aot table, its not used in llvmonly mode.
Zoltan Varga [Sat, 9 Jan 2016 16:19:48 +0000 (11:19 -0500)]
[llvmonly] Avoid emitting the 'globals' aot table, its not used in llvmonly mode.

8 years agoMerge pull request #2412 from akoeplinger/disable-thread-test
Zoltan Varga [Sat, 9 Jan 2016 13:08:55 +0000 (08:08 -0500)]
Merge pull request #2412 from akoeplinger/disable-thread-test

[corlib] Disable Thread test that started failing after d5768a7f141e2a579cbca26f76c791c215f4aabf

8 years ago[corlib] Disable Thread test that started failing after d5768a7f141e2a579cbca26f76c79...
Alexander Köplinger [Sat, 9 Jan 2016 02:47:32 +0000 (03:47 +0100)]
[corlib] Disable Thread test that started failing after d5768a7f141e2a579cbca26f76c791c215f4aabf

Setting the priority before starting a Thread doesn't work right now as there's no handle to the native
thread at that point (the current implementation doesn't store the priority, it just tries setting it
on the native thread) so the test would remember the default 'Normal' priority instead of 'BelowNormal',
causing the test to fail later on.

Added an assert to verify that the thread priority can be set before starting and disable the test for now.

Note: variable names 'before' and 'after' were switched in the test, fixed those as well.

8 years ago[llvm] Error out when using --aot=llvmonly if the runtime is not compiled with -...
Zoltan Varga [Fri, 8 Jan 2016 21:22:09 +0000 (16:22 -0500)]
[llvm] Error out when using --aot=llvmonly if the runtime is not compiled with --enable-gsharedvt.

8 years ago[csharp/getline] Add support for completion popup windows
Miguel de Icaza [Fri, 8 Jan 2016 21:20:51 +0000 (16:20 -0500)]
[csharp/getline] Add support for completion popup windows

This adds supprot to the getline.cs library to provide popup windows with
completion results.   There is a new public string property surfaced,
HeuristicsMode, that if set to "csharp" will trigger the completion window
independently of the "tab" character, based on the user input.

This mode triggers completion after the "." character is entered, and will
continue to trigger it as long as you type, or you backspace and the completion
succeeds.   The heuristic also ignores scenarios like "1.2", so there is no
compeltion provided after entering numbers by default.

Perhaps we can later introduce a "OnKeyEntered" command that users could
use to provide their own heuristics to control whether to popup the window
or not.

8 years ago[linker] do not use System.IO.Path on assembly resource names
Radek Doulik [Fri, 8 Jan 2016 20:44:50 +0000 (21:44 +0100)]
[linker] do not use System.IO.Path on assembly resource names

  - fixes #37305

  - resource name can be general string and using it as path
    might throw

       System.ArgumentException: Illegal characters in path.

  - it would be possible to check for the path's invalid characters in
    the resource name. that would cause crossplatform issues
    though.

    various platforms have different invalid charactes sets for path
    names. for example using assembly built on mac with embedded
    linker blacklisting xml file, which's name contains characters in
    its filename which are invalid on windows. so the windows built
    app using that assembly would fail mysteriously, because the
    important parts wouldn't be preserved.

    thus we use just string comparison

8 years ago[io-layer] Revert 31f13881a483201933b16e75d47a6d103d959a64 and fix it in a simpler way
Alexander Köplinger [Fri, 8 Jan 2016 20:58:40 +0000 (21:58 +0100)]
[io-layer] Revert 31f13881a483201933b16e75d47a6d103d959a64 and fix it in a simpler way

We don't need the configure.ac check as we can just directly check if the macro is defined.

8 years ago[runtime] Bump AOT file format version.
Zoltan Varga [Fri, 8 Jan 2016 20:45:25 +0000 (15:45 -0500)]
[runtime] Bump AOT file format version.

8 years ago[io-layer] Fix build on OSX
Alexander Köplinger [Fri, 8 Jan 2016 20:37:40 +0000 (21:37 +0100)]
[io-layer] Fix build on OSX

This got broken by d5768a7f141e2a579cbca26f76c791c215f4aabf, SCHED_BATCH isn't available on OSX or Linux before 2.6.16

8 years ago[llvmonly] Enable more tests.
Zoltan Varga [Fri, 8 Jan 2016 20:18:52 +0000 (15:18 -0500)]
[llvmonly] Enable more tests.

8 years ago[llvmonly] Fix gsharedvt calls from gsharedvt methods.
Zoltan Varga [Fri, 8 Jan 2016 20:18:41 +0000 (15:18 -0500)]
[llvmonly] Fix gsharedvt calls from gsharedvt methods.

8 years agoMerge pull request #2384 from akoeplinger/system-net-sockets-referencesource
Alexander Köplinger [Fri, 8 Jan 2016 20:06:31 +0000 (21:06 +0100)]
Merge pull request #2384 from akoeplinger/system-net-sockets-referencesource

[System] Initial port of System.Net.Sockets types from referencesource

8 years ago[System.Web] Add test for 9c254393200eb6a23bea67c053ed467a023cc0e4
Alexander Köplinger [Fri, 8 Jan 2016 19:54:09 +0000 (20:54 +0100)]
[System.Web] Add test for 9c254393200eb6a23bea67c053ed467a023cc0e4

Test case from https://bugzilla.xamarin.com/show_bug.cgi?id=13909

8 years agoFix RouteCollection not correctly clearing itself
James Venning [Wed, 6 Jan 2016 05:09:02 +0000 (15:09 +1000)]
Fix RouteCollection not correctly clearing itself

8 years agoImplement a SetPriority/GetPriority facility for real-time threads: if
Neale [Tue, 22 Dec 2015 20:45:56 +0000 (15:45 -0500)]
Implement a SetPriority/GetPriority facility for real-time threads: if
mono is executed using the SCHED_RR policy, we will map POSIX priorities
to .NET priorities. Under this policy a thread running under this policy
which uses the SetPriority API will have its priority remapped and a
call to pthread_setschedparam() made to change its priority.

The following code fragment may be used to run a mono application
without requiring all root privileges other than the CAP_SYS_NICE
capability which enables priority manipulation:

void
runMonoRT(const char *const name, const int policy, char **argv)
{
    const pid_t         me = getpid();
    struct sched_param  param;

    param.sched_priority = sched_get_priority_min(policy);
    if (sched_setscheduler(me, policy, &param) == -1)
        fprintf(stderr, "sched_setscheduler(getpid(), %s, { %d }): %s.\n",
name, param.sched_priority, strerror(errno));
    else
        execvp("mono", argv);
}

int
main(int argc, char **argv)
{
    uid_t       user;
    cap_value_t root_caps[2] = { CAP_SYS_NICE, CAP_SETUID };
    cap_value_t user_caps[1] = { CAP_SYS_NICE };
    cap_t       capabilities;

    /* Get real user ID. */
    user = getuid();

    /* Get full root privileges. Normally being effectively root
     * (see man 7 credentials, User and Group Identifiers, for explanation
     *  for effective versus real identity) is enough, but some security
     * modules restrict actions by processes that are only effectively root.
     * To make sure we don't hit those problems, we switch to root fully. */
    if (setresuid(0, 0, 0)) {
        fprintf(stderr, "Cannot switch to root: %s.\n", strerror(errno));
        return 1;
    }

    /* Create an empty set of capabilities. */
    capabilities = cap_init();

    /* Capabilities have three subsets:
     *      INHERITABLE:    Capabilities permitted after an execv()
     *      EFFECTIVE:      Currently effective capabilities
     *      PERMITTED:      Limiting set for the two above.
     * See man 7 capabilities for details, Thread Capability Sets.
     *
     * We need the following capabilities:
     *      CAP_SYS_NICE    For nice(2), setpriority(2),
     *                      sched_setscheduler(2), sched_setparam(2),
     *                      sched_setaffinity(2), etc.
     *      CAP_SETUID      For setuid(), setresuid()
     * in the last two subsets. We do not need to retain any capabilities
     * over an exec().
    */
    if (cap_set_flag(capabilities, CAP_PERMITTED, sizeof root_caps / sizeof root_caps[0], root_caps, CAP_SET) ||
        cap_set_flag(capabilities, CAP_EFFECTIVE, sizeof root_caps / sizeof root_caps[0], root_caps, CAP_SET)) {
        fprintf(stderr, "Cannot manipulate capability data structure as root: %s.\n", strerror(errno));
        return 1;
    }

    /* Above, we just manipulated the data structure describing the flags,
     * not the capabilities themselves. So, set those capabilities now. */
    if (cap_set_proc(capabilities)) {
        fprintf(stderr, "Cannot set capabilities as root: %s.\n", strerror(errno));
        return 1;
    }

    /* We wish to retain the capabilities across the identity change,
     * so we need to tell the kernel. */
    if (prctl(PR_SET_KEEPCAPS, 1L)) {
        fprintf(stderr, "Cannot keep capabilities after dropping privileges: %s.\n", strerror(errno));
        return 1;
    }

    /* Drop extra privileges (aside from capabilities) by switching
     * to the original real user. */
    if (setresuid(user, user, user)) {
        fprintf(stderr, "Cannot drop root privileges: %s.\n", strerror(errno));
        return 1;
    }

    /* We can still switch to a different user due to having the CAP_SETUID
     * capability. Let's clear the capability set, except for the CAP_SYS_NICE
     * in the permitted and effective sets. */
    if (cap_clear(capabilities)) {
        fprintf(stderr, "Cannot clear capability data structure: %s.\n", strerror(errno));
        return 1;
    }
    if (cap_set_flag(capabilities, CAP_PERMITTED, sizeof user_caps / sizeof user_caps[0], user_caps, CAP_SET) ||
        cap_set_flag(capabilities, CAP_EFFECTIVE, sizeof user_caps / sizeof user_caps[0], user_caps, CAP_SET)) {
        fprintf(stderr, "Cannot manipulate capability data structure as user: %s.\n", strerror(errno));
        return 1;
    }

    /* Apply modified capabilities. */
    if (cap_set_proc(capabilities)) {
        fprintf(stderr, "Cannot set capabilities as user: %s.\n", strerror(errno));
        return 1;
    }

    /*
     * Now we have just the normal user privileges,
     * plus user_caps.
    */
    runMonoRT("SCHED_RR", SCHED_RR, argv);

    return 0;
}

8 years agoMerge pull request #2411 from rolfbjarne/parse-debug-optionsapi-doc
João Matos [Fri, 8 Jan 2016 18:00:49 +0000 (18:00 +0000)]
Merge pull request #2411 from rolfbjarne/parse-debug-optionsapi-doc

Document mini_parse_debug_option

8 years ago[mini] Document mini_parse_debug_option.
Rolf Bjarne Kvinge [Fri, 8 Jan 2016 17:35:09 +0000 (18:35 +0100)]
[mini] Document mini_parse_debug_option.

8 years ago[mini] Rename mini_parse_debug_option's argument to match the header file (and match...
Rolf Bjarne Kvinge [Fri, 8 Jan 2016 17:34:57 +0000 (18:34 +0100)]
[mini] Rename mini_parse_debug_option's argument to match the header file (and match better the usage).

8 years ago[man/mono.1] Fix typo.
Rolf Bjarne Kvinge [Fri, 8 Jan 2016 17:32:16 +0000 (18:32 +0100)]
[man/mono.1] Fix typo.

8 years ago[System] Initial port of System.Net.Sockets types from referencesource
Alexander Köplinger [Thu, 24 Dec 2015 02:45:38 +0000 (03:45 +0100)]
[System] Initial port of System.Net.Sockets types from referencesource

These are the more trivial ones.

Needed a mono_corlib_version bump because some Socket field names changed to the MS version.

8 years agoMerge pull request #2363 from eriklarko/master
João Matos [Fri, 8 Jan 2016 15:26:25 +0000 (15:26 +0000)]
Merge pull request #2363 from eriklarko/master

SpecialFolder.CommonApplicationData support for El Capitan

8 years agoMerge pull request #2410 from steffen-kiess/fix-monop
João Matos [Fri, 8 Jan 2016 15:15:30 +0000 (15:15 +0000)]
Merge pull request #2410 from steffen-kiess/fix-monop

[monop] Fix NullReferenceException in monop

8 years ago[monop] Fix NullReferenceException in monop
Steffen Kieß [Fri, 8 Jan 2016 15:04:03 +0000 (16:04 +0100)]
[monop] Fix NullReferenceException in monop

Fix a NullReferenceException in monop when printing a type name in a
namespace somewhere below System while working on a class which does not
have a namespace.

8 years ago[llvmonly] Extract the runtime invoke code into a separate function.
Zoltan Varga [Fri, 8 Jan 2016 15:02:33 +0000 (10:02 -0500)]
[llvmonly] Extract the runtime invoke code into a separate function.

8 years agoMerge pull request #2390 from schani/feature-bisector
João Matos [Fri, 8 Jan 2016 14:03:32 +0000 (14:03 +0000)]
Merge pull request #2390 from schani/feature-bisector

Automatic optimization bug bisector.

8 years agoMerge pull request #2409 from rolfbjarne/parse-debug-options-api
João Matos [Fri, 8 Jan 2016 13:39:22 +0000 (13:39 +0000)]
Merge pull request #2409 from rolfbjarne/parse-debug-options-api

[runtime] Add API to set debug options without going through MONO_DEBUG.

8 years ago[aot] Print the number of different kinds of methods when printing stats.
Zoltan Varga [Fri, 8 Jan 2016 12:34:47 +0000 (07:34 -0500)]
[aot] Print the number of different kinds of methods when printing stats.

8 years ago[runtime] Add API to set debug options without going through MONO_DEBUG.
Rolf Bjarne Kvinge [Fri, 8 Jan 2016 12:31:03 +0000 (13:31 +0100)]
[runtime] Add API to set debug options without going through MONO_DEBUG.

This is useful for embedders.

8 years ago[llvmonly] Add support for nullable return types in runtime invoke code, so it can...
Zoltan Varga [Fri, 8 Jan 2016 12:12:52 +0000 (07:12 -0500)]
[llvmonly] Add support for nullable return types in runtime invoke code, so it can be used for all methods. Avoid emitting most runtime invoke wrappers in llvm-only mode, they are not needed any more.

8 years ago[llvmonly] Enable some tests which now work.
Zoltan Varga [Fri, 8 Jan 2016 11:13:28 +0000 (06:13 -0500)]
[llvmonly] Enable some tests which now work.

8 years ago[llvmonly] Fix support for gsharedvt delegate invoke wrappers, they need to dynamical...
Zoltan Varga [Fri, 8 Jan 2016 11:09:28 +0000 (06:09 -0500)]
[llvmonly] Fix support for gsharedvt delegate invoke wrappers, they need to dynamically check whenever the called method uses a gsharedvt calling conv.

8 years ago[amd64] Only use the gsharedvt calling conv for variable sized gsharedvt arguments.
Zoltan Varga [Fri, 8 Jan 2016 11:08:47 +0000 (06:08 -0500)]
[amd64] Only use the gsharedvt calling conv for variable sized gsharedvt arguments.

8 years ago[runtime] Set the wrapper info correctly for generic delegate-invoke wrappers.
Zoltan Varga [Fri, 8 Jan 2016 11:04:44 +0000 (06:04 -0500)]
[runtime] Set the wrapper info correctly for generic delegate-invoke wrappers.

8 years agoMerge pull request #2406 from vkargov/master
João Matos [Fri, 8 Jan 2016 00:43:11 +0000 (00:43 +0000)]
Merge pull request #2406 from vkargov/master

Fix the format statements in mono-gdb.

8 years agoFix the format statements in mono-gdb.
Vladimir Kargov [Thu, 7 Jan 2016 23:37:14 +0000 (15:37 -0800)]
Fix the format statements in mono-gdb.

8 years ago[ppdb] Fail fast when trying to load an .mdb file from memory.
Zoltan Varga [Thu, 7 Jan 2016 20:59:50 +0000 (15:59 -0500)]
[ppdb] Fail fast when trying to load an .mdb file from memory.

8 years ago[llvmonly] Share more signatures.
Zoltan Varga [Thu, 7 Jan 2016 20:29:03 +0000 (15:29 -0500)]
[llvmonly] Share more signatures.

8 years ago[llvmonly] Change the way delegate invokes are implemented, use a new CEE_MONO_CALLI_...
Zoltan Varga [Thu, 7 Jan 2016 18:08:26 +0000 (13:08 -0500)]
[llvmonly] Change the way delegate invokes are implemented, use a new CEE_MONO_CALLI_EXTRA_ARG il instruction so most of the logic is in the JIT, not in marshal.c.

8 years ago[llvmonly] Remove the old llvmonly runtime support code, its not needed anymore.
Zoltan Varga [Thu, 7 Jan 2016 17:39:53 +0000 (12:39 -0500)]
[llvmonly] Remove the old llvmonly runtime support code, its not needed anymore.

8 years agoMerge pull request #2333 from joelmartinez/docs-classic-fix
Jonathan Pryor [Thu, 7 Jan 2016 16:06:54 +0000 (11:06 -0500)]
Merge pull request #2333 from joelmartinez/docs-classic-fix

[mdoc] Added -api-style parameter.

8 years agoBump referencesource to get changes for multiple appdomain removal.
Rolf Bjarne Kvinge [Thu, 7 Jan 2016 12:37:54 +0000 (13:37 +0100)]
Bump referencesource to get changes for multiple appdomain removal.

8 years ago[corlib] Remove multiple appdomain support (AppDomain.CreateDomain, etc) from tvOS...
Rolf Bjarne Kvinge [Wed, 16 Dec 2015 18:20:33 +0000 (19:20 +0100)]
[corlib] Remove multiple appdomain support (AppDomain.CreateDomain, etc) from tvOS/watchOS.

8 years ago[llvm] Fix support for aot data files.
Zoltan Varga [Thu, 7 Jan 2016 11:58:41 +0000 (06:58 -0500)]
[llvm] Fix support for aot data files.

8 years ago[llvmonly] Remove some duplicate code.
Zoltan Varga [Thu, 7 Jan 2016 11:43:11 +0000 (06:43 -0500)]
[llvmonly] Remove some duplicate code.

8 years ago[llvmonly] Share more signatures in the gsharedvt in/out wrappers.
Zoltan Varga [Wed, 6 Jan 2016 16:56:09 +0000 (11:56 -0500)]
[llvmonly] Share more signatures in the gsharedvt in/out wrappers.

8 years ago[llvmonly] Fix a case where a non-virtual method was called using callvirt.
Zoltan Varga [Wed, 6 Jan 2016 16:55:31 +0000 (11:55 -0500)]
[llvmonly] Fix a case where a non-virtual method was called using callvirt.

8 years ago[mdoc] Added -api-style parameter.
Joel Martinez [Fri, 11 Dec 2015 21:19:57 +0000 (16:19 -0500)]
[mdoc] Added -api-style parameter.
You must now add the -api-style parameter when running mdoc update for a set of classic or unified assemblies.
This was added in order to properly support types and members that exist only in one or the other set.
Previously, there was an assumption that all types and members would be reflected in both classic and
unified versions of an assembly.

8 years ago[aot] Fix emission of external aot data by aligning tables in the file.
Rolf Bjarne Kvinge [Wed, 6 Jan 2016 12:56:43 +0000 (13:56 +0100)]
[aot] Fix emission of external aot data by aligning tables in the file.

The table reading code depends on data being aligned, so make sure it is.

8 years ago[runtime] Fix the DISABLE_JIT build.
Zoltan Varga [Wed, 6 Jan 2016 12:57:59 +0000 (07:57 -0500)]
[runtime] Fix the DISABLE_JIT build.

8 years ago[llvmonly] Add support for runtime invokes with nullable arguments.
Zoltan Varga [Wed, 6 Jan 2016 12:51:12 +0000 (07:51 -0500)]
[llvmonly] Add support for runtime invokes with nullable arguments.

8 years agoMerge pull request #2174 from stukselbax/master
Alex Rønne Petersen [Wed, 6 Jan 2016 10:32:28 +0000 (11:32 +0100)]
Merge pull request #2174 from stukselbax/master

[WCF] WebHttpBinding must use http scheme in case when SecurityMode == WebHttpSecurityMode.TransportCredentialOnly