title: Effects of removing all symbol table and relocation information from an executable?
body: <p>Compilation using <strong><a href="http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options" rel="nofollow noreferrer"><code>gcc -s</code></a></strong> and Unix <strong><a href="http://en.wikipedia.org/wiki/Strip_%28Unix%29" rel="nofollow noreferrer"><code>strip</code></a></strong> remove all symbol table and relocation information from an executable (making it smaller in size).</p>
  <p>Could this ever affect the functioning of the executable? Do some operating systems which perform Address Space Layout Randomization (<strong><a href="http://en.wikipedia.org/wiki/Address_space_layout_randomization" rel="nofollow noreferrer">ASLR</a></strong>) need this information? If not, why keep them around in the first place?</p>
  <p>A slightly-<strong>detailed</strong> overview of the above would be helpful.</p>