Skip to content
Branch: master
Commits on Mar 13, 2019
  1. Bump corefx for System.Native posix_fadvise change (#13409)

    NattyNarwhal authored and akoeplinger committed Mar 13, 2019
Commits on Mar 11, 2019
  1. Fix System.Decimal regression from .NET Core on big endian (#13348)

    NattyNarwhal authored and marek-safar committed Mar 11, 2019
    Upstream must have rewritten, because the runtime checks were
    replaced with the (not good for Mono) ifdefs.
    Not throughly tested, but unbreaks build locally; waiting for CI
    to come back with more results.
    If it works, could someone get this upstream?
Commits on Mar 2, 2019
  1. More PPC/AIX regression fixes (#13264)

    NattyNarwhal authored and akoeplinger committed Mar 2, 2019
    * Fix System.Math regressions brought on by PowerPC JIT optimizations
    	* While frin[.] does do rounding, the semantics are slightly
    	  different enough from the BCL that it subtly breaks, as
    	  seen by some tests. Ceil/Floor/Trunc are fine, however.
    	  Perhaps the sysmath.c version can be translated to asma.
    	* Fix typo where signed long comparison for isel was using
    	  an unsigned comparison.
    	  Add a test for this in the JIT regression check.
    * Link against (not fd.o) libbsd for System.Native on AIX
    The way we link the library by default will allow some unresolved
    symbols. These will get resolved to the runtime when loaded by it.
    However, flock isn't in AIX libc, and the native library needs it.
    This doesn't seem to be a problem on AIX, but on i libbsd doesn't
    seem to be in the dependency chain, so it errors out when you use
    it. The workaround is to link libbsd (not the one)
    into the library. According to dump, it seems it has its own copy
    of ioctl and fnctl, but they seem benign according to objdump and
    don't seem to affect System and corlib tests I've ran to check it.
Commits on Feb 28, 2019
  1. PPC JIT optimizations (System.Math instruction inlining) (#11964)

    NattyNarwhal authored and luhenry committed Feb 28, 2019
    * [ppc] Optimize floating point performance in the JIT sqrt/sqrtf/abs
    * [ppc] Integer Min/Max inlining wiht POWER5 isel instruction
    Compresses a function call down to two instruction, for both signed
    and unsigned, long and int. Needs to check for POWE5 though, and I
    don't know the effects of this on ppc32. FP version using fsel is
    also desirable, but not in the scope of this commit.
    * [ppc] Check for POWER5 compatible CPU before using isel
    * [ppc] Don't use long min/max inlining for ppc32
    Other 64-bit operations are marked for ppc64 only.
    * [ppc] also ifdef that out for ppc32 too
    * [ppc] Rounding function optimizations
Commits on Feb 27, 2019
  1. [corlib] Simplify RuntimeInformation by getting OS name from the runt…

    NattyNarwhal authored and akoeplinger committed Feb 27, 2019
    …ime (#13164)
    We can get the the OS name similar to the architecture from the value that is used by the runtime for DllMaps.
    Cached the values into static fields so we only need to do the runtime icall once.
    Added all the existing OS names recognized by DllMap to RuntimeInformation.
    This also allows us to mark some corlib/System tests that hang the runtime on AIX as non-working.
Commits on Feb 10, 2019
  1. Fix build and use System.Native on FreeBSD (#12921)

    NattyNarwhal authored and marek-safar committed Feb 10, 2019
    * Required includes for system headers to behave on FreeBSD
    * System.Native on FreeBSD
Commits on Jan 15, 2019
  1. Bump CoreFX for AIX/FileSystemEnumerator fix (#12375)

    NattyNarwhal authored and akoeplinger committed Jan 15, 2019
Commits on Dec 13, 2018
  1. Update corefx submodule for AIX readdir_r fix (#12031)

    NattyNarwhal authored and akoeplinger committed Dec 13, 2018
    Exposes a race condition in CoreFX when gensources tries to enumerate Cecil sources. Run it without `--trace=all`, 86 sources found. Run it with, even if redirected to `/dev/null`, 132 sources found. Eeeeeek.
Commits on Dec 10, 2018
  1. for "build" config, import corlib common sources at unix instead (#11989

    NattyNarwhal authored and akoeplinger committed Dec 10, 2018
    ...of importing it at linux/macOS
    this unbreaks the build on "unix" platforms like FreeBSD and AIX
    (is this all needed files, and am I doing this right?)
Commits on Dec 6, 2018
  1. Fix regression with building PPC JIT (#11948)

    NattyNarwhal authored and lewurm committed Dec 6, 2018
    * Fix regression with building PPC JIT
    d5547b1 made an incorrect change
    to `mini-ppc.c` that wouldn't build; revert that file.
    * Switch to fixing mini-ops.h instead
Commits on Dec 5, 2018
  1. Fix PowerPC regression caused by tracing changes (#11907)

    NattyNarwhal authored and akoeplinger committed Dec 5, 2018
    2b029b3 broke ppc JIT tracing by
    moving it into mini and changing the arguments. Since the mini IR
    emitter handles tracing now, rip out the tracing code from the JIT.
    (Looks like SPARC will need a similar change, but someone needs to
    love SPARC first.)
Commits on Dec 3, 2018
  1. Fix lack of symbols in System.Native support lib on AIX (#11905)

    NattyNarwhal authored and akoeplinger committed Dec 3, 2018
    I forgot to fix to check for AIX and include the unix
    sources if so. Actually fixes #11895.
  2. Build System.Native for AIX/i (#11896)

    NattyNarwhal authored and akoeplinger committed Dec 3, 2018
    This will probably be needed in the future; and attempts to solve
    the issue with System.Random not working when running under Jenkins.
Commits on Nov 28, 2018
  1. Revert usage of gcc builtin for icache flush on ppc (#11815)

    NattyNarwhal authored and akoeplinger committed Nov 28, 2018
    This is a no-op on gcc ppc for AIX, Linux, and FreeBSD, and should
    not be used until gcc implements this. (It *does* on ARM, RISC-V,
    Alpha, and MIPS, however - but not PowerPC or x86, based on a skim
    of gcc source.)
    Should fix #11527.
Commits on Nov 21, 2018
  1. System.Net.NetworkInformation.NetworkInterface backend for AIX (#9454)

    NattyNarwhal authored and akoeplinger committed Nov 21, 2018
    Yes, I do know of a possible refactor, but why not get this working? This will enable `System.Net.Sockets.Socket` to depend IPv4/IPv6 are working, and thus, fix a LOT of issues on CI; a bunch of test suites have one or two things that depend on loopback, which is currently busted unless you nop out Socket's protocol check.
    Also made a note that the Mac version of the backend is actually likelier to work under other OSes. Structures are kinda ugly, but they work; it took a whole morning and night beating them into submission.
    Untested under PASE, though I've marked notes for self to what's different. (My guess: it works, but not as well as it should - but good enough so that Socket starts working again.)
    And hey, the Mac backend can't do this!
    csharp> NetworkInterface.GetAllNetworkInterfaces().Select(x => $"The MTU of {x.Name} is {x.GetIPProperties().GetIPv4Properties().Mtu}");
    { "The MTU of en0 is 1500", "The MTU of lo0 is 16896" }   
Commits on Nov 8, 2018
  1. Fix wasm mono showing print dialog twice on error (#11602)

    NattyNarwhal authored and akoeplinger committed Nov 8, 2018
    Fixes #11596.
Commits on Oct 8, 2018
  1. Mitigation for spawn FD closing taking forever with a big FD limit (#…

    NattyNarwhal authored and luhenry committed Oct 8, 2018
    * Mitigation for spawn FD closing taking forever with a big FD limit
    On systems with a large file descriptor limit, Mono takes a very
    long time to spawn a new process; with informal testing on the AIX
    CI builder, (with a POWER7) it took ~30 minutes. This is obviously
    very undesirable, but hand our is forced - libraries the user might
    be calling could be creating non-CLOEXEC files we're unaware of. As
    such, we started from the FD limit and worked our way down until we
    hit stdio. Using APIs such as posix_spawn aren't desirable as we do
    some fiddling with the child before we exec; and even then, closing
    FDs with posix_spawn relies on non-standard file actions like
    Solaris' addclosefrom not present on many systems. (All of this is
    unnecessary on Windows, of course.)
    This presents an alternative way (currently only implemented on AIX
    but with notes how for other platforms) to try to close the child's
    loose FDs before exec; by trying to get the highest number FD in
    use, then work our way down. In the event we can't, we simply fall
    back to the old logic.
    See #6555 for a discussion and the initial problem being mitigated.
    * Use an another strategy of closing only known to be open handles
    ...on FreeBSD and AIX.
    Use the kinfo_getfiles library call on FreeBSD and only close what's
    safe to close. On AIX, use the third and fourth arguments to getprocs
    to check what's open. However, the array to get all the handles takes
    1 MB, so allocate it on the heap; like what kinfo_getfiles does. We
    don't need to free these as the child will exec or exit, which blows
    it all away.
    The previous strategy from previous commit is still used and on AIX,
    * Add Linux strategy to fork FD close
    Tested on WSL, shows benefits with big FD ulimit.
Commits on Aug 22, 2018
  1. Fix runtime test suite with mcs (#10219)

    NattyNarwhal authored and akoeplinger committed Aug 22, 2018
    mcs doesn't have a -langversion:7.3 yet but -langversion:latest implies 7.3 (at the moment).
Commits on Aug 21, 2018
  1. IsDebuggerPresent for AIX (#9995)

    NattyNarwhal authored and monojenkins committed Aug 21, 2018
    IsDebuggerPresent for AIX
    checks self for the "process is traced" flag
  2. Use argv for cli_launcher on OSes that don't return full path for pro…

    NattyNarwhal authored and monojenkins committed Aug 21, 2018
    …cess names; fix mono_w32process_get_path on Free/NetBSD (#9860)
    Use argv for cli_launcher on OSes that don't return full path for process names; fix mono_w32process_get_path on Free/NetBSD
    Should fix process-leak test on AIX, maybe more. Also tested that it fixes the
    same behaviour on FreeBSD. Other OSes may be affected; consult and test with the
    files `w32process-unix-*.c`.
    From comments:
     * XXX: verify if other OSes need it; many platforms seem to have it so that
     * mono_w32process_get_path -> mono_w32process_get_name, and the name is not
     * necessarily a path instead of just the program name
     * mono_w32process_get_path on these can only return a name, not a path;
     * which may not be good for us if the mono command name isn't on $PATH,
     * like in CI scenarios. chances are argv based is fine if we inherited
     * the environment variables.
Commits on Aug 20, 2018
  1. Truncate MachineName (and UserDomainName) at first period (#9843)

    NattyNarwhal authored and akoeplinger committed Aug 20, 2018
    * Truncate MachineName (and UserDomainName) at first period
    Unix machines often put their FQDN as the host name, and domain
    name is used for things such as yp. As such, truncate the FQDN to
    just the hostname, as other Unix utilities seem to do.
    Matches the .NET Core and .NET Framework behaviour, and MS seems to
    require this for a future project. Fixes #9839.
    * Add a unit test for bug
    * Formatting tweaks
  2. [System.Runtime.InteropServices] Detect Arm/Arm64 in RuntimeInformati…

    NattyNarwhal authored and akoeplinger committed Aug 20, 2018
    …on (#10088)
    * For ProcessArchitecture, use the DllMap arch of the runtime.
    * For OSArchitecture, make an educated guess combining ProcessArchitecture and Environment.Is64BitOperatingSystem.
    * For non-Intel/ARM architectures, (supported by Mono and not on the chopping block are PPC32/64, z, and WebAssembly) please dogpile onto dotnet/corefx#30706.
Commits on Aug 14, 2018
  1. Fix mono_string_from_blob for big endian systems (#10072)

    NattyNarwhal authored and akoeplinger committed Aug 14, 2018
    (Commit attributed to @kumpera because he wrote this quick fix, thanks!)
    Fixes #10070
Commits on Aug 12, 2018
  1. Fix iconv in eglib, remove GNU libiconv-ism

    NattyNarwhal committed Aug 12, 2018
    iconv in eglib was broken due to a broken define. Also fix linking
    of iconv when iconv isn't in libc.
    Also remove the usage of a GNU libcharset specific function and rely
    on a standard POSIX function that outputs the same value on every
    modern Unixoid I've tried it on. (Ubuntu/macOS/i/FreeBSD)
    This comment explains a lot of things for the latter:
     * This function used used to use the "locale_charset" call in
     * libiconv's libcharset library. However, this isn't always
     * available on some systems, including ones with GNU libc. So,
     * instead use a function that's a standard part of POSIX2008.
     * nl_langinfo is in POSIX2008 and should be on any sane modern
     * Unix. With a UTF-8 locale, it should return "UTF-8" - this
     * has been verified with Ubuntu 18.04, FreeBSD 11, and i 7.3.
     * The motivation for using locale_charset was likely due to
     * the cruftiness of Unices back in ~2001; where you had to
     * manually query environment variables, and the values were
     * inconsistent between each other. Nowadays, if Linux, macOS,
     * AIX/PASE, and FreeBSD can all return the same values for a
     * UTF-8 locale, we can just use the value directly.
     * It should be noted that by default, this function will give
     * values for the "C" locale, unless `setlocale (LC_ALL, "")`
     * is ran to init locales - driver.c in mini does this for us.
Commits on Aug 10, 2018
  1. autotools fixes for AIX, FreeBSD and some stuff for Haiku (#9967)

    NattyNarwhal authored and akoeplinger committed Aug 10, 2018
    * Fix build on AIX
    	* crash reporting requires dladdr, a function AIX (at least
    	  the version on CI) lacks
    	* fix build with a powerpc64-*-(aix|os400)* triplet as IBM
    	  wishes to do
    * Fix some stuff for Haiku
    Some stuff requires CoreFX PAL changes that haven't been merged and
    thus one or two more items for configure to detect.
    	* sigaltstack is broken for haiku
    	* getifaddrs is available and PAL would like it, so fix it
    * Fix detection of flock64
    This erroneously detected flock64 on platforms that lacked it.
    Fixes the build of CoreFX PAL on FreeBSD and Haiku.
    * Fix flock64 define
    * Fix define for flock64 in PAL block
    * Remove nonsense comment that only applied to an older unreleased version of the patch
Commits on Aug 6, 2018
  1. System.IO.DriveInfo for AIX (#9777)

    NattyNarwhal authored and akoeplinger committed Aug 6, 2018
Commits on Aug 1, 2018
  1. Really fix CoreR[FT] version of System.Decimal for big endian (#9828)

    NattyNarwhal authored and marek-safar committed Aug 1, 2018
    The version imported and attempted to patch didn't work fully. This
    preserves the .NET representation while converting if directives to
    runtime checks, which CoreCLR inlines.
    Testing was done poking some values in the REPL and running some
    test suites (System.Json, System.Decimal) that broke as a result.
    mcs should also properly handle constants; again, the "bits" inside
    are consistent with amd64, and just converted as needed.
    Unless I fucked up, should fix #9772.
Commits on Jul 30, 2018
  1. Bump submodule for #9684 and mono/corefx#108 (#9773)

    NattyNarwhal authored and akoeplinger committed Jul 30, 2018
Commits on Jul 5, 2018
  1. Fix invalid preprocessor check for BE that broke System.Decimal (#9429)

    NattyNarwhal authored and akoeplinger committed Jul 5, 2018
    This bug has been lurking for four years, being introduced in commit
    5b2bb8c. BYTE_ORDER != G_BYTE_ORDER.
    Not throughly tested, but System.Decimal from csharp seems to return
    sane results again. (related: is z or AIX CI available for PR checks?
    if not, what test suite is System.Decimal under?)
    Also remove my shoddy workaround from a few months ago, it got the
    BCL building, but was incorrect.
Commits on Jul 4, 2018
  1. Tweaks for AIX in BoringSSL CMake (#9390)

    NattyNarwhal authored and akoeplinger committed Jul 4, 2018
Commits on Jun 22, 2018
  1. System.Diagnostics.Process improvements for AIX (#9180)

    NattyNarwhal authored and akoeplinger committed Jun 22, 2018
    * Fix Process.ProcessName on AIX
    AIX has a procfs with raw structures congruent with Solaris. For i,
    which lacks procfs, fall back to a libc call.
    This doesn't solve the Process weirdness that bungs up the test
    suite, but I hope it's a start.
    * Bye bye, annoying AIX setschedparam warning
    AIX (but weirdly, not i) complains every time you do this. Squelch
    the warning on AIX and avoid line noise.
    * Remove more assumptions of /proc on AIX
    	* should probably always use getprocs64 for w32process,
    	  but looks like we could just use proclib on the fallback?
    	* there's some more cases relating to resource usage stat,
    	  will have to investigate those cases further
    * Basic process modules support on AIX (but not i)
    Not aware of a PASE compatible API, but this will work on AIX. Not
    sure about .ModuleName versus .FileName, but it seems to fill it in...
Commits on Jun 19, 2018
  1. Add AIX CI badge (#9224)

    NattyNarwhal authored and akoeplinger committed Jun 19, 2018
    attempt at "the build is broken" development. it's marked (cs) like the others.
Commits on Jun 11, 2018
  1. Check for *_CLOEXEC flags used by CoreFX PAL

    NattyNarwhal authored and marek-safar committed Jun 4, 2018
Commits on Jun 1, 2018
  1. Make the sendfile with 6 args check use AC_TRY_LINK

    NattyNarwhal authored and marek-safar committed May 31, 2018
    This lets the linker catch any missing symbols, and fixes a problem
    I had building AIX with CoreFX PAL. Fixes #8979, though there may
    be more cases like this.
    dotnet/corefx#30012 is blocking on this.
Commits on May 19, 2018
  1. Small cleanups for mini-ppc.h (#8764)

    NattyNarwhal authored and vargaz committed May 19, 2018
    * mini-ppc-os.h doesn't exist. If the OS lacks a define,
    	  give an error instead of a broken include.
    	* Remove redundant Mac OS case.
    	* Move AIX define for sigaction above cross-compile case,
    	  so it won't get lost in the noise there.
You can’t perform that action at this time.