Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merging r142869:

------------------------------------------------------------------------
r142869 | void | 2011-10-24 16:05:43 -0700 (Mon, 24 Oct 2011) | 4 lines

Check the visibility of the global variable before placing it into the stubs
table. A hidden variable could potentially end up in both lists.
<rdar://problem/10336715>

------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_30@142870 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information...
commit 3d9fd99521a7cefd05cddc057c11c25b461177bf 1 parent 004c730
@isanbard isanbard authored
View
8 lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -506,7 +506,9 @@ getExprForDwarfGlobalReference(const GlobalValue *GV, Mangler *Mang,
// Add information about the stub reference to MachOMMI so that the stub
// gets emitted by the asmprinter.
MCSymbol *SSym = getContext().GetOrCreateSymbol(Name.str());
- MachineModuleInfoImpl::StubValueTy &StubSym = MachOMMI.getGVStubEntry(SSym);
+ MachineModuleInfoImpl::StubValueTy &StubSym =
+ GV->hasHiddenVisibility() ? MachOMMI.getHiddenGVStubEntry(SSym) :
+ MachOMMI.getGVStubEntry(SSym);
if (StubSym.getPointer() == 0) {
MCSymbol *Sym = Mang->getSymbol(GV);
StubSym = MachineModuleInfoImpl::StubValueTy(Sym, !GV->hasLocalLinkage());
@@ -534,7 +536,9 @@ getCFIPersonalitySymbol(const GlobalValue *GV, Mangler *Mang,
// Add information about the stub reference to MachOMMI so that the stub
// gets emitted by the asmprinter.
MCSymbol *SSym = getContext().GetOrCreateSymbol(Name.str());
- MachineModuleInfoImpl::StubValueTy &StubSym = MachOMMI.getGVStubEntry(SSym);
+ MachineModuleInfoImpl::StubValueTy &StubSym =
+ GV->hasHiddenVisibility() ? MachOMMI.getHiddenGVStubEntry(SSym) :
+ MachOMMI.getGVStubEntry(SSym);
if (StubSym.getPointer() == 0) {
MCSymbol *Sym = Mang->getSymbol(GV);
StubSym = MachineModuleInfoImpl::StubValueTy(Sym, !GV->hasLocalLinkage());
View
36 test/CodeGen/ARM/gv-stubs-crash.ll
@@ -0,0 +1,36 @@
+; RUN: llc < %s -mtriple=thumbv7-apple-ios -relocation-model=pic
+; <rdar://problem/10336715>
+
+@Exn = external hidden unnamed_addr constant { i8*, i8* }
+
+define hidden void @func(i32* %this, i32* %e) optsize align 2 {
+ %e.ld = load i32* %e, align 4
+ %inv = invoke zeroext i1 @func2(i32* %this, i32 %e.ld) optsize
+ to label %ret unwind label %lpad
+
+ret:
+ ret void
+
+lpad:
+ %lp = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*)
+ catch i8* bitcast ({ i8*, i8* }* @Exn to i8*)
+ br label %.loopexit4
+
+.loopexit4:
+ %exn = call i8* @__cxa_allocate_exception(i32 8) nounwind
+ call void @__cxa_throw(i8* %exn, i8* bitcast ({ i8*, i8* }* @Exn to i8*), i8* bitcast (void (i32*)* @dtor to i8*)) noreturn
+ unreachable
+
+resume:
+ resume { i8*, i32 } %lp
+}
+
+declare hidden zeroext i1 @func2(i32*, i32) optsize align 2
+
+declare i8* @__cxa_allocate_exception(i32)
+
+declare i32 @__gxx_personality_sj0(...)
+
+declare void @dtor(i32*) optsize
+
+declare void @__cxa_throw(i8*, i8*, i8*)
Please sign in to comment.
Something went wrong with that request. Please try again.