Relocation (computing): Difference between revisions

Content deleted Content added
review: WP:OVERLINK. MOS:SLASH. grammar.
review: research and clarify Windows and ALSR with ref
 
Line 23:
Far [[pointer (computer programming)|pointer]]s ([[32-bit]] pointers with [[x86 memory segmentation|segment]]:offset, used to address 20-bit 640 [[kilobyte|KB]] memory space available to [[DOS]] programs), which point to code or data within a [[DOS executable]] ([[EXE]]), do not have absolute segments, because the actual address of code or data depends on where the program is loaded in memory and this is not known until the program is loaded.
 
Instead, segments are relative values in the DOS EXE file. These segments need to be corrected, when the executable has been loaded into memory. The EXE [[loader (computing)|loader]] uses a relocation table to find the segments that need to be adjusted.<!--[[User:Kvng/RTH]]-->
 
=== 32-bit Windows ===
With 32-bit Windows operating systems, it is not mandatory to provide relocation tables for EXE files, since they are the first image loaded into the virtual address space and thus will be loaded at their preferred base address.
 
For both [[Dynamic Link Library|DLL]]s and for EXEs which opt into [[address space layout randomization]] (ASLR), an [[exploit (computer security)|exploit]] mitigation technique introduced with [[Windows Vista]], relocation tables once again become mandatory because of the possibility that the binary may be dynamically moved before being executed, even though they are still the first thing loaded in the virtual address space.
 
Windows executables can be marked as ASLR-compatible. The ability exits in Windows 8 and newer to enable ASLR even for applications not marked as compatible.<ref>{{cite web |url=https://cloud.google.com/blog/topics/threat-intelligence/six-facts-about-address-space-layout-randomization-on-windows |title=Six Facts about Address Space Layout Randomization on Windows |date=March 17, 2020 |access-date=July 24, 2020}}</ref> To run successfully in this envoronment the relocation sections cannot be omitted by the compiler.<!--[[User:Kvng/RTH]]-->
=== 64-bit Windows ===
When running native 64-bit binaries on Windows Vista and above, ASLR is mandatory{{Citation needed|date=January 2014}}, and thus relocation sections cannot be omitted by the compiler.
 
=== Unix-like systems ===