|
In computer science, relocation is the process of replacing symbolic references or names of libraries with actual usable addresses in memory before running a program. It is typically done by the linker during compilation (at compile time), although it can be done at runtime by a loader. Compilers or assemblers typically generate the executable with zero as the lower-most, starting address. Before the execution of object code, these addresses should be adjusted so that they denote the correct runtime addresses.
Relocation is typically done in two steps:
A fixup table can also be provided in the header of the object code file. Each "fixup" is a pointer to an address in the object code that must be changed when the loader relocates the program. Fixups are designed to support relocation of the program as a complete unit. In some cases, each fixup in the table is itself relative to a base address of zero, so the fixups themselves must be changed as the loader moves through the table. John R. Levine (October 1999). "Chapter 3: Object Files", Linkers and Loaders. Morgan-Kauffman. ISBN 1-55860-496-0. In some architectures, compilers, and executable models, a fixup that crosses certain boundaries (such as a segment boundary) or that does not lie on a word boundary is illegal and flagged as an error by the linker. Borland article #15961: Coping with \'Fixup Overflow\' messages. Retrieved on 2007-01-15.
This article is licensed under the GNU Free Documentation License. It uses material from Wikipedia