summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorpascal <pascal@openbsd.org>2016-09-05 11:39:31 +0000
committerpascal <pascal@openbsd.org>2016-09-05 11:39:31 +0000
commit6a0709021a66c81cd37d10aa2f6229864533ef35 (patch)
tree80d3222f328d68775903f64cc04ee6070b63779e /gnu/llvm/tools/clang/lib/Driver/Tools.cpp
parentAdd libcompiler_rt Makefile. (diff)
downloadwireguard-openbsd-6a0709021a66c81cd37d10aa2f6229864533ef35.tar.xz
wireguard-openbsd-6a0709021a66c81cd37d10aa2f6229864533ef35.zip
Link static PIEs with the correct C runtime (rcrt0.o).
ok kettenis@
Diffstat (limited to 'gnu/llvm/tools/clang/lib/Driver/Tools.cpp')
-rw-r--r--gnu/llvm/tools/clang/lib/Driver/Tools.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/gnu/llvm/tools/clang/lib/Driver/Tools.cpp b/gnu/llvm/tools/clang/lib/Driver/Tools.cpp
index b7ac24fe674..3c228b1ebe2 100644
--- a/gnu/llvm/tools/clang/lib/Driver/Tools.cpp
+++ b/gnu/llvm/tools/clang/lib/Driver/Tools.cpp
@@ -7600,6 +7600,10 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_pg))
CmdArgs.push_back(
Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o")));
+ else if (Args.hasArg(options::OPT_static) &&
+ !Args.hasArg(options::OPT_nopie))
+ CmdArgs.push_back(
+ Args.MakeArgString(getToolChain().GetFilePath("rcrt0.o")));
else
CmdArgs.push_back(
Args.MakeArgString(getToolChain().GetFilePath("crt0.o")));