Linux ELF & Dynamic Linking: How a Binary Actually Runs