What functions does gcc add to the linux ELF?
<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>