This patch corrects the following: - Fixes a problem where use of "ld -r" will change symbol preemption behavior. - Fixes four linker problems: Hidden/export symbols, Assert getting generated with R_GPVALUE relocations, improper Text segment alignment processing, and linker memory managment problem processing c++ symbols. - Fixes a problem where the linker might crash when printing out lengthy error diagnostics. - Fix for a linker problem that could cause incorrect symbol resolution in call_shared applications. The result is the application may use a shared library's version of a symbol rather than a symbol with the same name defined in the application.