summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* rts: Fix off-by-one in snwprintf usagewip/windows-finalwip/windows-clang-joinBen Gamari2022-04-071-2/+5
|
* Accept spurious perf test shifts on WindowsBen Gamari2022-04-070-0/+0
| | | | | | | | | | | | | Metric Decrease: T16875 Metric Increase: T12707 T13379 T3294 T4801 T5321FD T5321Fun T783
* rts: Fallback to ucrtbase not msvcrtBen Gamari2022-04-071-3/+4
| | | | | Since we have switched to Clang the toolchain now links against ucrt rather than msvcrt.
* rts/CloneStack: Ensure that Rts.h is #included firstBen Gamari2022-04-071-2/+2
| | | | As is necessary on Windows.
*---. Merge branches 'wip/windows-high-codegen', 'wip/windows-high-linker', ↵Ben Gamari2022-04-0791-1240/+1585
|\ \ \ | | | | | | | | | | | | 'wip/windows-clang-2' and 'wip/lint-rts-includes' into wip/windows-clang-join
| | | * testsuite: Lint RTS #includeswip/lint-rts-includesBen Gamari2022-04-063-1/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Verifies two important properties of #includes in the RTS: * That system headers don't appear inside of a `<BeginPrivate.h>` block as this can hide system library symbols, resulting in very hard-to-diagnose linker errors * That no headers precede `Rts.h`, ensuring that __USE_MINGW_ANSI_STDIO is set correctly before system headers are included.
| | | * rts: Fix various #include issuesBen Gamari2022-04-0616-30/+28
| | | | | | | | | | | | | | | | This fixes various violations of the newly-added RTS includes linter.
| | | * rts: Move __USE_MINGW_ANSI_STDIO definition to PosixSource.hBen Gamari2022-04-062-12/+12
| | | | | | | | | | | | | | | | It's easier to ensure that this is included first than Rts.h
| | * | testsuite: Mark T9405 as broken on WindowsBen Gamari2022-04-071-1/+1
| | | | | | | | | | | | | | | | Due to #21361.
| | * | testsuite: Mark linker unloading tests as broken on WindowsBen Gamari2022-04-072-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Due to #20354. We will need to investigate this prior the release.
| | * | testsuite: Mark T20918 as broken on WindowsBen Gamari2022-04-071-4/+5
| | | | | | | | | | | | | | | | Our toolchain on Windows doesn't currently have Windows support.
| | * | testsuite: Update expected output from T5435 tests on WindowsBen Gamari2022-04-072-1/+3
| | | | | | | | | | | | | | | | | | | | I'll admit, I don't currently see *why* this output is reordered but it is a fairly benign difference and I'm out of time to investigate.
| | * | testsuite: Fix exit code of bounds checking tests on WindowsBen Gamari2022-04-071-1/+1
| | | | | | | | | | | | | | | | `abort` exits with 255, not 134, on Windows.
| | * | rts: Adjust RTS symbol table on Windows for ucrtBen Gamari2022-04-072-5/+5
| | | |
| | * | configure: Make environ decl check more robustBen Gamari2022-04-074-4/+25
| | | | | | | | | | | | | | | | | | | | Some platforms (e.g. Windows/clang64) declare `environ` in `<stdlib.h>`, not `<unistd.h>`
| | * | rts: Add missing newline in error messageBen Gamari2022-04-071-1/+1
| | | |
| | * | rts: Refactor and fix printf attributes on clangBen Gamari2022-04-073-26/+15
| | | | | | | | | | | | | | | | | | | | Clang on Windows does not understand the `gnu_printf` attribute; use `printf` instead.
| | * | testsuite: Mark T10420 as broken on WindowsBen Gamari2022-04-072-2/+3
| | | | | | | | | | | | | | | | Due to #21322.
| | * | testsuite: Mark TH_spliceE5_prof as unbroken on WindowsBen Gamari2022-04-061-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It was previously failing due to #18721 and now passes with the new toolchain. Closes #18721.
| | * | linker/PEi386: More descriptive error messageBen Gamari2022-04-061-1/+1
| | | |
| | * | hadrian: Build wrappers using ghc rather than ccBen Gamari2022-04-061-2/+2
| | | |
| | * | Bump text submoduleBen Gamari2022-04-061-0/+0
| | | |
| | * | Bump bytestring submoduleBen Gamari2022-04-061-0/+0
| | | |
| | * | hadrian: Disable ghci libraries when object merging is not availableBen Gamari2022-04-063-5/+19
| | | |
| | * | Bump process submoduleBen Gamari2022-04-061-0/+0
| | | | | | | | | | | | | | | | Fixes missing TEST_CC_OPTS in testsuite tests.
| | * | Bump Cabal submoduleBen Gamari2022-04-061-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | - Disable support for library-for-ghci on Windows as described in #21068. - Teach Cabal to use `ar -L` when available
| | * | testsuite/driver: Treat framework failures of fragile tests as non-fatalBen Gamari2022-04-061-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Previously we would report framework failures of tests marked as fragile as failures. Now we rather treat them as fragile test failures, which are not fatal to the testsuite run. Noticed while investigating #21293.
| | * | testsuite: Mark test-defaulting-plugin as fragile on WindowsBen Gamari2022-04-061-0/+2
| | | | | | | | | | | | | | | | | | | | Currently llvm-ar does not handle long file paths, resulting in occassional failures of these tests and #21293.
| | * | testsuite: Provide module definitions in T10955dynBen Gamari2022-04-064-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise the linker will export all symbols, including those provided by the RTS, from the produced shared object. Consequently, attempting to link against multiple objects simultaneously will cause the linker to complain that RTS symbols are multiply defined. Avoid this by limiting the DLL exports with a module definition file.
| | * | testsuite: Fix mk-big-objBen Gamari2022-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | I'm a bit unclear on how this previously worked as it attempted to build an executable without defining `main`.
| | * | testsuite: Split T13366 into two testsBen Gamari2022-04-065-17/+30
| | | | | | | | | | | | | | | | | | | | Split up the C and C++ uses since the latter is significantly more platform-dependent.
| | * | testsuite: Clean up tests depending on C++ std libBen Gamari2022-04-068-21/+10
| | | |
| | * | testsuite: Rework T13606 to avoid gcc dependenceBen Gamari2022-04-061-1/+2
| | | | | | | | | | | | | | | | | | | | Previously we used libgcc_s's import library in T13606. However, now that we ship with clang we no longer have this library. Instead we now use gdi32.
| | * | testsuite: Mark FloatFnInverses as fixedBen Gamari2022-04-061-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | The new toolchain has fixed it. Closes #15670.
| | * | testsuite: Mark T9405 as fixed on WindowsBen Gamari2022-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | I have not seen it fail since moving to clang. Closes #12714.
| | * | testsuite: Mark Windows as a libc++ platformBen Gamari2022-04-061-0/+2
| | | |
| | * | testsuite: Port T16514 to CBen Gamari2022-04-063-46/+32
| | | | | | | | | | | | | | | | | | | | Previously this test was C++ which made it a bit of a portability problem.
| | * | Drop -static-libgccBen Gamari2022-04-061-28/+2
| | | | | | | | | | | | | | | | This flag is not applicable when Clang is used.
| | * | testsuite: Test that we can build bigobj PE objectsBen Gamari2022-04-062-0/+12
| | | |
| | * | Windows/Clang: Build system adaptationBen Gamari2022-04-067-268/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Bump win32-tarballs to 0.7 * Move Windows toolchain autoconf logic into separate file * Use clang and LLVM utilities as described in #21019 * Disable object merging as lld doesn't support -r * Drop --oformat=pe-bigobj-x86-64 arguments from ld flags as LLD detects that the output is large on its own. * Drop gcc wrapper since Clang finds its root fine on its own.
| | * | driver: Drop hacks surrounding windres invocationBen Gamari2022-04-061-16/+2
| | | | | | | | | | | | | | | | | | | | Drop hack for #1828, among others as they appear to be unnecessary when using `llvm-windres`.
| | * | rts: Eliminate use of nested functionsGHC GitLab CI2022-04-061-9/+11
| | |/ | | | | | | | | | This is a gcc-specific extension.
| * | rts/linker/LoadArchive: Fix leaking file handlewip/windows-high-linkerBen Gamari2022-04-061-1/+1
| | | | | | | | | | | | | | | Previously `isArchive` could leak a `FILE` handle if the `fread` returned a short read.
| * | rts/linker: Split up object resolution and initializationBen Gamari2022-04-062-15/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the RTS linker would call initializers during the "resolve" phase of linking. However, this is problematic in the case of cyclic dependencies between objects. In particular, consider the case where we have a situation where a static library contains a set of recursive objects: * object A has depends upon symbols in object B * object B has an initializer that depends upon object A * we try to load object A The linker would previously: 1. start resolving object A 2. encounter the reference to object B, loading it resolve object B 3. run object B's initializer 4. the initializer will attempt to call into object A, which hasn't been fully resolved (and therefore protected) Fix this by moving constructor execution to a new linking phase, which follows resolution. Fix #21253.
| * | rts/linker: Report archive member indexBen Gamari2022-04-064-8/+10
| | |
| * | rts/PathUtils: Define pathprintf in terms of snwprintf on WindowsBen Gamari2022-04-061-1/+1
| | | | | | | | | | | | | | | | | | swprintf deviates from usual `snprintf` semantics in that it does not guarantee reasonable behavior when the buffer is NULL (that is, returning the number of bytes that would have been emitted).
| * | rts/linker: More descriptive debug outputBen Gamari2022-04-062-12/+21
| | |
| * | Move msvcrt dep out of baseBen Gamari2022-04-061-3/+1
| | |
| * | rts/PEi386: Avoid accidentally-quadratic allocation costBen Gamari2022-04-061-19/+45
| | | | | | | | | | | | | | | | | | We now preserve the address that we last mapped, allowing us to resume our search and avoiding quadratic allocation costs. This fixes the runtime of T10296a, which allocates many adjustors.
| * | rts/PEi386: Move allocateBytes to MMap.cBen Gamari2022-04-063-110/+92
| | |