what does -fno-pic do

Yubin Ruan ablacktshirt@gmail.com
Mon Jul 11 11:00:00 GMT 2016


On 2016年07月11日 16:44, Mason wrote:
> On 10/07/2016 16:15, Yubin Ruan wrote:
>
>>       I am reading some OS kernel codes, and I find that in the Makefile
>> used to build the kernel, there is a **-fno-pic** flag. I totally don't
>> understand what that mean. I try to find some description from the man
>> pages but can find no direct description about that flag (same for the
>> **-fpic** flags).
>
> Really? A search for gcc fpic returns many relevant results.
>
> Here, pic stands for "position-independent code".
>
> The latest gcc documentation states:
> ( https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html )
>
>> -fpic
>>
>> Generate position-independent code (PIC) suitable for use in a shared
>> library, if supported for the target machine. Such code accesses all
>> constant addresses through a global offset table (GOT). The dynamic
>> loader resolves the GOT entries when the program starts (the dynamic
>> loader is not part of GCC; it is part of the operating system). If
>> the GOT size for the linked executable exceeds a machine-specific
>> maximum size, you get an error message from the linker indicating
>> that -fpic does not work; in that case, recompile with -fPIC instead.
>> (These maximums are 8k on the SPARC, 28k on AArch64 and 32k on the
>> m68k and RS/6000. The x86 has no such limit.)
>>
>> Position-independent code requires special support, and therefore
>> works only on certain machines. For the x86, GCC supports PIC for
>> System V but not for the Sun 386i. Code generated for the IBM RS/6000
>> is always position-independent.
>>
>> When this flag is set, the macros __pic__ and __PIC__ are defined to 1.
>
> Regards.
>

I really search carefully in the man pages on my Ubuntu/Linux-14.04-LTS. 
I cannot find much description about that. Afterwards I find the online 
manual that you describe.

Actually, I wonder why the man pages on my Ubuntu/Linux is so different 
from that online.

Regards,
Ruan.



More information about the Gcc mailing list