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

Reid Kleckner via cfe-dev cfe-dev at lists.llvm.org
Fri Aug 24 13:56:55 PDT 2018


What exactly is failing? The cast to GlobalValue? If so, try stripping
casts, as in this existing code:
  setDSOLocal(cast<llvm::GlobalValue>(Ret->stripPointerCasts()));

On Fri, Aug 24, 2018 at 1:50 PM Manoj Gupta via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> + 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
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180824/2b5bfb2b/attachment.html>


More information about the cfe-dev mailing list