Commit 60bb9d1c authored by Ben Gamari's avatar Ben Gamari 🐢
Browse files

Revert "Pass -no-pie to GCC"

This reverts commit bae4a55b.

This will be superceded by D2693.
parent 03e8d26f
...@@ -1322,24 +1322,6 @@ AC_SUBST(GccIsClang) ...@@ -1322,24 +1322,6 @@ AC_SUBST(GccIsClang)
rm -f conftest.txt rm -f conftest.txt
]) ])
# FP_GCC_SUPPORTS_NO_PIE
# ----------------------
# Does gcc support the -no-pie option? If so we should pass it to gcc when
# joining objects since -pie may be enabled by default.
AC_DEFUN([FP_GCC_SUPPORTS_NO_PIE],
[
AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING([whether GCC supports -no-pie])
echo 'int main() { return 0; }' > conftest.c
if ${CC-cc} -o conftest -no-pie conftest.c > /dev/null 2>&1; then
AC_DEFINE(GCC_SUPPORTS_NO_PIE, 1, [gcc supports -no-pie])
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
rm -f conftest.c conftest.o conftest
])
dnl Small feature test for perl version. Assumes PerlCmd dnl Small feature test for perl version. Assumes PerlCmd
dnl contains path to perl binary. dnl contains path to perl binary.
dnl dnl
......
...@@ -1859,11 +1859,6 @@ linkBinary' staticLink dflags o_files dep_packages = do ...@@ -1859,11 +1859,6 @@ linkBinary' staticLink dflags o_files dep_packages = do
++ map SysTools.Option ( ++ map SysTools.Option (
[] []
#if GCC_SUPPORTS_NO_PIE
-- See Note [No PIE eating when linking]
++ ["-no-pie"]
#endif
-- Permit the linker to auto link _symbol to _imp_symbol. -- Permit the linker to auto link _symbol to _imp_symbol.
-- This lets us link against DLLs without needing an "import library". -- This lets us link against DLLs without needing an "import library".
++ (if platformOS platform == OSMinGW32 ++ (if platformOS platform == OSMinGW32
...@@ -2162,10 +2157,6 @@ joinObjectFiles dflags o_files output_fn = do ...@@ -2162,10 +2157,6 @@ joinObjectFiles dflags o_files output_fn = do
SysTools.Option "-nostdlib", SysTools.Option "-nostdlib",
SysTools.Option "-Wl,-r" SysTools.Option "-Wl,-r"
] ]
#if GCC_SUPPORTS_NO_PIE
-- See Note [No PIE eating while linking] in SysTools
++ [SysTools.Option "-no-pie"]
#endif
++ (if any (cc ==) [Clang, AppleClang, AppleClang51] ++ (if any (cc ==) [Clang, AppleClang, AppleClang51]
then [] then []
else [SysTools.Option "-nodefaultlibs"]) else [SysTools.Option "-nodefaultlibs"])
......
...@@ -1546,15 +1546,6 @@ linesPlatform xs = ...@@ -1546,15 +1546,6 @@ linesPlatform xs =
#endif #endif
{-
Note [No PIE eating while linking]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As of 2016 some Linux distributions (e.g. Debian) have started enabling -pie by
default in their gcc builds. This is incompatible with -r as it implies that we
are producing an executable. Consequently, we must manually pass -no-pie to gcc
when joining object files or linking dynamic libraries. See #12759.
-}
linkDynLib :: DynFlags -> [String] -> [InstalledUnitId] -> IO () linkDynLib :: DynFlags -> [String] -> [InstalledUnitId] -> IO ()
linkDynLib dflags0 o_files dep_packages linkDynLib dflags0 o_files dep_packages
= do = do
...@@ -1720,10 +1711,6 @@ linkDynLib dflags0 o_files dep_packages ...@@ -1720,10 +1711,6 @@ linkDynLib dflags0 o_files dep_packages
++ [ Option "-o" ++ [ Option "-o"
, FileOption "" output_fn , FileOption "" output_fn
] ]
#if GCC_SUPPORTS_NO_PIE
-- See Note [No PIE eating when linking]
++ [ Option "-no-pie" ]
#endif
++ map Option o_files ++ map Option o_files
++ [ Option "-shared" ] ++ [ Option "-shared" ]
++ map Option bsymbolicFlag ++ map Option bsymbolicFlag
......
...@@ -608,9 +608,6 @@ dnl If gcc, make sure it's at least 3.0 ...@@ -608,9 +608,6 @@ dnl If gcc, make sure it's at least 3.0
dnl dnl
FP_GCC_VERSION FP_GCC_VERSION
dnl ** See whether gcc supports -no-pie
FP_GCC_SUPPORTS_NO_PIE
dnl ** look to see if we have a C compiler using an llvm back end. dnl ** look to see if we have a C compiler using an llvm back end.
dnl dnl
FP_CC_LLVM_BACKEND FP_CC_LLVM_BACKEND
......
...@@ -90,7 +90,6 @@ FIND_LD([LdCmd]) ...@@ -90,7 +90,6 @@ FIND_LD([LdCmd])
AC_SUBST([LdCmd]) AC_SUBST([LdCmd])
FP_GCC_VERSION FP_GCC_VERSION
FP_GCC_SUPPORTS_NO_PIE
AC_PROG_CPP AC_PROG_CPP
FP_PROG_LD_IS_GNU FP_PROG_LD_IS_GNU
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment