summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavide Italiano <davide@freebsd.org>2016-06-09 14:23:38 +0000
committerDavide Italiano <davide@freebsd.org>2016-06-09 14:23:38 +0000
commitbd4243c5195fa735a53e7a84f9553ef3ec0cadd3 (patch)
tree7bedf9ed49306b18e0e2943b8f2938e721b0a457
parent1899d54ed0a4e43249cb44faa164178c708303d6 (diff)
downloadbcm5719-llvm-bd4243c5195fa735a53e7a84f9553ef3ec0cadd3.tar.gz
bcm5719-llvm-bd4243c5195fa735a53e7a84f9553ef3ec0cadd3.zip
[CodeGen] Change getSDagStackGuard to get an internal sym.
Fixes a crash in the backend during an LTO build of rtld(1) in FreeBSD. llvm-svn: 272262
-rw-r--r--llvm/lib/CodeGen/TargetLoweringBase.cpp2
-rw-r--r--llvm/test/CodeGen/Generic/stackguard-internal.ll13
2 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp
index 67b2ee96283..52ab7cf3763 100644
--- a/llvm/lib/CodeGen/TargetLoweringBase.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp
@@ -1831,7 +1831,7 @@ void TargetLoweringBase::insertSSPDeclarations(Module &M) const {
// Currently only support "standard" __stack_chk_guard.
// TODO: add LOAD_STACK_GUARD support.
Value *TargetLoweringBase::getSDagStackGuard(const Module &M) const {
- return M.getGlobalVariable("__stack_chk_guard");
+ return M.getGlobalVariable("__stack_chk_guard", true);
}
Value *TargetLoweringBase::getSSPStackGuardCheck(const Module &M) const {
diff --git a/llvm/test/CodeGen/Generic/stackguard-internal.ll b/llvm/test/CodeGen/Generic/stackguard-internal.ll
new file mode 100644
index 00000000000..4b815c98fb1
--- /dev/null
+++ b/llvm/test/CodeGen/Generic/stackguard-internal.ll
@@ -0,0 +1,13 @@
+; Check that the backend doesn't crash.
+; RUN: llc -mtriple=x86_64-pc-freebsd %s -o - | FileCheck %s
+
+@__stack_chk_guard = internal global [8 x i64] zeroinitializer, align 16
+
+define void @f() sspstrong {
+ %tbl = alloca [4 x i64], align 16
+ ret void
+}
+
+; CHECK: .type __stack_chk_guard,@object
+; CHECK: .local __stack_chk_guard
+; CHECK: .comm __stack_chk_guard,64,16
OpenPOWER on IntegriCloud