[llvm-dev] Semantics of __CFConstantStringClassReference variable (clang crash in PR38615)

Manoj Gupta via llvm-dev llvm-dev at lists.llvm.org
Fri Aug 24 13:50:09 PDT 2018


+ 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>


More information about the llvm-dev mailing list