相关疑难解决方法(0)

'_GLOBAL__sub_I_'在nm输出中的含义是什么?

当我试图解决静态链接中的问题时,我_GLOBAL__sub_I_在符号名称前面遇到了几个前缀.尽管我使用过,它仍然以那种形式出现nm --demangle(-C).

我偶然发现了这个答案(如何找到全局静态初始化).看看我的源代码,它确实看起来像一个全局静态变量的初始化.

我想知道的是,我在哪里可以获得有关__sub_和其他受损名称的更多信息__cxxabiv1

c++ name-mangling nm

13
推荐指数
1
解决办法
3293
查看次数

无法在二进制文件中找到.dtors和.ctors

我正在读"黑客"这本书.在这本书中有解释使用的部分.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)

c constructor destructor objdump nm

4
推荐指数
1
解决办法
5040
查看次数

标签 统计

nm ×2

c ×1

c++ ×1

constructor ×1

destructor ×1

name-mangling ×1

objdump ×1