SPRAB89A September 2011 – March 2014
Position independent code can be loaded and run at any address—not necessarily the address specified in the p_vaddr field of the program header—without requiring load-time relocation. However, since segments may refer to each other using relative offsets, their relative positions must be maintained even if they are loaded somewhere other than the location given by their p_vaddrs. The System V ABI refers to the displacement between segments. specified and actual addresses as the base address.
The degree to which position-independent segments can be loaded at a different address is platform-specific. However, there are a few universal rules: