Make clang build working binaries by linking against rcrt0 when

building static PIE binaries. This is also what Bitrig does

ok tobiasu@ sthen@
This commit is contained in:
stefan 2016-07-06 16:33:35 +00:00
parent 1d3ba41251
commit 82a7713f75
2 changed files with 16 additions and 6 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.114 2016/05/24 07:53:23 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.115 2016/07/06 16:33:35 stefan Exp $
# XXX: Remember to bump MODCLANG_VERSION in lang/clang/clang.port.mk when
# updating this port.
@ -11,7 +11,7 @@ COMMENT = modular, fast C/C++/ObjC compiler, static analyzer and tools
LLVM_V = 3.8.0
DISTNAME = llvm-${LLVM_V}.src
PKGNAME = llvm-${LLVM_V}
REVISION = 1
REVISION = 2
CATEGORIES = devel
DISTFILES = llvm-${LLVM_V}.src${EXTRACT_SUFX} \
cfe-${LLVM_V}.src${EXTRACT_SUFX}

View File

@ -1,6 +1,5 @@
$OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.30 2016/05/24 07:53:23 ajacoutot Exp $
--- tools/clang/lib/Driver/Tools.cpp.orig Fri Feb 12 17:51:41 2016
+++ tools/clang/lib/Driver/Tools.cpp Tue May 17 14:45:22 2016
--- tools/clang/lib/Driver/Tools.cpp.orig Fri Feb 12 23:51:41 2016
+++ tools/clang/lib/Driver/Tools.cpp Sun Jun 26 20:24:44 2016
@@ -78,7 +78,7 @@ static const char *getSparcAsmModeForCPU(StringRef Nam
.Case("niagara2", "-Av9b")
.Case("niagara3", "-Av9d")
@ -10,7 +9,18 @@ $OpenBSD: patch-tools_clang_lib_Driver_Tools_cpp,v 1.30 2016/05/24 07:53:23 ajac
} else {
return llvm::StringSwitch<const char *>(Name)
.Case("v8", "-Av8")
@@ -7611,15 +7611,17 @@ void openbsd::Linker::ConstructJob(Compilation &C, con
@@ -7600,6 +7600,10 @@ void openbsd::Linker::ConstructJob(Compilation &C, con
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")));
@@ -7611,15 +7615,17 @@ void openbsd::Linker::ConstructJob(Compilation &C, con
}
}