title: What functions does gcc add to the linux ELF?
body: <p>When linking a hello-world-like program in c (or asm) with <code>gcc</code> it will add some stuff into the result executable object file. I know only about runtime dynamic linker and <code>_start</code> entry point but what is the kind of these added functions?</p>
  
  <pre><code>00000000004003f0 t deregister_tm_clones
  0000000000400430 t register_tm_clones
  0000000000400470 t __do_global_dtors_aux
  0000000000400490 t frame_dummy
  00000000004004e0 T __libc_csu_init
  0000000000400550 T __libc_csu_fini
  0000000000400554 T _fini
  0000000000600668 t __frame_dummy_init_array_entry
  0000000000600668 t __init_array_start
  0000000000600670 t __do_global_dtors_aux_fini_array_entry
  0000000000600670 t __init_array_end
  </code></pre>
  
  <p>What are they and what for? Is it described somewhere? Googling does not help.</p>