首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >其中以下函数来自`_GLOBAL__sub_I_a()`和`__static_initialization_and_destruction_O()`

其中以下函数来自`_GLOBAL__sub_I_a()`和`__static_initialization_and_destruction_O()`
EN

Stack Overflow用户
提问于 2020-05-06 10:02:07
回答 1查看 255关注 0票数 0

在分析C++构造函数/析构函数调用代码时,我了解到在main()开始之前,libc (或glibc)代码调用构造函数和寄存器析构函数,我看到以下堆栈跟踪

代码语言:javascript
复制
A::A() at clA.cc:3 0x5555555549a6   
__static_initialization_and_destruction_0() at main.cc:4 0x55555555493b 
_GLOBAL__sub_I_a() at main.cc:10 0x555555554997 
__libc_csu_init() at 0x555555554c1d 
__libc_start_main() at libc-start.c:266 0x7ffff7464b28  
_start() at 0x5555555547ba  

现在我知道__libc_start_main来自libc,libc调用静态链接的__libc_csu_init (因为我看不到它的源代码),但我在glibc/glibc-2.27/csu/elf-init.c中找到了它,但我无法找到_GLOBAL__sub_I_a()__static_initialization_and_destruction_O()的源代码,这些函数来自哪个库,并与我们的可执行文件静态链接,我知道这些函数是静态链接的,但我希望看到源代码来理解它们,了解幕后的内容。

谢谢,法哈德

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 11:02:12

clang文档中有一个关于Constructing and destroying global objects的部分,您可能会对此感兴趣。

你一定要读一下What does '_GLOBAL__sub_I_' mean in nm output?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61626117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档