[cfe-dev] Semantics of __CFConstantStringClassReference variable (clang crash in PR38615)
Manoj Gupta via cfe-dev
cfe-dev at lists.llvm.org
Tue Aug 21 17:08:45 PDT 2018
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/cfe-dev/attachments/20180821/f4a0095c/attachment.html>
More information about the cfe-dev
mailing list