View and Strip Relocations (Fix-Up Table)
The relocation information helps the operating system load an executable file and apply fixups for absolute addresses. The relocation data is needed by the loader if the image cannot be loaded to the preferred load address ImageBase mentioned in the Optional Header. In this case, the fixed addresses supplied by the linker are no longer valid, and the loader has to apply fixups for absolute addresses used for locations of static variables, string literals, etc. On the other hand, if the loader was able to load the file at the preferred base address, the relocation data is not needed and is ignored.
The Fix-Up Table contains entries for all fixups in the image. The Total Fix-Up Data Size in the Optional Header is the number of bytes in the fixup table. The fixup table is broken into blocks of fixups. Each block represents the fixups for a 4K page. The entries in the Fix-Up Table are called base relocations since their use depends on the base address of the loaded image.
Relocations Removal Tool
This tool strips the table of the base relocations (Fix-Up Table) from the EXE files and saves space, making them smaller. As a rule, there's no need for an EXE to have a base relocation table. This is because EXEs are the first thing loaded into an address space, and therefore are guaranteed to load at the preferred load address. We highly recommend that you do not strip relocations from all EXEs you come across, because while this may save space, it may cause some executables not to work properly. On the other hand, in Visual Studio .NET, the linker omits relocations for EXEs when doing a release build. If you take a look at Windows Notepad.exe there is no relocation table within.
The Relocations Removal tool determines whether a file is a DLL or driver and warns you in each case. Since DLLs and drivers require a base relocation table, removing any of those relocations can result in corrupted files, and it is very likely that the newly saved file will appear to be invalid.
We highly recommend that you do not run the Relocations Removal tool on DLLs and drivers: base relocations should always be left in. If you want to take a chance you can proceed with removing Relocations, but please make a backup copy of the target file before making any changes to it.