Manoj Gupta via llvm-dev
2018-Aug-24 20:50 UTC
[llvm-dev] Semantics of __CFConstantStringClassReference variable (clang crash in PR38615)
+ llvm-dev . Any ideas about the semantics of "__CFConstantStringClassReference" and the best way to fix the clang crash issue. Thanks, Manoj On Tue, Aug 21, 2018 at 5:08 PM Manoj Gupta <manojgupta at google.com> wrote:> Hi, > > I am looking for some help regarding a clang crash when building > opencflite. The root cause of the crash is because clang tries to create a > GlobalValue "__CFConstantStringClassReference" but a variable of same name > is also present in the source file. > > Crash location: > > https://github.com/llvm-mirror/clang/blob/master/lib/CodeGen/CodeGenModule.cpp#L4058 > > // If we don't already have it, get __CFConstantStringClassReference. > if (!CFConstantStringClassRef) { > llvm::Type *Ty = getTypes().ConvertType(getContext().IntTy); > Ty = llvm::ArrayType::get(Ty, 0); > llvm::GlobalValue *GV = cast<llvm::GlobalValue>( > CreateRuntimeVariable(Ty, "__CFConstantStringClassReference")); // > Crashes here > > Opencflite also declares __CFConstantStringClassReference as a variable, > https://github.com/nevali/opencflite/blob/03999700cf3b79975ae2f2e5f4100ea7096acb3a/CFInternal.h#L364 > : > > extern int __CFConstantStringClassReference[]; > > I do not know the semantics of the name __CFConstantStringClassReference. > Is this a reserved name and should opencflite not be declaring this > variable ? If so, appreciate any advice on how to fix the offending code. > > Or is this a bug in clang? > > For reference, r327993 (https://reviews.llvm.org/rL327993) introduced > this code. > > Author: Rafael Espindola <rafael.espindola at gmail.com> > AuthorDate: Tue Mar 20 15:48:00 2018 +0000 > > Set dso_local for CFConstantStringClassReference. > > This one cannot use setGVProperties since it has special logic for > when it is dllimport or not. > git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@*327993* > 91177308-0d34-0410-b5e6-96231b3b80d8 > > Thanks, > Manoj >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180824/e5f645a7/attachment.html>