2
我想在我的程序中得到_GLOBAL_OFFSET_TABLE_的地址。一種方法是在Linux中使用nm命令,可能會將輸出重定向到一個文件並解析該文件以獲取_GLOBAL_OFFSET_TABLE_的地址。但是,這種方法似乎效率很低。什麼是更有效的方法呢?我怎樣才能在我的程序中獲得_GLOBAL_OFFSET_TABLE_地址?
我想在我的程序中得到_GLOBAL_OFFSET_TABLE_的地址。一種方法是在Linux中使用nm命令,可能會將輸出重定向到一個文件並解析該文件以獲取_GLOBAL_OFFSET_TABLE_的地址。但是,這種方法似乎效率很低。什麼是更有效的方法呢?我怎樣才能在我的程序中獲得_GLOBAL_OFFSET_TABLE_地址?
這似乎工作:
#include <stdio.h>
extern void *_GLOBAL_OFFSET_TABLE_;
int main()
{
printf("_GLOBAL_OFFSET_TABLE = %p\n", &_GLOBAL_OFFSET_TABLE_);
return 0;
}
它提供:
$ ./test
_GLOBAL_OFFSET_TABLE = 0x6006d0
然而,nm
認爲不同:
$ nm test | fgrep GLOBAL
0000000000600868 d _GLOBAL_OFFSET_TABLE_
誓言,這是驚人的! – MetallicPriest 2012-03-13 15:28:01
@MetallicPriest也許你可以告訴我*爲什麼'nm'給出了不同的值? – trojanfoe 2012-03-13 15:29:43
好吧,當我檢查它時,我會讓你知道:)。 – MetallicPriest 2012-03-13 16:22:04