OSDN Git Service

長音記号の修正を release に反映
[linuxjm/LDP_man-pages.git] / release / man3 / dl_iterate_phdr.3
index 53d6d9d..5601365 100644 (file)
@@ -1,5 +1,6 @@
 .\" Copyright (c) 2003 by Michael Kerrisk <mtk.manpages@gmail.com>
 .\"
+.\" %%%LICENSE_START(VERBATIM)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
-.\" License.
+.\" %%%LICENSE_END
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
 .\"
 .\" Japanese Version Copyright (c) 2005 Yuichi SATO
 .\"         all rights reserved.
 .\" Translated Thu Jan 27 07:03:56 JST 2005
 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
 .\"
-.TH DL_ITERATE_PHDR 3 2007-05-18 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-dl_iterate_phdr \- ¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤òé¤ë
-.SH ½ñ¼°
+.TH DL_ITERATE_PHDR 3 2007\-05\-18 GNU "Linux Programmer's Manual"
+.SH 名前
+dl_iterate_phdr \- 共有オブジェクトのリストを辿る
+.SH 書式
 .nf
-.BR "#define _GNU_SOURCE" "         /* feature_test_macros(7) »²¾È */"
-.B #include <link.h>
+\fB#define _GNU_SOURCE\fP         /* feature_test_macros(7) 参照 */
+\fB#include <link.h>\fP
 
 \fBint dl_iterate_phdr(\fP
-          \fBint (*\fPcallback\fB) \
-(struct dl_phdr_info *\fPinfo\fB,\fP
-                           \fBsize_t\fP size\fB, void *\fPdata\fB),\fP
-          \fBvoid *\fPdata\fB);\fP
+\fB          int (*\fP\fIcallback\fP\fB) (struct dl_phdr_info *\fP\fIinfo\fP\fB,\fP
+\fB                           size_t \fP\fIsize\fP\fB, void *\fP\fIdata\fP\fB),\fP
+\fB          void *\fP\fIdata\fP\fB);\fP
 .fi
-.SH ÀâÌÀ
-.BR dl_iterate_phdr ()
-´Ø¿ô¤ò»È¤¦¤È¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¼Â¹Ô»þ¤Ë
-¤É¤Î¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤ò¥í¡¼¥É¤·¤¿¤«¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-
-.BR dl_iterate_phdr ()
-´Ø¿ô¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤òé¤ê¡¢
-³Æ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ´Ø¿ô
-.I callback
-¤ò 1 ²ó¤º¤Ä¸Æ¤Ó½Ð¤¹¡£
-¤³¤ì¤ÏÁ´¤Æ¤Î¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤¬½èÍý¤µ¤ì¤ë¤«¡¢
-.I callback
-¤¬ 0 °Ê³°¤ÎÃͤòÊÖ¤¹¤Þ¤Ç¹Ô¤ï¤ì¤ë¡£
-
-³Æ¡¹¤Î
-.I callback
-¸Æ¤Ó½Ð¤·¤Ï 3 ¤Ä¤Î°ú¤­¿ô¤ò¼õ¤±¼è¤ë:
-.I info
-¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ðÊó¤òÊÝ»ý¤¹¤ë¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
-.I size
-¤Ï
-.I info
-¤Ç»Ø¤µ¤ì¤ë¹½Â¤ÂΤΥµ¥¤¥º¤Ç¤¢¤ë¡£
-.I data
-¤Ï¸Æ¤Ó½Ð¤·¸µ¥×¥í¥°¥é¥à¤«¤é
-.BR dl_iterate_phdr ()
-¤Î¸Æ¤Ó½Ð¤·¤Î (Ʊ¤¸¤¯
-.I data
-¤È¤¤¤¦Ì¾Á°¤Î) Âè 2 °ú¤­¿ô¤È¤·¤ÆÅϤµ¤ì¤ëÃͤΥ³¥Ô¡¼¤Ç¤¢¤ë¡£
-
-.I info
-°ú¤­¿ô¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê·¿¤Î¹½Â¤ÂΤǤ¢¤ë¡£
+.SH 説明
+\fBdl_iterate_phdr\fP()  関数を使うと、アプリケーションは実行時に どの共有オブジェクトをロードしたかを見つけることができる。
+
+\fBdl_iterate_phdr\fP()  関数はアプリケーションの共有オブジェクトのリストを辿り、 各オブジェクトに対して関数 \fIcallback\fP
+を 1 回ずつ呼び出す。 これは全ての共有オブジェクトが処理されるか、 \fIcallback\fP が 0 以外の値を返すまで行われる。
+
+各々の \fIcallback\fP 呼び出しは 3 つの引き数を受け取る: \fIinfo\fP は共有オブジェクトの情報を保持する構造体へのポインターである。
+\fIsize\fP は \fIinfo\fP で指される構造体のサイズである。 \fIdata\fP は呼び出し元プログラムから
+\fBdl_iterate_phdr\fP()  の呼び出しの (同じく \fIdata\fP という名前の) 第 2 引き数として渡される値のコピーである。
+
+\fIinfo\fP 引き数は、以下のような型の構造体である。
 
 .in +4n
 .nf
 struct dl_phdr_info {
-    ElfW(Addr)        dlpi_addr;  /* ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹ */
-    const char       *dlpi_name;  /* (null Ê¸»ú¤Ç½ªÃ¼¤µ¤ì¤¿)
-                                     ¥ª¥Ö¥¸¥§¥¯¥È̾ */
-    const ElfW(Phdr) *dlpi_phdr;  /* ¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î
-                                     ELF ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤Î
-                                     ÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿ */
-    ElfW(Half)        dlpi_phnum; /* \fIdlpi_phdr\fP ¤Î¥¢¥¤¥Æ¥à¿ô */
+    ElfW(Addr)        dlpi_addr;  /* ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81®ã\83\99ã\83¼ã\82¹ã\82¢ã\83\89ã\83¬ã\82¹ */
+    const char       *dlpi_name;  /* (ヌル文字で終端された)
+                                     オブジェクト名 */
+    const ElfW(Phdr) *dlpi_phdr;  /* このオブジェクトの
+                                     ELF プログラムヘッダーの
+                                     配列へのポインター */
+    ElfW(Half)        dlpi_phnum; /* \fIdlpi_phdr\fP のアイテム数 */
 };
 .fi
 .in
 
-.RI ( ElfW ()
-¥Þ¥¯¥íÄêµÁ¤Ï°ú¤­¿ô¤ò¥Ï¡¼¥É¥¦¥§¥¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ËŬ¤·¤¿
-ELF ¥Ç¡¼¥¿·¿¤Î̾Á°¤ËÊÑ´¹¤¹¤ë¡£
-¤¿¤È¤¨¤Ð¡¢32 ¥Ó¥Ã¥È¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï
-ElfW(Addr) ¤Ï¥Ç¡¼¥¿·¿Ì¾ Elf32_Addr ¤òÀ¸À®¤¹¤ë¡£
-¤³¤ì¤é¤Î·¿¤Ë¤Ä¤¤¤Æ¤Î¹¹¤Ë¾ÜºÙ¤Ê¾ðÊó¤Ï¡¢¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë
-.IR <elf.h> " ¤È " <link.h>
-¤Ë¤¢¤ë¡£
-
-.I dlpi_addr
-¥Õ¥£¡¼¥ë¥É¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ù¡¼¥¹¥¢¥É¥ì¥¹
-(¤Ä¤Þ¤ê¡¢¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î²¾ÁÛ¥á¥â¥ê¥¢¥É¥ì¥¹¤È¡¢
-¥Õ¥¡¥¤¥ë (¤³¤Î¥Õ¥¡¥¤¥ë¤«¤é¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤¬¥í¡¼¥É¤µ¤ì¤ë) ¤Ë¤ª¤±¤ë
-¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ª¥Õ¥»¥Ã¥È¤È¤Îº¹Ê¬) ¤òɽ¤¹¡£
-.I dlpi_name
-¤Ï null Ê¸»ú¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤Ç¤¢¤ê¡¢
-¤³¤Î¥Ñ¥¹Ì¾¤Î¥Õ¥¡¥¤¥ë¤«¤é¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤¬¥í¡¼¥É¤µ¤ì¤ë¡£
-
-.I dlpi_phdr
-¤È
-.I dlpi_phnum
-¥Õ¥£¡¼¥ë¥É¤Î°ÕÌ£¤òÍý²ò¤¹¤ë¤Ë¤Ï¡¢
-ELF ¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤¬´ö¤Ä¤«¤Î¥»¥°¥á¥ó¥È¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¤³¤È¤È¡¢
-³Æ¥»¥°¥á¥ó¥È¤¬¤½¤ì¤ËÂбþ¤¹¤ë¥×¥í¥°¥é¥à¥Ø¥Ã¥À
-(¤½¤Î¥»¥°¥á¥ó¥È¤òÀâÌÀ¤¹¤ë) ¤ò»ý¤Ã¤Æ¤¤¤ë¤³¤È¤òÃΤäƤ¤¤ëɬÍפ¬¤¢¤ë¡£
-.I dlpi_phdr
-¥Õ¥£¡¼¥ë¥É¤Ï¡¢¤³¤Î¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤ÎÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¡£
-.I dlpi_phnum
-¤Ï¡¢¤³¤ÎÇÛÎó¤Î¥µ¥¤¥º¤òɽ¤¹¡£
-
-¤³¤ì¤é¤Î¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤Ï°Ê²¼¤Î¤è¤¦¤Ê·Á¼°¤Î¹½Â¤ÂΤǤ¢¤ë:
+(\fIElfW\fP()  マクロ定義は引き数をハードウェアアーキテクチャーに適した ELF データ型の名前に変換する。 たとえば、32
+ビットプラットフォームでは ElfW(Addr) はデータ型名 Elf32_Addr を生成する。
+これらの型についての更に詳細な情報は、ヘッダーファイル \fI<elf.h>\fP と \fI<link.h>\fP にある。
+
+\fIdlpi_addr\fP フィールドは共有オブジェクトのベースアドレス (つまり、共有オブジェクトの仮想メモリーアドレスと、 ファイル
+(このファイルから共有オブジェクトがロードされる) における 共有オブジェクトのオフセットとの差分) を表す。 \fIdlpi_name\fP
+はヌル文字で終端された文字列であり、 このパス名のファイルから共有オブジェクトがロードされる。
+
+\fIdlpi_phdr\fP と \fIdlpi_phnum\fP フィールドの意味を理解するには、 ELF
+共有オブジェクトが幾つかのセグメントから構成されていることと、 各セグメントがそれに対応するプログラムヘッダー (そのセグメントを説明する)
+を持っていることを知っている必要がある。 \fIdlpi_phdr\fP フィールドは、この共有オブジェクトのプログラムヘッダーの配列へのポインターである。
+\fIdlpi_phnum\fP は、この配列のサイズを表す。
+
+これらのプログラムヘッダーは以下のような形式の構造体である:
 .in +4n
 .nf
 
 typedef struct
 {
-    Elf32_Word  p_type;    /* ¥»¥°¥á¥ó¥È¤Î·¿ */
-    Elf32_Off   p_offset;  /* ¥»¥°¥á¥ó¥È¤Î¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È */
-    Elf32_Addr  p_vaddr;   /* ¥»¥°¥á¥ó¥È¤Î²¾ÁÛ¥¢¥É¥ì¥¹ */
-    Elf32_Addr  p_paddr;   /* ¥»¥°¥á¥ó¥È¤ÎʪÍý¥¢¥É¥ì¥¹ */
-    Elf32_Word  p_filesz;  /* ¥Õ¥¡¥¤¥ë¤Ë¤ª¤±¤ë¥»¥°¥á¥ó¥È¥µ¥¤¥º */
-    Elf32_Word  p_memsz;   /* ¥á¥â¥ê¤Ë¤ª¤±¤ë¥»¥°¥á¥ó¥È¥µ¥¤¥º */
-    Elf32_Word  p_flags;   /* ¥»¥°¥á¥ó¥È¥Õ¥é¥° */
-    Elf32_Word  p_align;   /* ¥»¥°¥á¥ó¥È¤ÎÇÛÃÖ (alignment) */
+    Elf32_Word  p_type;    /* セグメントの型 */
+    Elf32_Off   p_offset;  /* セグメントのファイルオフセット */
+    Elf32_Addr  p_vaddr;   /* ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®ä»®æ\83³ã\82¢ã\83\89ã\83¬ã\82¹ */
+    Elf32_Addr  p_paddr;   /* ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\81®ç\89©ç\90\86ã\82¢ã\83\89ã\83¬ã\82¹ */
+    Elf32_Word  p_filesz;  /* ã\83\95ã\82¡ã\82¤ã\83«ã\81«ã\81\8aã\81\91ã\82\8bã\82»ã\82°ã\83¡ã\83³ã\83\88ã\82µã\82¤ã\82º */
+    Elf32_Word  p_memsz;   /* ã\83¡ã\83¢ã\83ªã\83¼ã\81«ã\81\8aã\81\91ã\82\8bã\82»ã\82°ã\83¡ã\83³ã\83\88ã\82µã\82¤ã\82º */
+    Elf32_Word  p_flags;   /* ã\82»ã\82°ã\83¡ã\83³ã\83\88ã\83\95ã\83©ã\82° */
+    Elf32_Word  p_align;   /* セグメントの配置 (alignment) */
 } Elf32_Phdr;
 .fi
 .in
 
-ÆÃÄê¤Î¥×¥í¥°¥é¥à¥Ø¥Ã¥À
-.I x
-¤Î²¾ÁÛ¥á¥â¥ê¤Ë¤ª¤±¤ë°ÌÃ֤ϡ¢°Ê²¼¤Î¼°¤Ç·×»»¤Ç¤­¤ëÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È:
+特定のプログラムヘッダー \fIx\fP の仮想メモリーにおける位置は、以下の式で計算できる点に注意すること:
 
 .nf
   addr == info\->dlpi_addr + info\->dlpi_phdr[x].p_vaddr;
 .fi
-.SH ÊÖ¤êÃÍ
-.BR dl_iterate_phdr ()
-´Ø¿ô¤ÏºÇ¸å¤Î
-.I callback
-¤Î¸Æ¤Ó½Ð¤·¤ÇÊÖ¤µ¤ì¤¿ÃͤòÊÖ¤¹¡£
-.SH ¥Ð¡¼¥¸¥ç¥ó
-.BR dl_iterate_phdr ()
-¤Ï glibc ¤Î¥Ð¡¼¥¸¥ç¥ó 2.2.4 °Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£
-.SH ½àµò
-.BR dl_iterate_phdr ()
-´Ø¿ô¤Ï Linux ¸ÇÍ­¤Ç¤¢¤ê¡¢°Ü¿¢¤ò¹Í¤¨¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤ÏÈò¤±¤ë¤Ù¤­¤Ç¤¢¤ë¡£
-.SH Îã
-°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤¬¥í¡¼¥É¤µ¤ì¤¿
-¥Ñ¥¹Ì¾¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë¡£
-³Æ¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¡¢¤³¤Î¥×¥í¥°¥é¥à¤Ï
-¥ª¥Ö¥¸¥§¥¯¥È¤Î ELF ¥»¥°¥á¥ó¥È¤¬¥í¡¼¥É¤µ¤ì¤¿
-²¾ÁÛ¥¢¥É¥ì¥¹¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë¡£
+.SH 返り値
+\fBdl_iterate_phdr\fP()  関数は最後の \fIcallback\fP の呼び出しで返された値を返す。
+.SH バージョン
+\fBdl_iterate_phdr\fP()  は glibc のバージョン 2.2.4 以降でサポートされている。
+.SH 準拠
+\fBdl_iterate_phdr\fP()  関数は Linux 固有であり、移植を考えたアプリケーションでは避けるべきである。
+.SH 例
+以下のプログラムは、共有オブジェクトがロードされた パス名の一覧を表示する。 各共有オブジェクトについて、このプログラムは オブジェクトの ELF
+セグメントがロードされた 仮想アドレスの一覧を表示する。
 
 .nf
 #define _GNU_SOURCE
@@ -171,11 +129,11 @@ callback(struct dl_phdr_info *info, size_t size, void *data)
 {
     int j;
 
-    printf("name=%s (%d segments)\\n", info\->dlpi_name,
+    printf("name=%s (%d segments)\en", info\->dlpi_name,
         info\->dlpi_phnum);
 
     for (j = 0; j < info\->dlpi_phnum; j++)
-         printf("\\t\\t header %2d: address=%10p\\n", j,
+         printf("\et\et header %2d: address=%10p\en", j,
              (void *) (info\->dlpi_addr + info\->dlpi_phdr[j].p_vaddr));
     return 0;
 }
@@ -188,12 +146,12 @@ main(int argc, char *argv[])
     exit(EXIT_SUCCESS);
 }
 .fi
-.SH ´ØÏ¢¹àÌÜ
-.BR ldd (1),
-.BR objdump (1),
-.BR readelf (1),
-.BR dlopen (3),
-.BR elf (5),
-.BR ld.so (8),
-¥ª¥ó¥é¥¤¥ó¤Î¤¤¤í¤¤¤í¤Ê¾ì½ê¤ÇÆþ¼ê¤Ç¤­¤ë
-.I "Executable and Linking Format Specification"
+.SH 関連項目
+\fBldd\fP(1), \fBobjdump\fP(1), \fBreadelf\fP(1), \fBdlopen\fP(3), \fBelf\fP(5),
+\fBld.so\fP(8)
+
+オンラインのいろいろな場所で入手できる \fIExecutable and Linking Format Specification\fP
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。