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 /includes/CodeGen.Platform.hs | |
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 'includes/CodeGen.Platform.hs')
-rw-r--r-- | includes/CodeGen.Platform.hs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/includes/CodeGen.Platform.hs b/includes/CodeGen.Platform.hs index 9916e0ef71..1d46a0195b 100644 --- a/includes/CodeGen.Platform.hs +++ b/includes/CodeGen.Platform.hs @@ -881,6 +881,8 @@ freeReg 1 = fastBool False -- The Stack Pointer # if !MACHREGS_darwin -- most non-darwin powerpc OSes use r2 as a TOC pointer or something like that freeReg 2 = fastBool False +-- at least linux in -fPIC relies on r30 in PLT stubs +freeReg 30 = fastBool False # endif # ifdef REG_Base freeReg REG_Base = fastBool False |