2012-03-13 17 views
2

私のプログラムで_GLOBAL_OFFSET_TABLE_のアドレスを取得したいと思います。 1つの方法は、Linuxでnmコマンドを使用することです。出力をファイルにリダイレクトし、そのファイルを解析して_GLOBAL_OFFSET_TABLE_のアドレスを取得します。しかし、この方法は非常に非効率的であるようです。それを行うより効率的な方法は何ですか?プログラムで_GLOBAL_OFFSET_TABLE_アドレスを取得するにはどうすればよいですか?

答えて

0

これは動作するように表示されます。

#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_ 
+0

誓い、これは素晴らしいです! – MetallicPriest

+0

@MetallicPriestおそらく、あなたは 'nm 'が別の値を与える理由を* me *に伝えることができますか? – trojanfoe

+0

OK、私はそれを確認します。私はあなたに知らせるでしょう:)。 – MetallicPriest

関連する問題