DHowett-MSFT added inline comments.

================
Comment at: clang/lib/CodeGen/CGObjCGNU.cpp:188
 
+  StringRef SymbolPrefix() {
+    return CGM.getTriple().isOSBinFormatCOFF() ? "_" : "._";
----------------
theraven wrote:
> DHowett-MSFT wrote:
> > theraven wrote:
> > > DHowett-MSFT wrote:
> > > > Should this be `SymbolPrefix()` or something more like 
> > > > `MangleSymbol(StringRef sym)`? I know that right now we only need to 
> > > > prepend `_` or `._`, but is it more future-proof to make it generic?
> > > I have refactored this, and then tried adding a $ instead of the . for 
> > > mangling.  On further testing, the latest link.exe from VS 2017 no longer 
> > > complains about symbols starting with a dot, so I'm inclined to revert 
> > > that part of it entirely (lld-link.exe was always happy).  I'd prefer to 
> > > minimise differences between COFF and ELF and this means that we have 
> > > different section names, but aside from needing the extra global 
> > > initialisation on COFF, everything else is the same.  
> > The issue I had with symbols starting with `.` was in `.DEF` files 
> > specifically.
> > 
> > Linking a shared object containing:
> > ```
> > @.exp_with_dot = dllexport global i32 0, align 4
> > ```
> > 
> > without a def file, yields:
> > 
> > ```
> >     ordinal hint RVA      name
> > 
> >           1    0 00012900 .exp_with_dot
> > ```
> > 
> > However, linking the same library with a definition file:
> > 
> > ###test.def
> > ```
> > EXPORTS
> >  .exp_with_dot
> > ```
> > 
> > yields
> > 
> > ###output
> > ```
> > test.def : fatal error LNK1242: '.exp_with_dot' is an invalid export symbol 
> > name
> > ```
> > 
> > This still reproduces with 15.9.8, sadly. LINK version 14.16.27027.1.
> Does it work with a $ instead of a .?
Hey, `$` actually works!

```
EXPORTS
 $exp_with_dollar
```

```
    ordinal hint RVA      name

          1    0 00012900 $exp_with_dollar
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58724/new/

https://reviews.llvm.org/D58724



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

Reply via email to