theraven added a comment.

In https://reviews.llvm.org/D52344#1242530, @rjmccall wrote:

> In https://reviews.llvm.org/D52344#1242451, @kristina wrote:
>
> > Would you be okay with me renaming `cfstring` to `.cfstring` for ELF so 
> > it's in line with ELF section naming conventions (I'm not entirely sure if 
> > that could cause issues with ObjC stuff)? And yes I think it's best to 
> > avoid that code-path altogether if it turns out to be a constant as that's 
> > likely from the declaration of the type, I'll write a FileCheck test in a 
> > moment and check that I can apply the same logic to ELF aside from the DLL 
> > stuff as CoreFoundation needs to export the symbol somehow while preserving 
> > the implicit extern attribute for every other TU that comes from the 
> > builtin that `CFSTR` expands to. Is what I'm suggesting making sense? If 
> > not, let me know, I may be misunderstanding what's happening here.
>
>
> Following the ELF conventions seems like the right thing to do, assuming it 
> doesn't cause compatibility problems.  David Chisnall might know best here.


I don't believe it will have any compatibility issues.  We expose builtins for 
creating CF- and NSString objects from C code.  For Apple targets, these are 
equivalent.  For targets that don't care about Objective-C interop, the CF 
version is sensible because it doesn't introduce any dependencies on an 
Objective-C runtime.  For code targeting a non-Apple runtime and wanting CF / 
Foundation interop, the `CFSTR` macro expands to the NS version.

As others have pointed out, the section must be a valid C identifier for the 
magic `__start_` and `__stop_` symbols to be created.  I don't really like this 
limitation and it would be nice if we could improve lld (and encourage binutils 
to do the same) so that `__start_.cfstring` and `__stop_.cfstring` could be 
used to create symbols pointing to the start and end of a section because it's 
useful to name things in such a way that they can't conflict with any valid C 
identifier.  With PE/COFF, we have a mechanism for more precise control and can 
give sections any names that we want (and also arrange for start and end 
symbols for subsections).


Repository:
  rC Clang

https://reviews.llvm.org/D52344



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to