>>> 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
>> 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
>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>
--- 2006-09-11.orig/xen/include/xen/compiler.h 2006-05-02 16:41:35.000000000
+++ 2006-09-11/xen/include/xen/compiler.h 2006-09-13 13:23:25.000000000
@@ -35,6 +35,10 @@
#define offsetof(a,b) ((unsigned long)&(((a *)0)->b))
+#if defined(__x86_64__) && (__GNUC__ > 3)
+#pragma GCC visibility push(hidden)
/* 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