On Fri, May 06, 2022 at 02:56:56PM +0200, Jan Beulich wrote: > On 05.05.2022 16:21, Roger Pau Monne wrote: > > --- a/xen/include/xen/compiler.h > > +++ b/xen/include/xen/compiler.h > > @@ -125,10 +125,11 @@ > > #define __must_be_array(a) \ > > BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0]))) > > > > -#ifdef CONFIG_CC_HAS_VISIBILITY_ATTRIBUTE > > -/* Results in more efficient PIC code (no indirections through GOT or > > PLT). */ > > -#pragma GCC visibility push(hidden) > > -#endif > > +/* > > + * Results in more efficient PIC code (no indirections through GOT or PLT) > > + * and is also required by some of the assembly constructs. > > + */ > > +#pragma GCC visibility push(protected) > > > > /* Make the optimizer believe the variable can be manipulated arbitrarily. > > */ > > #define OPTIMIZER_HIDE_VAR(var) __asm__ ( "" : "+g" (var) ) > > This has failed my pre-push build test, with massive amounts of errors > about asm() constraints in the alternative call infrastructure. This > was with gcc 11.3.0.
Hm, great. I guess I will have to use protected with clang and hidden with gcc then, for lack of a better solution. I'm slightly confused as to why my godbolt example: https://godbolt.org/z/chTnMWxeP Seems to work with gcc 11 then. I will have to investigate a bit I think. Thanks, and sorry for the trouble.