当我试图解决静态链接中的问题时,我_GLOBAL__sub_I_在符号名称前面遇到了几个前缀.尽管我使用过,它仍然以那种形式出现nm --demangle(-C).
我偶然发现了这个答案(如何找到全局静态初始化).看看我的源代码,它确实看起来像一个全局静态变量的初始化.
我想知道的是,我在哪里可以获得有关__sub_和其他受损名称的更多信息__cxxabiv1?
我正在读"黑客"这本书.在这本书中有解释使用的部分.dtors和.ctors.
我正在尝试重现本书的一个练习,但在我的可执行文件中,我没有这一部分.起初我认为问题是我正在编译64位,但现在我正在编译32位.dtors并且.ctors仍然没有出现在节表中.这是代码:
#include <stdio.h>
#include <stdlib.h>
static void
miConstructor(void) __attribute__ ((constructor));
static void
miDestructor(void) __attribute__ ((destructor));
int
main(void) {
printf("En main() \n");
return 0;
}
void
miConstructor(void) {
printf("En el constructor\n");
}
void
miDestructor(void) {
printf("En el destructor\n");
}
Run Code Online (Sandbox Code Playgroud)
我正在编译:
gcc -m32 -o a.out dtors_example.c
Run Code Online (Sandbox Code Playgroud)
这是nm的输出:
080495f0 d _DYNAMIC
080496e4 d _GLOBAL_OFFSET_TABLE_
080484dc R _IO_stdin_used
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
w _Jv_RegisterClasses
080485d8 r __FRAME_END__
080495ec d __JCR_END__
080495ec d __JCR_LIST__
08049704 D …Run Code Online (Sandbox Code Playgroud)