我跟随http://tinyhack.com/2014/03/12/implementing-a-web-server-in-a-single-printf-call/编写了一个只有printf()调用的Web服务器。
我遵循文章的指导。
Howerver,我发现我的程序的可执行文件在objdump的帮助下不包含.fini_array部分。
注意到.fini_array是由Linux标准基本核心规范定义的。
我读了它并且我对.fini_array部分和.fini部分之间的关系感到好奇,它们如何一起工作?
似乎没有必要使用.fini_array。所以当它被使用时,我该如何继续工作?
答案 0 :(得分:1)
来自http://docs.oracle.com/cd/E19683-01/817-1983/6mhm6r4es/index.html:
运行时链接程序执行其地址包含在其中的函数 .fini_array部分。这些功能反过来执行 其地址出现在数组中的顺序。运行时链接程序 将.fini部分作为单独的函数执行。如果是一个对象 包含.fini和.fini_array部分,由...定义的函数 .fini_array部分在.fini部分之前处理 那个对象。
因此fini_array
是可选的,并且是fini
的一种更高级版本。