在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()

07-24 09:44
查看更多