summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* hiwip/gdb-jit-objectBen Gamari2022-05-237-244/+186
| | | | (cherry picked from commit 07c9532947a623a065d43ef5f69e530ca762f986)
* jit objectBen Gamari2022-05-238-58/+267
| | | | (cherry picked from commit 9af5422203769f2f939d4a61e7de54b402863bc5)
* linker: Add support for gdb's JIT interfaceBen Gamari2022-05-232-0/+119
| | | | (cherry picked from commit 3b909208273c75fb3fe6b05b75c4fe9bf635ed68)
* Loader: Implement gnu-style -l:$path syntaxGHC GitLab CI2022-05-231-11/+31
| | | | | | Gnu ld allows `-l` to be passed an absolute file path, signalled by a `:` prefix. Implement this in the GHC's loader search logic.
* Statically-link against libc++ on WindowsGHC GitLab CI2022-05-191-0/+6
| | | | | | | | | | | Unfortunately on Windows we have no RPATH-like facility, making dynamic linking extremely fragile. Since we cannot assume that the user will add their GHC installation to `$PATH` (and therefore their DLL search path) we cannot assume that the loader will be able to locate our `libc++.dll`. To avoid this, we instead statically link against `libc++.a` on Windows. Fixes #21435.
* text: Try reenabling simdutfBen Gamari2022-05-181-3/+1
|
* Enable eventlog support in all ways by defaultBen Gamari2022-05-1833-195/+92
| | | | | | | | | | | | | | | | | | | Here we deprecate the eventlogging RTS ways and instead enable eventlog support in the remaining ways. This simplifies packaging and reduces GHC compilation times (as we can eliminate two whole compilations of the RTS) while simplifying the end-user story. The trade-off is a small increase in binary sizes in the case that the user does not want eventlogging support, but we think that this is a fine trade-off. This also revealed a latent RTS bug: some files which included `Cmm.h` also assumed that it defined various macros which were in fact defined by `Config.h`, which `Cmm.h` did not include. Fixing this in turn revealed that `StgMiscClosures.cmm` failed to import various spinlock statistics counters, as evidenced by the failed unregisterised build. Closes #18948. (cherry picked from commit ee11d04363ed8aa1d73a0cda16076a39e668d163)
* rts/eventlog: Don't attempt to flush if there is no writerBen Gamari2022-05-181-0/+8
| | | | | | If the user has not configured a writer then there is nothing to flush. (cherry picked from commit 318e0005b5a3a522854ced7162f3eee95f964bd9)
* Basic response file supportBen Gamari2022-05-186-45/+111
| | | | | | | | | | Here we introduce support into our command-line parsing infrastructure and driver for handling gnu-style response file arguments, typically used to work around platform command-line length limitations. Fixes #16476. (cherry picked from commit ba3d4e1c43e6772f11f9a7105ef4bf3be8efb2df)
* testsuite: Add tests for system-cxx-std-lib packageBen Gamari2022-05-187-0/+43
| | | | | | | | | Test that we can successfully link against C++ code both in GHCi and batch compilation. See #20010 (cherry picked from commit 03efe28317c5e037eab4d47790a6a1fb74d38c3d)
* Introduce package to capture dependency on C++ stdlibBen Gamari2022-05-1810-8/+118
| | | | | | | | | | Here we introduce a new "virtual" package into the initial package database, `system-cxx-std-lib`. This gives users a convenient, platform agnostic way to link against C++ libraries, addressing #20010. Fixes #20010. (cherry picked from commit 0ef249aa26f653677c5368bb51af34f7577ba5b9)
* driver: Introduce pgmcxxBen Gamari2022-05-1817-15/+55
| | | | | | | | | | | | Here we introduce proper support for compilation of C++ objects. This includes: * logic in `configure` to detect the C++ toolchain and propagating this information into the `settings` file * logic in the driver to use the C++ toolchain when compiling C++ sources (cherry picked from commit fb579e15c56994bc6c4cc266535024f20a81f830)
* rts/PEi386: Fix handling of weak symbolsBen Gamari2022-05-183-2/+13
| | | | | | | | | | Previously we would flag the symbol as weak but failed to set its address, which must be computed from an "auxiliary" symbol entry the follows the weak symbol. Fixes #21556. (cherry picked from commit 53b3fa1c782b251076707a024f55276d4ccb0a6c)
* Bump text submodule to use system-cxx-std-libBen Gamari2022-05-181-0/+0
| | | | See #20010
* testsuite: Build T20918 with HC, not CXXBen Gamari2022-05-181-2/+2
| | | | (cherry picked from commit 43628ed44b063e25e6d1394314ed89f07f026503)
* Bump deepseq submodule to masterBen Gamari2022-05-181-0/+0
| | | | | Since the previous commit bumping `base` isn't in `master` due to a rebase-merge.
* Add back Debian9 CI jobsMatthew Pickering2022-05-182-0/+180
| | | | | | | | | We still build Deb9 bindists for now due to Ubuntu 18 and Linux Mint 19 not being at EOL until April 2023 and they still need tinfo5. Fixes #21469 (cherry picked from commit 0fdf44a8da95be8bf336c53e772c4632c6268e7e)
* packaging: Introduce CI job for generating hackage documentationMatthew Pickering2022-05-183-7/+270
| | | | | | | | | | | | | | | | | | | | | | This adds a CI job (hackage-doc-tarball) which generates the necessary tarballs for uploading libraries and documentation to hackage. The release script knows to download this folder and the upload script will also upload the release to hackage as part of the release. The `ghc_upload_libs` script is moved from ghc-utils into .gitlab/ghc_upload_libs There are two modes, preparation and upload. * The `prepare` mode takes a link to a bindist and creates a folder containing the source and doc tarballs ready to upload to hackage. * The `upload` mode takes the folder created by prepare and performs the upload to hackage. Fixes #21493 Related to #21512 (cherry picked from commit daac5040a9656ba0ac6633c9207cfc8c169b396c)
* testsuite: Cabalify ghc-configBen Gamari2022-05-186-24/+23
| | | | | | | | | To ensure that the build benefits from Hadrian's usual logic for building packages, avoiding #21409. Closes #21409. (cherry picked from commit 4d189db9da47b15b1ef354c1febe3dd9ee442927)
* testsuite: More robust library way detectionBen Gamari2022-05-183-97/+39
| | | | | | | | | | | | | | | | | | | | Previously `test.mk` would try to determine whether the dynamic, profiling, and vanilla library ways are available by searching for `PrimOpWrappers.{,dyn_,p_}hi` in directory reported by `ghc-pkg field ghc-prim library-dirs`. However, this is extremely fragile as there is no guarantee that there is only one library directory. To handle the case of multiple `library-dirs` correct we would have to carry out the delicate task of tokenising the directory list (in shell, no less). Since this isn't a task that I am eager to solve, I have rather moved the detection logic into the testsuite driver and instead perform a test compilation in each of the ways. This should be more robust than the previous approach. I stumbled upon this while fixing #20579. (cherry picked from commit cd3f420f5cb028328364ad8b741a876f1a76beb6)
* hadrian: Clean up handling of libffi dependenciesBen Gamari2022-05-185-12/+21
| | | | (cherry picked from commit c556cbf3144f2c209cb41b4524f36247de974d41)
* hadrian: Drop redundant include directoriesBen Gamari2022-05-181-10/+0
| | | | | | | | | | The package-specific include directories in Settings.Builders.Common.cIncludeDirs are now redundant since they now come from Cabal. Closes #20566. (cherry picked from commit a216403e78a6983e4a4a72312d261be3da08d459)
* hadrian: Ensure that --extra-lib-dirs are usedBen Gamari2022-05-181-26/+5
| | | | | | | | | | Previously we only took `extraLibDirs` and friends from the package description, ignoring any contribution from the `LocalBuildInfo`. Fix this. Fixes #20566. (cherry picked from commit 2b21c3fc992d5f860cdcf97642de6110c88e7809)
* Bump time submodule to 1.12.2Matthew Pickering2022-05-181-0/+0
| | | | | | | | This bumps the time submodule to the 1.12.2 release. Fixes #21571 (cherry picked from commit 70f52443550d37985cf7e06ffafd5a162319d9e1)
* gitlab-ci: Check for dynamic msys2 dependenciesBen Gamari2022-05-181-0/+13
| | | | | | | | Both #20878 and #21196 were caused by unwanted dynamic dependencies being introduced by boot libraries. Ensure that we catch this in CI by attempting to run GHC in an environment with a minimal PATH. (cherry picked from commit fcc7dc4c2848d46439bcbfae3f9eaf0a1f400ab4)
* FIND_LLVM_PROG: Recognize llvm suffix used by FreeBSD, ie llc10.mikael2022-05-181-2/+2
| | | | (cherry picked from commit 5b791ed3baf9875931c3bf3b67e8d83d0b3c94e2)
* hadrian: Only copy and install libffi headers when using in-tree libffiMatthew Pickering2022-05-183-3/+8
| | | | | | | | | | When passed `--use-system-libffi` then we shouldn't copy and install the headers from the system package. Instead the headers are expected to be available as a runtime dependency on the users system. Fixes #21485 #21487 (cherry picked from commit fec3e7aa72bee69ef3a3f363709377990650a5d3)
* hadrian: Don't pass -j to haddockMatthew Pickering2022-05-181-3/+1
| | | | | | | | | | | | | This has high potential for oversubcribing as many haddock jobs can be spawned in parralel which will each request the given number of capabilities. Once -jsem is implemented (#19416, !5176) we can expose that haddock via haddock and use that to pass a semaphore. Ticket #21136 (cherry picked from commit 9d8f44a98f8345e5223614e0de50fbef2a05dd1d)
* docs: Fix path to GHC API docs in index.htmlMatthew Pickering2022-05-183-3/+1
| | | | | | | | | | | | | | In the make bindists we generate documentation in docs/ghc-<VER> but the hadrian bindists generate docs/ghc/ so the path to the GHC API docs was wrong in the index.html file. Rather than make the hadrian and make bindists the same it was easier to assume that if you're using the mkDocs script that you're using hadrian bindists. Fixes #21509 (cherry picked from commit 68d1ea5fe083e0b3ed114bbf02a642c7481ab5d7)
* packaging: Build perf builds with -split-sectionsMatthew Pickering2022-05-182-1/+14
| | | | | | | | | | | In 8f71d958 the make build system was made to use split-sections on linux systems but it appears this logic never made it to hadrian. There is the split_sections flavour transformer but this doesn't appear to be used for perf builds on linux. Closes #21135 (cherry picked from commit 699f593532a3cd5ca1c2fab6e6e4ce9d53be2c1f)
* hadrian: Fix split-sections transformerMatthew Pickering2022-05-181-4/+7
| | | | | | | | | | | | | | The splitSections transformer has been broken since -dynamic-too support was implemented in hadrian. This is because we actually build the dynamic way when building the dynamic way, so the predicate would always fail. The fix is to just always pass `split-sections` even if it doesn't do anything for a particular way. Fixes #21138 (cherry picked from commit 142a73d92ea1ef8054d3764b5897b83ad349fed5)
* ci: Add job to check that jobs.yaml is up-to-dateMatthew Pickering2022-05-181-0/+22
| | | | | | | | | | There have been quite a few situations where jobs.yaml has been out of date. It's better to add a CI job which checks that it's right. We don't want to use a staged pipeline because it obfuscates the structure of the pipeline. (cherry picked from commit aacb15a3d68216cac0729e15d708be2f13b0eae8)
* ci: Generate source-tarball in release jobsMatthew Pickering2022-05-181-0/+1
| | | | | | | We need to distribute the source tarball so we should generate it in the CI pipeline. (cherry picked from commit ced4689e2a049b6653f5ada3254dde684cb0c433)
* Fix name of windows release bindist in doc-tarball jobMatthew Pickering2022-05-181-1/+1
| | | | (cherry picked from commit 6e69964d94392b5398a33fa65f3730805c6a7f93)
* ci: Add linting job which checks authors are not GHC CIMatthew Pickering2022-05-182-0/+31
| | | | (cherry picked from commit c7ee0be6bc1573b024f425dcf5fe6d91389e8185)
* bootstrap: Add bootstrapping files for ghc-9_2_2Matthew Pickering2022-05-182-0/+2
| | | | | | Fixes #21373 (cherry picked from commit 55c84123fd9af420de1600309a6fbe73f1975094)
* ci: Fix shell commandMatthew Pickering2022-05-181-2/+2
| | | | (cherry picked from commit 2dcdf091960d3b8bafc23d0ab0e0be8aa6871d8b)
* ci: Explicitly handle failures in test_hadrianMatthew Pickering2022-05-181-11/+11
| | | | | | | | We also disable the stage1 testing which is broken. Related to #21072 (cherry picked from commit 50d78d3bad4fda94ca32fd484578543b03aa0a6c)
* ci: Add test to check that release jobs have profiled libsMatthew Pickering2022-05-182-1/+14
| | | | (cherry picked from commit 2c00d9048873f3d6d7e188dd1ef7f670a83a5c94)
* ci: Fix cabal-reinstall jobMatthew Pickering2022-05-182-7/+3
| | | | | | | | It's quite nice we can do this by mostly deleting code Fixes #21373 (cherry picked from commit 75bf1337e6623286b3cbf1a1c42dd083c50359d3)
* template-haskell: Bump version to 2.19.0.0Ben Gamari2022-05-186-4/+4
| | | | Bumps text and exceptions submodules due to bounds.
* configure: Check CC_STAGE0 for --target supportBen Gamari2022-05-183-12/+16
| | | | | | | | | | | | | | | | We previously only checked the stage 1/2 compiler for --target support. We got away with this for quite a while but it eventually caught up with us in #21579, where `bytestring`'s new NEON implementation was unbuildable on Darwin due to Rosetta's seemingly random logic for determining which executable image to execute. This lead to a confusing failure to build `bytestring`'s cbits, when `clang` tried to compile NEON builtins while targetting x86-64. Fix this by checking CC_STAGE0 for --target support. Fixes #21579. (cherry picked from commit 222eb83e5e45bb6ba49f9fb6f39ee920751ac653)
* hadrian: Add bytestring as a boot packageBen Gamari2022-05-151-0/+1
| | | | | | Now since `bytestring` depends upon `template-haskell` we must rebulid it since the boot compiler's `template-haskell` may not match that of the compiler being built.
* Revert "Make the specialiser handle polymorphic specialisation"Matthew Pickering2022-05-154-231/+52
| | | | | | | | | | | | | | | This reverts commit ef0135934fe32da5b5bb730dbce74262e23e72e8. See ticket #21229 ------------------------- Metric Decrease: T15164 Metric Increase: T13056 ------------------------- (cherry picked from commit a8b47caddb41a970e9ac4c358127523daa1ff101)
* Add arity to the INLINE pragmas for pattern synonymsSimon Peyton Jones2022-05-155-34/+214
| | | | | | | The lack of INLNE arity was exposed by #21531. The fix is simple enough, if a bit clumsy. (cherry picked from commit cebf31ff2af7647805d05ffa99cb99a7761f3831)
* Re-export augment and build from GHC.ListBen Gamari2022-05-152-4/+14
| | | | | | Resolves https://gitlab.haskell.org/ghc/ghc/-/issues/19127 (cherry picked from commit 208c67af3d489fe27a1aacb337c7379439ac8b60)
* release notes: tcplugin has access to irreducible GivensPavol Vargovcik2022-05-131-0/+2
|
* update TcPluginSolver definition (plus few other details) in docsPavol Vargovcik2022-05-131-6/+11
|
* runTcPluginSolvers: call getTcEvBindsVar only once - before loopsheaf2022-05-131-4/+4
|
* fix: pass global ev_binds_var to tcplugin solverPavol Vargovcik2022-05-133-7/+8
|