diff options
| author | Sergei Trofimovich <siarheit@google.com> | 2014-12-14 14:30:12 +0000 |
|---|---|---|
| committer | Sergei Trofimovich <siarheit@google.com> | 2014-12-14 14:30:12 +0000 |
| commit | fa31e8f4a0f853848d96549a429083941877bf8d (patch) | |
| tree | c45f86f090dd27aae6dbe522336ab6e74e13fbb4 /compiler/cmm | |
| parent | ef7eb8f30532c8f85f05b318c85c7d819f61d715 (diff) | |
| download | haskell-fa31e8f4a0f853848d96549a429083941877bf8d.tar.gz | |
powerpc: fix and enable shared libraries by default on linux
Summary:
And fix things all the way down to it. Namely:
- remove 'r30' from free registers, it's an .LCTOC1 register
for gcc. generated .plt stubs expect it to be initialised.
- fix PicBase computation, which originally forgot to use 'tmp'
reg in 'initializePicBase_ppc.fetchPC'
- mark 'ForeighTarget's as implicitly using 'PicBase' register
(see comment for details)
- add 64-bit MO_Sub and test on alloclimit3/4 regtests
- fix dynamic label offsets to match with .LCTOC1 offset
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
Test Plan: validate passes equal amount of vanilla/dyn tests
Reviewers: simonmar, erikd, austin
Reviewed By: erikd, austin
Subscribers: carter, thomie
Differential Revision: https://phabricator.haskell.org/D560
GHC Trac Issues: #8024, #9831
Diffstat (limited to 'compiler/cmm')
| -rw-r--r-- | compiler/cmm/CLabel.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/cmm/CLabel.hs b/compiler/cmm/CLabel.hs index 0f2c0ae7fa..37b8ada75b 100644 --- a/compiler/cmm/CLabel.hs +++ b/compiler/cmm/CLabel.hs @@ -1170,7 +1170,8 @@ pprDynamicLinkerAsmLabel platform dllInfo lbl else if osElfTarget (platformOS platform) then if platformArch platform == ArchPPC then case dllInfo of - CodeStub -> ppr lbl <> text "@plt" + CodeStub -> -- See Note [.LCTOC1 in PPC PIC code] + ppr lbl <> text "+32768@plt" SymbolPtr -> text ".LC_" <> ppr lbl _ -> panic "pprDynamicLinkerAsmLabel" else if platformArch platform == ArchX86_64 |
