何时使用.fini_array部分?

时间:2014-10-10 06:09:29

标签: linux printf objdump

我跟随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。所以当它被使用时,我该如何继续工作?

1 个答案:

答案 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的一种更高级版本。