CFLAGS+= -fPIC per default?
Joseph Fenton
jlfenton at citlink.net
Sun Feb 22 14:41:25 PST 2004
Marcel Moolenaar wrote:
>On Sun, Feb 22, 2004 at 02:27:34PM -0700, Joseph Fenton wrote:
>
>
>>Sorry to be anal, but PC-relative addressing is by definition
>>position-independent code.
>>
>>
>
>False.
>
>The fundamental property of PIC , besides the fact that it's a
>complete misnomer, is that there are no relocations in the code
>segment.
>
You just proved my statement true. PC-relative code contains no
relocation for within a code section. How do you think that conditional
branches work? They do PC-relative jumps inside the code section.
> The operating system cannot share read-only segments if
>the linker/loader has to modify it first to relocate it depending
>on where segments are loaded in memory for each process. Across
>processes the relative distance between two segments within the
>same shared executable is not fixed. Therefore, PIC has not so
>much to do with whether or not PC-relative addressing can be used
>per se, as it has to do with how much the compiler/assembler knows
>about the relative distance between addresses. In practice this
>is not as much as it seems due to the tendency to make the unit
>of compilation smaller.
>
>
>
I stated in my email that between two sections you'd have to
use a table. That in no way invalidates the fact that within a
section, PC-relative is position-independent. As shown in the
code snippets, PC-relative is also smaller.
>>Sorry to nit-pick like this, but having worked on both Mac
>>and Amiga ROMs, PIC mode under BSD really seems
>>backwards to me.
>>
>>
>
>It's no different than PIC on other OSes.
>
>
>
You've obviously never looked at Mac or Amiga code. Not
BSD on the Mac or Amiga, but Mac or Amiga code. You admit
above that PIC on BSD is a complete misnomer.
More information about the freebsd-amd64
mailing list