compnerd added a comment.

I'm well versed in the complexities of a linker - I've worked extensively on 
the GNU linkers as well as with lld.  The visibility of the symbols is actually 
computed by the compiler - the STV_* flags associated with the symtab entry 
give you that information which is actually tracked through the frontend to the 
backend.  Yes, each linker behaves differently - including lld which completely 
changes the semantics of Unix/ELF linking guarantees.  In fact every single 
attribute that you mentioned is something which is emitted from the compiler - 
which we have access to here given that we are in clang itself.  I think that 
this can be made to work properly, though will probably require some iteration 
to get all the corner cases, and that you may be slightly dismissive of this 
approach.

Ah, okay, I didn't pick up that you were using module as the actual module from 
the context since normally the module doesn't control what it exposes itself.

Note that I am not advocating that this change go in as is - I think that this 
is far from something which would be useful, and until it can produce something 
meaningful, this shouldn't really be merged (i.e. generate something which 
obj2yaml or some other tool can consume to generate the barest ELF stub).


Repository:
  rC Clang

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

https://reviews.llvm.org/D60974



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

Reply via email to