https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26989
Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #10 from Iain Sandoe <iains at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #9) > The G++ code now uses: > > if (is_attribute_p ("visibility", name)) > > and the test that was failing uses: > > // { dg-require-visibility "" } > > which also depends on whether the attribute is supported: > > ############################### > # proc check_visibility_available { what_kind } > ############################### > > # The visibility attribute is only support in some object formats > # This proc returns 1 if it is supported, 0 if not. > # The argument is the kind of visibility, default/protected/hidden/internal. > > proc check_visibility_available { what_kind } { > if [string match "" $what_kind] { set what_kind "hidden" } > > return [check_no_compiler_messages visibility_available_$what_kind > object " > void f() __attribute__((visibility(\"$what_kind\"))); > void f() {} > "] > } > > So I think this is probably doing the right thing for all targets now. Yeah, the attribute is supported on Darwin at least back to Darwin8, and as noted, earlier systems won't bootstrap without a tools update (which would include such support). So I think we can close this as 'fixed by the passage of time'.