2014-07-17

GCCにてプログラムセグメントのアドレスを取得

GCCでは, プログラムセグメントの番地を取得するシンボルが用意されている. etext, edata, end というグローバル変数を extern 属性を付けて宣言すれば良いらしい. 以下に, マニュアルからとってきた例を示す.
       #include 
       #include 

       extern char etext, edata, end; /* The symbols must have some type,
                                          or "gcc -Wall" complains */

       int
       main(int argc, char *argv[])
       {
           printf("First address past:\n");
           printf("    program text (etext)      %10p\n", &etext);
           printf("    initialized data (edata)  %10p\n", &edata);
           printf("    uninitialized data (end)  %10p\n", &end);

           exit(EXIT_SUCCESS);
       }

具体的な使い道が思い浮かばない...

0 件のコメント:

コメントを投稿