https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113958
--- Comment #3 from Noel Grandin <noelgrandin at gmail dot com> --- Andrew, the specific application here is a very large (10MLoc) codebase (LibreOffice), where we have lots of very large classes with tons of methods, where I want to limit symbol visibility to only the symbols that are needed for running unit tests. So sure, technically I could make the whole class visibility=default, and then annotate most of the methods with visibility=hidden. Or I could use linker scripts. But ergonomically, the easiest thing to do is to compile with visibility=hidden, and then annotate the small subset of symbols I want exposed. So this is an ergonomic / quality-of-life feature request, not a bug.