|
|
Executable and shared object files have a base address, which is the lowest virtual address associated with the memory image of the program's object file. One use of the base address is to relocate the memory image of the program during dynamic linking.
An executable or shared object file's base address is calculated during execution from three values: the memory load address, the maximum page size, and the lowest virtual address of a program's loadable segment. The virtual addresses in the program headers might not represent the actual virtual addresses of the program's memory image.
To compute the base address, determine the memory address
associated with the lowest p_vaddr
value for a
PT_LOAD segment. Next obtain the base address by
truncating the memory address to the nearest multiple of
the maximum page size. Depending on the type of file being
loaded into memory, the memory address might or might not
match the p_vaddr
values.