diff options
author | Zejun Wu <watashi@fb.com> | 2018-12-28 20:47:33 -0800 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-01-30 10:06:32 -0500 |
commit | 740534d43cf9f1635c60f6311b7e0d89af962617 (patch) | |
tree | eb9c9d3b9fecf99177e160d6ac7c94dff74417f0 /rts/linker/PEi386.h | |
parent | e29b1ee72d77d5a06ac949f9dcc80108243a25c0 (diff) | |
download | haskell-740534d43cf9f1635c60f6311b7e0d89af962617.tar.gz |
Allocate bss section within proper range of other sections
Summary:
This re-applies {D5195} and {D5235}, they were reverted as part of diff
stack to unbreak i386. The proper fix is done in {D5289}.
Allocate bss section within proper range of other sections:
* when `+RTS -xp` is passed, allocate it contiguously as we did for
jump islands
* when we mmap the code to lower 2Gb, we should allocate bss section
there too
Test Plan:
1. `./validate`
2.
with
```
DYNAMIC_GHC_PROGRAMS = NO
DYNAMIC_BY_DEFAULT = NO
```
`TEST="T15729" make test` passed in both linux (both i386 and x86_64) and macos.
3.
Also test in a use case where we used to encouter error like:
```
ghc-iserv-prof: R_X86_64_PC32 relocation out of range: (noname) =
b90282ba
```
and now, everything works fine.
Reviewers: simonmar, bgamari, angerman, erikd
Reviewed By: simonmar
Subscribers: rwbarton, carter
GHC Trac Issues: #15729
Differential Revision: https://phabricator.haskell.org/D5290
Diffstat (limited to 'rts/linker/PEi386.h')
-rw-r--r-- | rts/linker/PEi386.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/linker/PEi386.h b/rts/linker/PEi386.h index eb5bec8b78..538f132ab5 100644 --- a/rts/linker/PEi386.h +++ b/rts/linker/PEi386.h @@ -57,7 +57,7 @@ bool ocRunInit_PEi386 ( ObjectCode *oc ); bool ocGetNames_PEi386 ( ObjectCode* oc ); bool ocVerifyImage_PEi386 ( ObjectCode* oc ); SymbolAddr *lookupSymbol_PEi386(SymbolName *lbl); -bool ocAllocateSymbolExtras_PEi386 ( ObjectCode* oc ); +bool ocAllocateExtras_PEi386 ( ObjectCode* oc ); SymbolAddr *lookupSymbolInDLLs ( const SymbolName* lbl ); /* See Note [mingw-w64 name decoration scheme] */ /* We use myindex to calculate array addresses, rather than |