[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.