[Git][ghc/ghc][wip/facebook/ghc-8.8-unloading] 13 commits: Revert "Pass preprocessor options to C compiler when building foreign C files (#16737)"

Ben Gamari gitlab at gitlab.haskell.org
Tue Nov 24 16:16:18 UTC 2020



Ben Gamari pushed to branch wip/facebook/ghc-8.8-unloading at Glasgow Haskell Compiler / GHC


Commits:
2ce2a5b4 by Pepe Iborra at 2020-11-24T01:17:25+00:00
Revert "Pass preprocessor options to C compiler when building foreign C files (#16737)"

This reverts commit 1c18d3b41f897f34a93669edaebe6069f319f9e2.

- - - - -
711fffed by Ömer Sinan Ağacan at 2020-11-24T01:17:25+00:00
rts: Properly free the RTSSummaryStats structure

`stat_exit` always allocates a `RTSSummaryStats` but only sometimes
frees it, which casues leaks. With this patch we unconditionally free
the structure, fixing the leak.

Fixes #16584

- - - - -
237180d2 by pepeiborra at 2020-11-24T01:17:25+00:00
Define __FACEBOOK_HASKELL__

Summary: Adds a new __FACEBOOK_HASKELL__ CPP definition for use in conditional compilation. This is needed because fbghc makes api changes in the ghc package, which can break downstream consumers like ghcide

Test Plan:
## Doesn't break anything
```
$ tp2_use_local ghc
$ buck build common/hs/... haxl/... tools/build/... sigma/haxl/...
```
## Can be used for conditional compilation
$FBCODE/experimental/pepeiborra/Hellofacebook.hs:
```haskell
{-# LANGUAGE CPP #-}

module Hellofacebook where

main :: IO ()
main =
#ifdef __FACEBOOK_HASKELL__
  putStrLn "Hello Facebook"
#else
  putStrLn "Hello dummy"
#endif
```
$FBCODE/experimental/pepeiborra/TARGETS:
```
load("@fbcode_macros//build_defs:haskell_binary.bzl", "haskell_binary")

haskell_binary(
    name = "hellofacebook",
    srcs = [
        "Hellofacebook.hs",
    ],
    main = "Hellofacebook"
)
```
Test
```
$ buck run //experimental/pepeiborra:hellofacebook
Building: finished in 0.4 sec (100%) 41/41 jobs, 0 updated
  Total time: 0.4 sec
Hello Facebook
```

Reviewers: josefs, rayshih, watashi

Reviewed By: watashi

Subscribers: smarlow

Differential Revision: https://phabricator.intern.facebook.com/D22901280

Tasks: T70949920

Tags: haskell, bootcamp, GHC

Signature: 22901280:1596477273:1c220ebed71b59079ab022af9b50223d99257be8

- - - - -
eecf9f27 by Pepe Iborra at 2020-11-24T01:17:25+00:00
Revert "Add a RTS option -xp to load PIC object anywhere in address space"

This reverts commit cb3f710d952c0a2bad539f76c2ab6d07ba894bea.

- - - - -
552714a2 by Pepe Iborra at 2020-11-24T01:17:25+00:00
Revert "Revert "Add a RTS option -xp to load PIC object anywhere in address space""

This reverts commit 82a716431cc680392e332bc2b1a1fd0d7faa4cd8.

- - - - -
54527eff by Pepe Iborra at 2020-11-24T01:17:25+00:00
Revert "Revert "Allocate bss section within proper range of other sections""

This reverts commit 9cbf6f2baf793e361d41b9c36497c5601ff22253.

- - - - -
a94ffd1b by Ben Gamari at 2020-11-24T01:17:25+00:00
Revert "Reimplement fix related to load/unload native object"

This reverts commit 8edf564362e37c9740a351f1d71f2fa5e042f7b1.

- - - - -
a226fc88 by Ben Gamari at 2020-11-24T01:17:25+00:00
Revert "Apply upstream patch 3842: Linker: Object unloading"

This reverts commit e508c92828c7e009b6f7df16cd7be2147c4a9026.

- - - - -
91907765 by Ben Gamari at 2020-11-24T01:18:39+00:00
Revert "Add loadNativeObj and unloadNativeObj"

This reverts commit b6482d18f78fc52de3321c03ab20cb84f0253016.

- - - - -
8bc40df0 by Ben Gamari at 2020-11-24T01:18:43+00:00
rts: Refactor foreign export tracking

This avoids calling `libc` in the initializers which are responsible for
registering foreign exports. We believe this should avoid the corruption
observed in #18548.

See Note [Tracking foreign exports] in rts/ForeignExports.c for an
overview of the new scheme.

(cherry picked from commit c492134912e5270180881b7345ee86dc32756bdd)
(cherry picked from commit ed57c3a9eb9286faa222f98e484a9ef3432b2025)

- - - - -
91950b3b by Ben Gamari at 2020-11-24T01:18:43+00:00
rts: Refactor unloading of foreign export StablePtrs

Previously we would allocate a linked list cell for each foreign export.
Now we can avoid this by taking advantage of the fact that they are
already broken into groups.

(cherry picked from commit 40dc91069d15bfc1d81f1722b39e06cac8fdddd1)
(cherry picked from commit 65be3832f3aa48bbde896ee846c18fcba1f16b42)

- - - - -
c043710a by Ömer Sinan Ağacan at 2020-11-24T01:18:43+00:00
Fix and enable object unloading in GHCi

Fixes #16525 by tracking dependencies between object file symbols and
marking symbol liveness during garbage collection

See Note [Object unloading] in CheckUnload.c for details.

(cherry picked from commit c34a4b98b1f09ea3096d39a839a86f2d7185c796)
(cherry picked from commit a4153029347c48be38bace114438b72475e2c40f)

- - - - -
0ac69171 by Ray Shih at 2020-11-24T01:18:43+00:00
Add loadNativeObj and unloadNativeObj

(This change is originally written by niteria)

This adds two functions:
* `loadNativeObj`
* `unloadNativeObj`
and implements them for Linux.

They are useful if you want to load a shared object with Haskell code
using the system linker and have GHC call dlclose() after the
code is no longer referenced from the heap.

Using the system linker allows you to load the shared object
above outside the low-mem region. It also loads the DWARF sections
in a way that `perf` understands.

`dl_iterate_phdr` is what makes this implementation Linux specific.

(cherry picked from commit 2782487f5f6ad9df4dc8725226a47f07fec77f9f)

- - - - -


30 changed files:

- compiler/deSugar/DsForeign.hs
- compiler/ghci/Linker.hs
- compiler/main/DriverPipeline.hs
- docs/users_guide/8.8.1-notes.rst
- includes/Rts.h
- includes/ghc.mk
- + includes/rts/ForeignExports.h
- includes/rts/storage/GC.h
- rts/CheckUnload.c
- rts/CheckUnload.h
- + rts/ForeignExports.c
- + rts/ForeignExports.h
- rts/Hash.c
- rts/Hash.h
- rts/Linker.c
- rts/LinkerInternals.h
- rts/RtsStartup.c
- rts/RtsSymbols.c
- rts/Stats.c
- rts/linker/Elf.c
- rts/linker/Elf.h
- rts/linker/MachO.c
- rts/linker/MachO.h
- rts/linker/PEi386.c
- rts/linker/PEi386.h
- rts/linker/SymbolExtras.c
- rts/linker/SymbolExtras.h
- rts/rts.cabal.in
- rts/sm/Evac.c
- rts/sm/GC.c


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4d6a8d55db4a28274d080351352baaaf41027d40...0ac691710c8131767b940f0e36b171312dd1ba9e

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/4d6a8d55db4a28274d080351352baaaf41027d40...0ac691710c8131767b940f0e36b171312dd1ba9e
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20201124/c699330a/attachment.html>


More information about the ghc-commits mailing list