[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86-64: suppress some unneeded side effects of -fPIC
>>> Keir Fraser <Keir.Fraser@xxxxxxxxxxxx> 13.09.06 14:46 >>> >On 12/9/06 16:43, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote: > >> Full PIC mode isn't needed for Xen, namely is there no need to access data >> objects via the GOT or call functions through the PLT. Adding >> -fvisibility=hidden (if the compiler supports it) helps, although it doesn't >> do >> as good a job as would be desired (I'm in talks with our compiler guys to >> understand why). >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> > >What overheads does this remove? Does it actually shorten code sequences? It allows global data objects to be accessed without going through the GOT. >It seems that some gcc v3 compilers have -fvisibility=hidden too (e.g. My >gcc-3.4.4 does). I thus checked in a patch that checks for availability of >this feature in a 'test-gcc-flag' style of way (as defined in Config.mk), >rather than doing a gcc version test. Hmm, bad luck, this time I had hoped it'll take you a little longer to commit it, as we've found a better solution: Using #pragma GCC visibility, *all* data references benefit, not just the ones to objects defined in the same translation unit. However, as this now is a header file change, detection logic cannot be used as nicely, so I guess we want to keep the previous change and add this one on top. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx> Index: 2006-09-11/xen/include/xen/compiler.h =================================================================== --- 2006-09-11.orig/xen/include/xen/compiler.h 2006-05-02 16:41:35.000000000 +0200 +++ 2006-09-11/xen/include/xen/compiler.h 2006-09-13 13:23:25.000000000 +0200 @@ -35,6 +35,10 @@ #define offsetof(a,b) ((unsigned long)&(((a *)0)->b)) #endif +#if defined(__x86_64__) && (__GNUC__ > 3) +#pragma GCC visibility push(hidden) +#endif + /* This macro obfuscates arithmetic on a variable address so that gcc shouldn't recognize the original var, and make assumptions about it */ /* _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |