在C++程序的反汇编 View 中,GLOBAL
是指什么?
我有一个木条说:je 0xb74d334a <_GLOBAL__sub_I_myFile.cpp+106>
我想这是对myFile.cpp的调用,但是我想在调用之前知道GLOBAL单词的含义...
myFile.cpp的内容:
[include guards]
#include <mutex.hpp> // Functions I use to handle mutex
namespce myNameSpace {
class myClass {
public:
static void stdOutFormat(const char* format, ...);
private:
static Mutex(Synchro) // Custom functions from mutex.hpp and others ...
};
}
[end include guards]
拆卸(我会尽量简化):
[some calls]
call 0xb74d1b80 <os_mutexInit@plt>
test %esi, %esi
je 0xb74d33a <_GLOBAL__sub_I_myFile.cpp+106>
mov (%esi), %eax
[some calls]
最佳答案
这些符号用于编译器生成的静态初始化器。从GCJ mailing list:
这里讨论的是GCJ,但是C++编译器的行为类似。所有此类初始化程序的指针都放在.ctors
节中,并由CRT启动代码调用,然后再调用main()
。