Re: PIC is wasteful

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Interestingly, it all works in 32 bit mode. I can compile without -fpic and make an absolute reference to a global variable with no GOT entry and no PLT in a shared object and I get no warnings or errors. It just works. Also, there is no exception handler section even though I did not turn off exceptions.

Why is 64 bit mode so different?


On 24-06-2011 10:23, Andrew Haley wrote:

Why does it make 32 bit absolute addresses when I specify
-mcmodel=medium?
Small symbols are placed in the lower 2G.
So I would have to replace all variables with very big arrays in order to prevent 32 bit addresses in 64 bit mode :-(

Is there no way to avoid 32 bit absolute addresses in 64 bit mode other than -fpic which has the undesired effect of using GOT and PLT entries?

This is weird:
-fpic doesn't make position-independent code as the name implies - it makes code that fits into a shared object. My test code compiled with -fpic or -fPIC still has absolute references in virtual tables and in the exception handler section in both 32 and 64 bit mode.

-Bsymbolic doesn't seem to do anything. At least it doesn't prevent GOT entries



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux