[PATCH] D50652: [libcxx] By default, do not use internal_linkage to hide symbols from the ABI

Louis Dionne via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 13 13:53:49 PDT 2018


ldionne added a comment.

In https://reviews.llvm.org/D50652#1197830, @rnk wrote:

> In https://reviews.llvm.org/D50652#1197780, @ldionne wrote:
>
> > One thing to keep in mind is that we do not have a solution that allows removing both `internal_linkage` and `always_inline`. It's either `internal_linkage` or `always_inline`, but you can't get rid of both until we fix some problems with extern template declarations and visibility attributes. What I can do, however, is reverse the default to use `internal_linkage`, and then have a temporary hook that allows Chromium to stay on `always_inline`. In the future, we'd remove that hook and the choice would be between `internal_linkage` and nothing at all.
>
>
> It's probably worth it to me to debug and understand that problem. Is there a good explanation of it?


http://lists.llvm.org/pipermail/llvm-dev/2018-July/124549.html

This is understood, it just needs more work than we can reasonably expect to get into LLVM 7.

> Also, if a user could define _LIBCPP_ABI_UNSTABLE, does this problem still apply? Could we remove the problematic visibility attributes if the ABI is unstable?

I guess in that case, we could simply remove _all_ visibility attributes (and linkage attributes). libc++ may end up exporting more symbols than we want, but defining `_LIBCPP_ABI_UNSTABLE` would explicitly state that we don't care about that. Doing this is a possibility, but don't think this is the way we want to solve the problem at hand.


Repository:
  rCXX libc++

https://reviews.llvm.org/D50652





More information about the cfe-commits mailing list