summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2020-09-24 23:32:03 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-10-09 08:43:49 -0400
commite48cab2a57f2342891f985bcb44817e17e985275 (patch)
tree27a70bf35a93161ffa3bb8f8e76588e7476ce342
parentd360f3438da7f6eb51e217c6697db6fb338c6fd7 (diff)
downloadhaskell-e48cab2a57f2342891f985bcb44817e17e985275.tar.gz
Add a flag to indicate that gcc supports -no-pie
Fixes #17919.
-rw-r--r--compiler/GHC/Driver/Session.hs2
-rw-r--r--docs/users_guide/phases.rst14
2 files changed, 16 insertions, 0 deletions
diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs
index a603ba5063..35ac07fc80 100644
--- a/compiler/GHC/Driver/Session.hs
+++ b/compiler/GHC/Driver/Session.hs
@@ -2232,6 +2232,8 @@ dynamic_flags_deps = [
-- (see #15319)
toolSettings_ccSupportsNoPie = False
}
+ , make_ord_flag defFlag "pgmc-supports-no-pie"
+ $ noArg $ alterToolSettings $ \s -> s { toolSettings_ccSupportsNoPie = True }
, make_ord_flag defFlag "pgms"
(HasArg (\_ -> addWarn "Object splitting was removed in GHC 8.8"))
, make_ord_flag defFlag "pgma"
diff --git a/docs/users_guide/phases.rst b/docs/users_guide/phases.rst
index 74b7bd0f40..d96af3adf1 100644
--- a/docs/users_guide/phases.rst
+++ b/docs/users_guide/phases.rst
@@ -180,6 +180,20 @@ the following flags:
Pass ⟨option⟩ to the C compiler.
+.. ghc-flag:: -pgmc-supports-no-pie
+ :shortdesc: Indicate that the C compiler supports ``-no-pie``
+ :type: dynamic
+ :category: phase-options
+
+ When ``-pgmc`` is used, GHC by default will never pass the ``-no-pie``
+ command line flag. The rationale is that it is not known whether the
+ specified compiler will support it. This flag can be used to indicate
+ that ``-no-pie`` is supported. It has to be passed after ``-pgmc``.
+
+ This flag is not neccessary when ``-pgmc`` is not used, since GHC
+ remembers whether the default C compiler supports ``-no-pie`` in
+ an internal settings file.
+
.. ghc-flag:: -optcxx ⟨option⟩
:shortdesc: pass ⟨option⟩ to the C++ compiler
:type: dynamic