Process Layout - i386 W^X Range of execution - exec line 512MB 512MB gap between start of .text and start of .data User program loaded high at fixed address so heap can follow program data ld.so and shared libs .text loaded into random addresses in first 256MB of memory .data loaded at 512MB offset from .text Result is random placement of shared libs below user programs .text segment