Re: PIC is wasteful

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

 




On 24-06-2011 17:56, Ian Lance Taylor wrote:
-mcmodel=large.
The large model is not supported. If it was, it would probably be
inefficient.
The large model certainly is supported.

What version of gcc are you using?
You are right. I tried a newer version (gcc 4.5.2, binutils 2.21) and the large model works.

Now I can make a 64 bit shared object with -mcmodel=large and without -fpic and it works. But as I suspected, it is not optimal. It uses full 64 bit addresses for almost everything rather than 32 bit relative addresses. This is inefficient because it makes the code larger and because 64 bit addressing is poorly supported in the x64 instruction set. It loads the full absolute address into a 64-bit pointer register whenever it is reading or writing any register other than eax and when calling an external function.

I need a memory model between medium and large to allow 32-bit relative addresses but not 32-bit absolute addresses.


[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