The picture from Patrick Horgan describes what will the c program do before main function.
If you compile a c program, the linker will link crt0.o, ctri.o, ctrbegin.o, ctrn.o with the target object together.
_start function, it will initialize the process before call
main function, it is defined in libc’s crt0.s file.
According to osdev, ctri.o defines the header of
_fini function, and ctrn.o defines the footer of
_fini function. And linker will link ctrbegin.o’s section
.fini between ctri.o and ctrn.o
ctrbegin.o also defines some functions such as
deregister_tm_clones, register_tm_clones, __do_global_dtors_aux, frame_dummy