\input texinfo       @c                    -*- Texinfo -*-
@setfilename binutils-ja.info
@include config-ja.texi

@c @documentlanguage ja

@ifinfo
@format
START-INFO-DIR-ENTRY
* Binutils(ja): (binutils-ja).           The GNU binary utilities.
* ar(ja): (binutils-ja)ar.               Create, modify, and extract from archives
* nm(ja): (binutils-ja)nm.               List symbols from object files
* objcopy(ja): (binutils-ja)objcopy.     Copy and translate object files
* objdump(ja): (binutils-ja)objdump.     Display information from object files
* ranlib(ja): (binutils-ja)ranlib.       Generate index to archive contents
* readelf(ja): (binutils-ja)readelf.     Display the contents of ELF format files.
* size(ja): (binutils-ja)size.           List section sizes and total size
* strings(ja): (binutils-ja)strings.     List printable strings from files
* strip(ja): (binutils-ja)strip.         Discard symbols
* c++filt(ja): (binutils-ja)c++filt.     Filter to demangle encoded C++ symbols
* cxxfilt(ja): (binutils-ja)c++filt.     MS-DOS name for c++filt
* addr2line(ja): (binutils-ja)addr2line. Convert addresses to file and line
* nlmconv(ja): (binutils-ja)nlmconv.     Converts object code into an NLM
* windres(ja): (binutils-ja)windres.     Manipulate Windows resources
* dlltool(ja): (binutils-ja)dlltool.     Create files needed to build and use DLLs
END-INFO-DIR-ENTRY
@end format
@end ifinfo

@ifinfo
Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.

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.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries a copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.
@end ifinfo

@synindex ky cp
@c
@c This file documents the GNU binary utilities "ar", "ld", "objcopy",
@c  "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib".
@c
@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
@c 
@c This text may be freely distributed under the terms of the GNU
@c General Public License.
@c

@c @setchapternewpage odd
@settitle @sc{gnu} Binary Utilities
@titlepage
@finalout
@title The @sc{gnu} Binary Utilities
@subtitle Version @value{VERSION}
@sp 1
@subtitle May 1993
@author Roland H. Pesch
@author Jeffrey M. Osier
@author Cygnus Support
@c 翻訳 西尾 太
@page

@tex
{\parskip=0pt \hfill Cygnus Support\par \hfill
\TeX{}info \texinfoversion\par }
@end tex

@vskip 0pt plus 1filll
Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.

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.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.
@end titlepage

@node Top
@top はじめに

@cindex version
この短いマニュアルは，@sc{gnu}バイナリユーティリティ(全体でバージョン
@value{VERSION})に対する予備的な文章を含みます．

@iftex
@table @code
@item ar
アーカイバの作成，編集，そしてそれからの抽出．

@item nm
オブジェクトファイルからシンボルをリストアップ．

@item objcopy
オブジェクトファイルのコピーと変換．

@item objdump
オブジェクトファイルから情報を表示．

@item ranlib
アーカイブの内容に索引を生成．

@item readelf
ELFフォーマットファイルの内容を表示．

@item size
ファイルのセクションの大きさと全体の大きさをリストアップ．

@item strings
ファイルから，出力可能な文字列をリストアップ．

@item strip
シンボルの削除．

@item c++filt
符号化されたC++シンボルをdemangleする(MS-DOSでは，このプログラムは
@code{cxxfilt}と命名されている)．

@item addr2line
アドレスをファイル名と行番号に変換．

@item nlmconv
オブジェクトコードをNetware Loadable Moduleに変換．

@item windres
Windowsリソースを操作．

@item dlltool
ダイナミックリンクライブラリを構築し使用するために必要なファイルを作成．
@end table
@end iftex

@menu
* ar::                          Create, modify, and extract from archives
* nm::                          List symbols from object files
* objcopy::			Copy and translate object files
* objdump::                     Display information from object files
* ranlib::                      Generate index to archive contents
* readelf::			Display the contents of ELF format files.
* size::                        List section sizes and total size
* strings::                     List printable strings from files
* strip::                       Discard symbols
* c++filt::			Filter to demangle encoded C++ symbols
* cxxfilt: c++filt.             MS-DOS name for c++filt
* addr2line::			Convert addresses to file and line
* nlmconv::                     Converts object code into an NLM
* windres::			Manipulate Windows resources
* dlltool::			Create files needed to build and use DLLs
* Selecting The Target System:: How these utilities determine the target.
* Reporting Bugs::              Reporting Bugs
* Index::                       Index
@end menu

@node ar
@chapter ar

@kindex ar
@cindex archives
@cindex collections of files
@smallexample
ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
ar -M [ <mri-script ]
@end smallexample

@sc{gnu} @code{ar}は，アーカイブの作成，変更，そして，それからの抽出を行
います．@dfn{アーカイブ}とは，(アーカイブの@dfn{メンバー}と呼ばれる)元と
なる個々のファイルを取り出すことを可能にする構造で，他のファイルの集合を
保持している単一のファイルです．

元のファイルの内容，モード(許可)，タイムスタンプ，所有者，そしてグループ
は，アーカイブに保存されていて，抽出時に復元可能です．

@cindex name length
@sc{gnu} @code{ar}は，あらゆる長さのメンバー名のアーカイブを管理可能です．
しかし，@code{ar}がシステムでコンフィグレーションされた方法に依存し，他
のツールで管理されるアーカイブのフォーマットの互換性のため，メンバー名の
長さは制限される可能性があります．それが存在する場合，制限は15文字(a.out
に関連するフォーマットの典型)や16文字(coffに関連するフォーマットの典型)
のことが多いでしょう・

@cindex libraries
この種のアーカイブは，一般に必要なサブルーチンを保持する@dfn{ライブラリ} 
として最もよく使用されるので，@code{ar}は，バイナリユーティリティと考え
られます．

@cindex symbol index
@code{ar}は，修飾子@samp{s}を指定したとき，アーカイブの再配置可能なオブ
ジェクトモジュールで定義されているシンボルに索引を作成します．一度作成さ
れると，この索引は，(@samp{q}更新コマンドのための保存で)@code{ar}がその
内容を変更したときはいつも，アーカイブ内で更新します．そのような索引をも
つアーカイブは，ライブラリとのリンク速度を上げ，ライブラリのルーチンがアー
カイブ内の位置に関わらず，お互いの呼び出しを可能にします．

この索引表をリストアップするため，@samp{nm -s}や@samp{nm --print-armap} 
が使用可能です．アーカイブに表がない場合，@code{ranlib}と呼ばれる
@code{ar}の別の形式が，表を加えるために使用可能です．

@cindex compatibility, @code{ar}
@cindex @code{ar} compatibility
@sc{gnu} @code{ar}は，2つの異なる機能と互換性があるように設計されていま
す．Unixシステム上の異なる形態の@code{ar}のように，コマンドラインオプショ
ンを使用してその作業を制御可能です．また，単一のコマンドラインオプション
@samp{-M}を指定した場合，MRI ``librarian''プログラムのように，標準入力を
通じて供給されるスクリプトを用いて，それを制御可能です．

@menu
* ar cmdline::                  Controlling @code{ar} on the command line
* ar scripts::                  Controlling @code{ar} with a script
@end menu

@page
@node ar cmdline
@section コマンドラインでの@code{ar}の制御

@smallexample
ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
@end smallexample

@cindex Unix compatibility, @code{ar}
Unix形式で@code{ar}を使用するとき，@code{ar}は少なくとも2つの引数を実行
時に要求します．@emph{operation}を指定するキー文字(@emph{modifiers}を指
定するその他のキー文字がオプションで付きます)と，動作対象のアーカイブ名
です．

ほとんどの処理は，それ以外に@var{member}引数を受け入れ，それは処理の対象
となる特定のファイル名を指定します．

@sc{gnu} @code{ar}では，最初のコマンドライン引数内で，処理コード@var{p} 
と修飾フラグ@var{mod}を，あらゆる順序で混合させることが可能です．

希望があれば，最初のコマンドライン引数をダッシュで始めることも可能です．

@cindex operations on archive
@var{p}キー文字は，実行する処理を指定します．それは以下のいずれでも可能
ですが，その中の1つだけを指定する必要があります．

@table @code
@item d
@cindex deleting from archive
アーカイブからモジュールを@emph{削除}します．削除するモジュール名は，
@var{member}@dots{}として指定してください．削除するファイルを指定してい
ない場合，アーカイブはそのままです．

@samp{v}修飾子を指定した場合，@code{ar}は削除するそれぞれのモジュールを
リストアップします．

@item m
@cindex moving in archive
アーカイブ内でメンバーを@emph{移動}するためにこの処理を使用してください．

シンボルが1つ以上のメンバーで定義されている場合，アーカイブ内のメンバー
の順序で，プログラムがライブラリを使用してリンクされる方法に差異が発生す
るはずです．

@code{m}とともに修飾子を使用しない場合，@var{member}引数で指名したあらゆ
るメンバーは，アーカイブの@emph{終り}に移動されます．そうする代わりに，
指定した位置にそれらを移動するために，@samp{a}，@samp{b}，または@samp{i} 
修飾子が使用可能です．

@item p
@cindex printing from archive
アーカイブの指定されたメンバーを標準出力ファイルに@emph{出力}します．
@samp{v}修飾子が指定された場合，その内容のコピーの前にメンバー名を標準出
力に表示します．

@var{member}引数を指定していない場合，アーカイブのすべてのファイルが出力
されます．

@item q
@cindex quick append to archive
@emph{すばやく追加}します．歴史的に，ファイル@var{member}@dots{}を
@var{archive}の終りに，置換についての調査をせずに加えます．

修飾子@samp{a}，@samp{b}，そして@samp{i}は，このオプションに効果は
@emph{ありません}．新しいメンバーは常にアーカイブの終りに位置します．

修飾子@samp{v}で，@code{ar}は追加されるそれぞれのファイルをリストアップ
します．

このオペレーションの要点は速度なので，アーカイブのシンボル表の索引が存在
している場合でも更新されません．シンボル表の索引を更新するために，
@samp{ar s}または@code{ranlib}を明示的に使用することが可能です．

しかし，異なるシステムによっては，高速追加が索引を再構築するを考えるもの
が多すぎるので，@sc{gnu} @code{ar}は，@code{q}を@code{r}の同義語として実
装されています．

@item r
@cindex replacement in archive
ファイル@var{member}@dots{}を@var{archive}に挿入します(@emph{置換}を用い
ます)．この処理は，加えられるものと名前が一致した場合，既存のメンバーが
削除される点で，@samp{q}と異なります．

@var{member}@dots{}で指名されたファイルが1つでも存在しない場合，
@code{ar}はエラーメッセージを表示し，名前がアーカイブと一致する既存のメ
ンバーはそのままになります．

デフォルトで，新しいメンバーはファイルの終りに追加されます．しかし，既存
のメンバーとの相対位置を要求するため，修飾子@samp{a}，@samp{b}，または
@samp{i}の1つを使用可能です．

この処理での修飾子@samp{v}の使用は，挿入されたそれぞれのファイルを出力の
1 行に書き出し，ファイルが追加された(古いメンバーが削除されていない)のか，
置換されたのかを示す文字@samp{a}または@samp{r}のどちらかを追加します．

@item t
@cindex contents of archive
@var{archive}の内容をリストしている，または，アーカイブに存在する
@var{member}@dots{}にリストアップされているファイルの@emph{表}を表示しま
す．通常，メンバー名のみ見えます．モード(許可)，タイムスタンプ，所有者，
そして大きさも見たい場合，@samp{v}修飾子も指定することで要求可能です．

@var{member}を指定しない場合は，アーカイブ内のすべてのファイルがリストアッ
プされます．

@cindex repeated names in archive
@cindex name duplication in archive
同じ名前の(@samp{fie}という名の)ファイルが，(@samp{b.a}をいう名の)アーカ
イブに1つ以上ある場合，@samp{ar t b.a fie}は最初のインスタンスのみリスト
アップします．すべてを見るために，完全なリストを請求する必要があります---
この例では@samp{ar t b.a}です．
@c WRS only; per Gumby, this is implementation-dependent, and in a more
@c recent case in fact works the other way.

@item x
@cindex extract from archive
(@var{member}という名の)メンバーをアーカイブから@emph{抽出}します．
@code{ar}が抽出しているそれぞれの名前をリストアップするように，この処理
で@samp{v}修飾子を使用することが可能です．

@var{member}を指定しない場合，アーカイブのすべてのファイルが抽出されます．
@end table

処理の動作の変更を指定するため，いくつかの修飾子(@var{mod})を@var{p}キー
文字の直後に続けることが可能です．

@table @code
@item a
@cindex relative placement in archive
新しいファイルを，アーカイブの既存のメンバーの@emph{後}に追加します．修
飾子@samp{a}を使用した場合，@var{archive}指定の前に，既存のアーカイブメ
ンバー名を@var{relpos}引数におく必要があります．

@item b
新しいファイルをアーカイブの既存のメンバーの@emph{前}に加えます．修飾子
@samp{b}を使用した場合，@var{archive}指定の前に，既存のアーカイブメンバー
名を@var{relpos}引数におく必要があります．(@samp{i}と同じです)．

@item c
@cindex creating archives
アーカイブを@emph{作成}します．更新の要求をしたとき，指定された
@var{archive}は，存在する場合でも常に作成されます．しかし，この修飾子を
使用して，作成することを期待するということを前もって指定しない場合，警告
が生じます．

@item f
アーカイブで名前を切り詰めます．@sc{gnu} @code{ar}は，通常あらゆる長さの
ファイル名を許可します．これは，いくつかのシステムのネイティブ@code{ar} 
プログラムと互換性のないアーカイブを作成させます．これが懸念される場合，
アーカイブに配置するときファイル名を切り詰めるために，@samp{f}修飾子を使
用することが可能です．

@item i
新しいファイルをアーカイブの既存のメンバーの@emph{前に}挿入します．修飾
子@samp{i}を使用する場合，既存のアーカイブメンバの名前は，@var{relpos}引
数として，@var{archive}指定の前におく必要があります．(@samp{b}と同じです)．

@item l
この修飾子は受け入れられますが，使用されません．
@c whaffor ar l modifier??? presumably compat; with
@c what???---doc@@cygnus.com, 25jan91 

@item N
@var{count}パラメータを使用します．これは，同じ名前のアーカイブに複数の
項目がある場合使用されます．アーカイブから与えられた名前の，インスタンス
の@var{count}を抽出または削除します．

@item o
@cindex dates in archive
メンバーが既存のとき，その@emph{オリジナルの}日付を保持します．この修飾
子を指定しない場合，アーカイブから抽出されるファイルは，抽出した時間でタ
イムスタンプがつきます．

@item P
アーカイブの名前の一致にフルパス名を使用します．@sc{gnu} @code{ar}はフル
パス名を持つアーカイブ(そのようなアーカイブは，POSIXで問題ない)を作成で
きませんが，他のアーカイブを作成するものは可能です．このオプションで，
@sc{gnu} @code{ar}は完全なパス名を使用しているファイル名に一致し，それで，
他のツールで作成されたアーカイブから単一のファイルを抽出するとき便利にな
ります．

@item s
@cindex writing archive index
オブジェクトファイルの索引をアーカイブに書き出したり，他の変更がアーカイ
ブに対してなされない場合でも，既存のものを更新したりします．この修飾子フ
ラグは，あらゆるオプションとともに，または単独に使用可能です．アーカイブ
で@samp{ar s}を実行することは，@samp{ranlib}の実行と等価です．

@item S
@cindex not writing archive index
アーカイブシンボル表を生成しません．これで何段階か使用する大きなライブラ
リの構築を高速にできます．結果として出力されるアーカイブは，リンカで使用
できません．シンボル表を構築するために，@samp{ar}の最後の実行で@samp{S} 
修飾子を省略したり，アーカイブで@samp{ranlib}を実行する必要があります．

@item u
@cindex updating an archive
通常，@samp{ar r}@dots{}でリストアップされているすべてのファイルをアーカ
イブに挿入します．同じ名前の既存のメンバーより新しいリストアップしたファ
イル@emph{のみ}挿入したい場合，この修飾子を使用してください．@samp{u}修
飾子は，処理@samp{r}(置換)に対してのみ可能です．特に，タイムスタンプの調
査が処理@samp{q}での速度の利点を損なうため，@samp{qu}と組み合わせること
はできません．

@item v
この修飾子は，処理の@emph{冗長}バージョンを要求します．多くのオペレーショ
ンは，修飾子@samp{v}が追加されているとき，処理しているファイル名のような
追加の情報を表示します．

@item V
この修飾子は@code{ar}のバージョンナンバーを表示します．
@end table

@node ar scripts
@section スクリプトを用いた@code{ar}の制御

@smallexample
ar -M [ <@var{script} ]
@end smallexample

@cindex MRI compatibility, @code{ar}
@cindex scripts, @code{ar}
単一のコマンドラインオプション@samp{-M}を@code{ar}で用いた場合，その処理
を基礎となるコマンド言語でその処理を制御することが可能です．@code{ar}の
この形式は，標準入力が端末から直接来ている場合，対話的に処理します．対話
的に使用している間，@code{ar}は入力を促し(プロンプトは@samp{AR >})，エラー
後も実行を続けます．標準入力をスクリプトファイルにリダイレクトしている場
合，プロンプトは発行されず，@code{ar}はあらゆるエラーが発生すると(ゼロで
ない終了コードで)実行を終了します．

@code{ar}コマンド言語は，コマンドラインオプションと等価に設計されて
@emph{いません}．実際，それはアーカイブ上の制御が幾分少なくなっています．
コマンド言語の目的は，MRI ``librarian''プログラムに対して書かれたスクリ
プトを既に所有している開発者が，@sc{gnu} @code{ar}の変換をより簡単にする
ことです．

@code{ar}コマンド言語の構文は簡単です．

@itemize @bullet
@item
コマンドは大文字小文字を容認します．例えば，@code{LIST}は@code{list}と同
じです．以下の記述では，明確さのためにコマンドは大文字で表示されます．

@item
単一のコマンドは，個別の行に配置することが可能です．それは，行の最初の単
語となります．

@item
空行が可能で，それは効果がありません．

@item
コメントが可能です．文字@samp{*}または@samp{;}以降のテキストは無視されま
す．

@item
@code{ar}コマンドの引数の一部として名前のリストを使用するときは，カンマ
または空白で，それぞれの名前を分けることが可能です．明確さのため，以下の
説明はカンマで表現されます．

@item
行の連結文字として@samp{+}が使用されます．@samp{+}が行末に現れた場合，そ
れに続く行のテキストは，現在のコマンドの一部と考えられます．
@end itemize

ここに，@code{ar}で使用可能な，または，@code{ar}を対話的に使用していると
きのコマンドがあります．そのうちの3つは，特別な意味を持ちます．

@code{OPEN}や@code{CREATE}は@dfn{現在のアーカイバ}を指定し，それは，他の
コマンドのほとんどで要求される一時ファイルになります．

@code{SAVE}は，スクリプトでこれまでに指定された変更をコミットします．
@code{SAVE}の前のコマンドは，現在のアーカイブの一時的なコピーに対しての
み効果があります．

@table @code
@item ADDLIB @var{archive} 
@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
@var{archive}のすべての内容(または，指定されている場合，アーカイブのそれ
ぞれの指名された@var{module})を，現在のアーカイブに追加します．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
@c FIXME! w/Replacement??  If so, like "ar r @var{archive} @var{names}"
@c        else like "ar q..."
それぞれの指名された@var{member}を，モジュールとして，現在のアーカイブに
追加します．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@item CLEAR
現在のアーカイブの内容を削除し，最後に@code{SAVE}されてからのあらゆる処
理の効果を無効にします．現在のアーカイブが指定されていない場合でも実行可
能です(効果はありません)．

@item CREATE @var{archive}
アーカイブを作成し，それを現在のアーカイブにします(その他，多くのコマン
ドに対し必要です)．新しいアーカイブは，一時的な名前で作成されます．それ
は，@code{SAVE}を使用するまで，@var{archive}として実際に保存されません．
既存のアーカイブに優先可能です．同様に，指名されている既存の
@var{archive}ファイルの内容は，@code{SAVE}まで破壊されません．

@item DELETE @var{module}, @var{module}, @dots{} @var{module}
それぞれのリストアップされている@var{module}を，現在のアーカイブから削除
します．@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}と同
じです．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
@itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
それぞれ指名された@var{archive}に存在する@var{module}をリストアップしま
す．分離されているコマンド@code{VERBOSE}は，出力形式を指定します．冗長
出力がオフのとき，出力は@samp{ar -t @var{archive} @var{module}@dots{}}の
ようになります．冗長出力がオンのとき，リストは@samp{ar -tv @var{archive}
@var{module}@dots{}}のようになります．

出力は通常，標準出力に流れていきます．しかし，@var{outputfile}を最後の引
数として指定した場合，@code{ar}はそのファイルに出力を変更します．

@item END
@code{ar}を，成功に完了したことを示す終了コード@code{0}で終了します．こ
のコマンドは出力ファイルを保存しません．最後の@code{SAVE}コマンド以降に
現在のアーカイブを変更した場合．これらの変更は失われます．

@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
それぞれ指名された@var{module}を，現在のアーカイブから抽出し，それらを現
在のディレクトリに個別のファイルとして書き出します．@samp{ar -x
@var{archive} @var{module}@dots{}}と同じです．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@ignore
@c FIXME Tokens but no commands???
@item FULLDIR

@item HELP
@end ignore

@item LIST
現在のアーカイブのすべての内容を，@code{VERBOSE}の状態に関わらず，
``verbose''形式で表示します．効果は@samp{ar tv @var{archive}}に似ていま
す．(この単独コマンドは@sc{gnu} @code{ar}拡張で，MRI互換に提供されている
ものではありません)．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@item OPEN @var{archive}
現在のアーカイブとして使用するために既存のアーカイブを開きます(他の多く
のコマンドに対し必要です)．それに続くコマンドの結果からのあらゆる変更は，
次に@code{SAVE}が使用されるまで，@var{archive}に対し実際に効果はありませ
ん．

@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
現在のアーカイブで，それぞれの(@code{REPLACE}の引数で指名された)既存の
@var{module}を，現在のワーキングディレクトリのファイルから置換します．エ
ラー無くこのコマンドを実行するために，ファイルと現在のアーカイブのモジュー
ルの両方が存在する必要があります．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．

@item VERBOSE
@code{DIRECTORY}からの出力を管理している内部フラグを切り替えます．フラグ
がオンのとき，@code{DIRECTORY}出力は，@samp{ar -tv }@dots{}からの出力に
一致します．

@item SAVE
現在のアーカイブへの変更をコミットし，それを，最後の@code{CREATE}や
@code{OPEN}コマンドで指定された名前のファイルに，実際に保存します．

@code{OPEN}や@code{CREATE}を前もって使用することが要求されます．
@end table


@iftex
@node ld
@chapter ld
@cindex linker
@kindex ld
@sc{gnu}リンカ@code{ld}は，現在，別のマニュアルで記述されています．
@xref{Top,, Overview,, Using LD: the @sc{gnu} linker}.
@end iftex

@node nm
@chapter nm
@cindex symbols
@kindex nm

@smallexample
nm [ -a | --debug-syms ]  [ -g | --extern-only ]
   [ -B ]  [ -C | --demangle ] [ -D | --dynamic ]
   [ -s | --print-armap ]  [ -A | -o | --print-file-name ]
   [ -n | -v | --numeric-sort ]  [ -p | --no-sort ]
   [ -r | --reverse-sort ]  [ --size-sort ] [ -u | --undefined-only ]
   [ -t @var{radix} | --radix=@var{radix} ] [ -P | --portability ]
   [ --target=@var{bfdname} ] [ -f @var{format} | --format=@var{format} ]
   [ --defined-only ] [-l | --line-numbers ]
   [ --no-demangle ] [ -V | --version ]  [ --help ]  [ @var{objfile}@dots{} ]
@end smallexample

@sc{gnu} @code{nm}は，オブジェクトファイル@var{objfile}@dots{}のシンボル
をリストアップします．オブジェクトファイルが引数として与えられていない場
合，@code{nm}は，ファイル@code{a.out}と仮定します．

それぞれのシンボルに対し，@code{nm}は以下を表示します．

@itemize @bullet
@item
シンボル値で，オプションで指定されている基数(以下を参照)，または，デフォ
ルトの16進数です．

@item
シンボル形式です．少なくとも以下の形式が使用されます．それ以外は，同様に
オブジェクトファイルの書式に依存します．小文字の場合，シンボルはローカル
です．大文字の場合，シンボルはグローバル(外部参照可能)です．

@c Some more detail on exactly what these symbol types are used for
@c would be nice.
@table @code
@item A
シンボルの値は絶対値で，更なるリンクで変更されません．

@item B
シンボルは初期化されていないデータセクションにあります(BSSとして知られて
います)．

@item C
シンボルは共通です．共通シンボルは初期化されていないデータです．リンク時，
複数の共通シンボルは，同じ名前で存在することが可能です．シンボルがどこか
で定義されている場合，共通のシンボルは未定義の参照として扱われます．共通
シンボルの詳細は，@ref{Options,,Linker options,ld.info,The GNU linker},
の@samp{--warn-common}の記述を参照してください．

@item D
シンボルは，初期化されているデータセクションにあります．

@item G
シンボルは，小さいオブジェクトに対して初期化されているデータセクションに
あります．いくつかのオブジェクトファイルの書式は，グローバルな配列に対す
るグローバルな整数型変数のような，小さなデータオブジェクトに対するより効
果的なアクセスを可能とします．

@item I
シンボルは他のシンボルへの間接参照です．これは，滅多に使用されないa.out
オブジェクトファイル形式に対するGNU拡張です．

@item N
シンボルはデバッグシンボルです．

@item R
シンボルは読み込み専用データセクションにあります．

@item S
シンボルは小さなオブジェクトに対する初期化されていないデータセクションに
あります．

@item T
シンボルはテキスト(code)セクションにあります．

@item U
シンボルは定義されていません．

@item V
シンボルは弱いオブジェクトです．定義されている弱いシンボルが，通常定義さ
れているシンボルにリンクされるとき，通常の定義されているシンボルはエラー
無く使用されます．弱い未定義のシンボルがリンクされ，シンボルが定義されて
いないとき，弱いシンボルの値はエラー無くゼロになります．

@item W
シンボルは，弱いオブジェクトシンボルとして特殊なタグを持たない弱いシンボ
ルです．定義されている弱いシンボルが，通常定義されているシンボルにリンク
されるとき，通常定義されているシンボルはエラー無く使用されます．弱い未定
義のシンボルがリンクされ，シンボルが定義されていないとき，弱いシンボルの
値はエラー無くゼロになります．

@item -
シンボルは，@code{a.out}オブジェクトファイルのスタブシンボルです．この場
合，次に出力される値は，スタブのその他のフィールド，スタブのdescフィール
ド，そして，スタブの形式になります．スタブシンボルは，デバッグ情報を保つ
ために使用されます．詳細は，@ref{Top,Stabs,Stabs Overview,stabs.info,
The ``stabs'' debug format},を参照してください．

@item ?
シンボル形式が分からない，または具体的な書式のオブジェクトファイルです．
@end table

@item
シンボル名．
@end itemize

ここで交互に表示している，オプションの長い形式と短い形式は等価です．

@table @code
@item -A
@itemx -o
@itemx --print-file-name 
@cindex input file name
@cindex file name
@cindex source file name
それぞれのシンボルに，入力ファイルを一度だけ識別できるようにするのではな
く，それが見つかる入力ファイル(またはアーカイブメンバー)の名前をそのすべ
てのシンボルの前に配置します．

@item -a
@itemx --debug-syms 
@cindex debugging symbols
すべてのシンボルで，デバッグ専用のシンボルさえ表示します．通常はリストアッ
プされません．

@item -B
@cindex @code{nm} format
@cindex @code{nm} compatibility
(MIPS @code{nm}との互換性のための)@samp{--format=bsd}と同じです．

@item -C
@itemx --demangle
@cindex demangling in nm
低レベルのシンボル名をユーザレベルの名前に復号(@dfn{demangle})します．シ
ステムが前置する，最初のあらゆるアンダースコアを削除する他，これはC++関
数名を読みやすくします．demangleの情報は，@xref{c++filt}.

@item --no-demangle
低レベルのシンボル名をdemangleしません．これはデフォルトです．

@item -D
@itemx --dynamic
@cindex dynamic symbols
通常のシンボルではなく，動的なシンボルを表示します．これは，共有ライブラ
リの特定の形式のような，動的オブジェクトに対してのみ意味があります．

@item -f @var{format}
@itemx --format=@var{format}
@cindex @code{nm} format
@cindex @code{nm} compatibility
出力書式@var{format}を使用し，それは，@code{bsd}，@code{sysv}，または
@code{posix}が可能です．デフォルトは@code{bsd}です．@var{format}の最初の
文字のみ識別されます．それは大文字または小文字が可能です．

@item -g
@itemx --extern-only 
@cindex external symbols
外部シンボルのみ表示します．

@item -l
@itemx --line-numbers
@cindex symbol line numbers
それぞれのシンボルに対し，ファイル名と行番号を見つけようとするため，デバッ
グ情報を使用します．定義済シンボルに対し，シンボルのアドレスの行番号を探
します．未定義のシンボルに対し，シンボルを参照するリロケーションエントリ
の行番号を探します．行番号の情報が見つかる場合，それを他のシンボル情報の
後に出力します．

@item -n
@itemx -v
@itemx --numeric-sort 
シンボルを，名前のアルファベット順ではなく，そのアドレスで数値的に並べ替
えます．

@item -p
@itemx --no-sort 
@cindex sorting symbols
シンボルの並べ替えを全く行いません．それらを見つかった順番で出力します．

@item -P
@itemx --portability
デフォルトの書式の代わりに，POSIX.2標準出力形式を使用します．@samp{-f
posix}と同じです．

@item -s
@itemx --print-armap
@cindex symbol index, listing
アーカイブメンバーからシンボルをリストアップするとき，索引を含めます．名
前に対する定義を含むモジュールの(@code{ar}や@code{ranlib}でアーカイブに
保存されている)マップです．

@item -r
@itemx --reverse-sort 
並べ替えの順序を(数値的またはアルファベット順によらず)逆にします．最後の
ものを最初にします．

@item --size-sort
シンボルを大きさで並べ替えます．大きさは，そのシンボル値と，次に現れるよ
り大きい値を持つシンボル値の差として計算されます．シンボル値ではなく，そ
の大きさが出力されます．

@item -t @var{radix}
@itemx --radix=@var{radix}
@var{radix}をシンボル値を出力する基数として使用します．それは，10進数の
@samp{d}，8進数の@samp{o}，または16進数の@samp{x}にする必要があります．

@item --target=@var{bfdname}
@cindex object code format
システムのデフォルト書式以外のオブジェクトコードを指定します．詳細は，
@xref{Target Selection}.

@item -u
@itemx --undefined-only 
@cindex external symbols
@cindex undefined symbols
未定義のシンボルのみ表示します(それらはそれぞれのオブジェクトファイルの
外部にあります)．

@item --defined-only
@cindex external symbols
@cindex undefined symbols
それぞれのオブジェクトファイルの定義済シンボルのみ表示します．

@item -V
@itemx --version
@code{nm}のバージョンナンバーを表示し終了します．

@item --help
@code{nm}のオプションの概要を表示し終了します．
@end table


@node objcopy
@chapter objcopy

@smallexample
objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
        [ -I @var{bfdname} | --input-target=@var{bfdname} ]
        [ -O @var{bfdname} | --output-target=@var{bfdname} ]
        [ -S | --strip-all ]  [ -g | --strip-debug ]
        [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
        [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
        [ -L @var{symbolname} | --localize-symbol=@var{symbolname} ]
        [ -W @var{symbolname} | --weaken-symbol=@var{symbolname} ]
        [ -x | --discard-all ]  [ -X | --discard-locals ]
        [ -b @var{byte} | --byte=@var{byte} ]
        [ -i @var{interleave} | --interleave=@var{interleave} ]
        [ -j @var{sectionname} | --only-section=@var{sectionname} ]
        [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
        [ -p | --preserve-dates ] [ --debugging ]
        [ --gap-fill=@var{val} ] [ --pad-to=@var{address} ]
        [ --set-start=@var{val} ] [ --adjust-start=@var{incr} ]
        [ --change-addresses=@var{incr} ]
        [ --change-section-address @var{section}@{=,+,-@}@var{val} ]
        [ --change-section-lma @var{section}@{=,+,-@}@var{val} ]
        [ --change-section-vma @var{section}@{=,+,-@}@var{val} ]
        [ --change-warnings ] [ --no-change-warnings ]
        [ --set-section-flags @var{section}=@var{flags} ]
        [ --add-section @var{sectionname}=@var{filename} ]
        [ --change-leading-char ] [ --remove-leading-char ]
        [ --redefine-sym @var{old}=@var{new} ] [ --weaken ]
        [ -v | --verbose ] [ -V | --version ]  [ --help ]
        @var{infile} [@var{outfile}]
@end smallexample

@sc{gnu} @code{objcopy}ユーティリティは，オブジェクトファイルの内容を別
のファイルにコピーします．@code{objcopy}はオブジェクトファイルの読み書き
に@sc{gnu} @sc{bfd}を使用します．それは，目的のオブジェクトファイルに，
基となるスオブジェクトファイルと異なる書式で書き出すことが可能です．
@code{objcopy}の正確な動作は，コマンドラインオプションで制御されます．

@code{objcopy}は，その変換を行うために一時ファイルを作成し，その後でそれ
を削除します．@code{objcopy}は，そのすべての変換作業で@sc{bfd}を使用しま
す．それは，@sc{bfd}で記述されているすべての書式にアクセスし，そのため，
明示的に告げること無く，ほとんどの書式を認識することが可能です．
@xref{BFD,,BFD,ld.info,Using LD}.

@code{objcopy}は，@samp{srec}出力ターゲットを使用することで，S-recordを
生成するために使用可能です(例えば，@samp{-O srec}を使用してください)．

@code{objcopy}は，@samp{binary}の出力ターゲットを使用することで，rawバイ
ナリファイルを生成するために使用可能です(例えば，@samp{-O binary}を使用
してください)．@code{objcopy}がrawバイナリファイルを生成するとき，それは
本質的に，入力オブジェクトファイルの内容のメモリダンプを生成します．すべ
てのシンボルとリロケーション情報は削除されます．メモリダンプは，出力ファ
イルにコピーされる最抵位のセクションのロードアドレスから開始します．

S-recordやrawバイナリファイルを生成するとき，デバッグ情報を含むセクショ
ンを削除するため，@samp{-S}を使用すると便利かもしれません．場合によって
は，バイナリファイルに必要のない情報を含むセクションを削除するため，
@samp{-R}が役に立つでしょう．

@table @code
@item @var{infile}
@itemx @var{outfile}
それぞれ入力と出力のファイルです．@var{outfile}を指定しない場合，
@code{objcopy}は結果的に破壊される一時ファイルを作成し，@var{infile}に名
前を変更します．

@item -I @var{bfdname}	
@itemx --input-target=@var{bfdname}
ソースファイルのオブジェクトの書式を，それを導き出すのではなく，
@var{bfdname}と考えます．詳細は，@xref{Target Selection}.

@item -O @var{bfdname}
@itemx --output-target=@var{bfdname}
出力ファイルを，オブジェクトファイルの書式@var{bfdname}を用いて書き出し
ます．詳細は，@xref{Target Selection}.

@item -F @var{bfdname}
@itemx --target=@var{bfdname}
入出力両方のファイルに対し，オブジェクトの書式として@var{bfdname}を使
用します．すなわち，単純にソースから目的物に，変換せずにデータを転送しま
す．詳細は，@xref{Target Selection}.

@item -j @var{sectionname}
@itemx --only-section=@var{sectionname}
指名されたセクションのみ，入力ファイルから出力ファイルへコピーします．こ
のオプションは，1回以上与えることが可能です．このオプションを不適切に使
用すると，出力ファイルが使用不可能になることに注意してください．

@item -R @var{sectionname}
@itemx --remove-section=@var{sectionname}
指名されている，あらゆる@var{sectionname}セクションを出力ファイルから削
除します．このオプションは，1回以上与えることが可能です．このオプション
を不適切に使用すると，出力ファイルが使用不可能になることに注意してくださ
い．

@item -S
@itemx --strip-all
リロケーションとシンボルの情報を，ソースファイルからコピーしません．

@item -g
@itemx --strip-debug
デバッグシンボルをソースファイルからコピーしません．

@item --strip-unneeded
リロケーション処理に不要な，すべてのシンボルを削除します．

@item -K @var{symbolname}
@itemx --keep-symbol=@var{symbolname}
ソースファイルからシンボル@var{symbolname}のみコピーします．このオプショ
ンは，1回以上与えることが可能です．

@item -N @var{symbolname}
@itemx --strip-symbol=@var{symbolname}
ソースファイルからシンボル@var{symbolname}をコピーしません．このオプショ
ンは，1回以上与えることが可能です．

@item -L @var{symbolname}
@itemx --localize-symbol=@var{symbolname}
外部から見えないようにするため，シンボル@var{symbolname}をファイルでロー
カルにします．このオプションは，1回以上与えることが可能です．

@item -W @var{symbolname}
@itemx --weaken-symbol=@var{symbolname}
シンボル@var{symbolname}を弱くします．このオプションは，1回以上与えるこ
とが可能です．

@item -x
@itemx --discard-all
ソースファイルからグローバルでないシンボルをコピーしません．
@c FIXME any reason to prefer "non-global" to "local" here?

@item -X
@itemx --discard-locals
コンパイラが生成したローカルなシンボルをコピーしません．(これらは通常，
@samp{L}または@samp{.}ではじまります．)

@item -b @var{byte}
@itemx --byte=@var{byte}
入力ファイルの@var{byte}バイト毎のバイトのみ保持します(ヘッダデータは影
響されません)．@var{byte}は，0から@var{interleave}-1までの範囲が可能で，
@var{interleave}は，@samp{-i}や@samp{--interleave}オプションで与えられる，
またはデフォルトの4になります．このオプションは，プログラマブル@sc{rom} 
にファイルを作成するとき便利です．それは特に，@code{srec}出力ターゲット
とともに使用されます．

@item -i @var{interleave}
@itemx --interleave=@var{interleave}
@var{interleave}バイト毎に1つのみコピーします．@var{-b}や@samp{--byte}オ
プションを用いてそのバイトを選択してください．デフォルトは4です．
@code{objcopy}は，@samp{-b}や@samp{--byte}を指定していない場合，このオプ
ションを無視します．

@item -p
@itemx --preserve-dates
出力ファイルのアクセスと編集の日付を入力ファイルと同じに設定します．

@item --debugging
可能な場合，デバッグ情報を変換します．特定のデバッグ書式のみサポートされ
ていて，そして，変換処理は時間がかかるため，これはデフォルトではありませ
ん．

@item --gap-fill @var{val}
@var{val}を用いてセクション間のギャップを補充します．このオプションはセ
クションの@emph{load address} (LMA)に適用されます．それは，低いアドレス
@footnote{訳注：原文は lower address。}でセクションの大きさを増加し，そ
して，@var{val}を用いて作成される余分な空間で補充することで動作します．

@item --pad-to @var{address}
出力ファイルをload address @var{address}までパディングします．これは，最
後のセクションの大きさを増加することで動作します．余分な空間は，
@samp{--gap-fill}で指定された値(デフォルトはゼロ)で補充されます．

@item --set-start @var{val}
新しいファイルの開始アドレスを@var{val}に設定します．すべてのオブジェク
トファイル書式が，開始アドレスの設定をサポートするわけではありません．

@item --change-start @var{incr}
@itemx --adjust-start @var{incr}
@cindex changing start address
開始アドレスを@var{incr}を加えることで変更します．すべてのオブジェクトファ
イル書式が，開始アドレスの設定をサポートするわけではありません．

@item --change-addresses @var{incr}
@itemx --adjust-vma @var{incr}
@cindex changing object addresses
開始アドレスのように，@var{incr}を加えることで，VMAとLMAアドレスを変更し
ます．オブジェクトファイルの書式によっては，セクションアドレスを任意に変
更できないものもあります．これはセクションをリロケートしないことに注意し
てください．セクションが特定のアドレスにロードされていることをプログラム
が期待し，セクションが異なるアドレスにロードされるように変更するために，
このオプションが使用された場合，プログラムは失敗するかもしれません．

@item --change-section-address @var{section}@{=,+,-@}@var{val}
@itemx --adjust-section-vma @var{section}@{=,+,-@}@var{val}
@cindex changing section address
@var{section}で指名されたVMAアドレスとLMAアドレスの両方を設定または変更
します．@samp{=}が使用された場合，セクションのアドレスは，@var{val}に設
定されます．それ以外の場合，@var{val}は，セクションアドレスに加えられる，
またはそれから引かれます．上記の@samp{--change-addresses}以下のコメント
を参照してください．入力ファイルに@var{section}が存在しない場合，
@samp{--no-change-warnings}が使用されていない限り，警告が発せられます．

@item --change-section-lma @var{section}@{=,+,-@}@var{val}
@cindex changing section LMA
指名された@var{section}のLMAアドレスを設定または変更します．LMAアドレス
は，プログラムロード時にセクションがメモリにロードされるアドレスです．通
常これはVMAと同じで，それは，プログラムの実行時のセクションのアドレスで
すが，システムによっては，特にプログラムがROMに保存されるものでは，2つが
異なる可能性があります．@samp{=}が使用されている場合，セクションのアドレ
スは，@var{val}に設定されます．それ以外の場合，@var{val}はセクションアド
レスに加えられる，またはそれから引かれます．上記の
@samp{--change-addresses}以下のコメントを参照してください．@var{section}
が入力ファイルに存在しない場合，@samp{--no-change-warnings}が使用されて
いない限り，警告が発せられます．

@item --change-section-vma @var{section}@{=,+,-@}@var{val}
@cindex changing section VMA
指名された@var{section}のVMAアドレスを設定または変更します．VMAアドレス
は，プログラムの実行を開始したときにセクションが位置するアドレスです．通
常これはLMAと同じで，それは，セクションがメモリにロードされるアドレスで
すが，システムによっては，特にプログラムがROMに保存されるものでは，2つが
異なる可能性があります．@samp{=}が使用されている場合，セクションのアドレ
スは，@var{val}に設定されます．それ以外の場合，@var{val}はセクションアド
レスに加えられる，またはそれから引かれます．上記の
@samp{--change-addresses}以下のコメントを参照してください．@var{section}
が入力ファイルに存在しない場合，@samp{--no-change-warnings}が使用されて
いない限り，警告が発せられます．

@item --change-warnings
@itemx --adjust-warnings
@samp{--change-section-address}や@samp{--change-section-lma}や
@samp{--change-section-vma}が使用されている場合で，指名されたセクション
が存在しない場合，警告を発します．これはデフォルトです．

@item --no-change-warnings
@itemx --no-adjust-warnings
@samp{--change-section-address}や@samp{--change-section-lma}や
@samp{--change-section-vma}が使用されている場合で，指名されたセクション
が存在しない場合でも警告を発しません．

@item --set-section-flags @var{section}=@var{flags}
指名したセクションのフラグを設定します．@var{flags}引数は，カンマで分け
られたフラグ名の文字列です．認識される名前は，@samp{alloc}，
@samp{contents}，@samp{load}，@samp{noload}，@samp{readonly}，
@samp{code}，@samp{data}，@samp{rom}，@samp{share}，そして@samp{debug}で
す．@samp{contents}フラグを内容のないセクションに対し設定可能ですが，内
容のあるセクションの@samp{contents}フラグとしての意味がありません---その
代わりにセクションを削除します．すべてのフラグがすべてのオブジェクトファ
イル書式に意味があるわけではありません．

@item --add-section @var{sectionname}=@var{filename}
ファイルをコピーしている間に，指名された@var{sectionname}の新しいセクショ
ンを追加します．新しいセクションの内容はファイル@var{filename}からもたら
されます．セクションの大きさは，ファイルのサイズになります．このオプショ
ンは，任意の名前を持つセクションをサポート可能なファイル書式でのみ動作し
ます．

@item --change-leading-char
オブジェクトファイル書式には，シンボルの開始時に特別な文字を使用するもの
もあります．そのような文字で最もよくあるのはアンダースコアで，それはコン
パイラがすべてのシンボルの前によく追加するものです．このオプションは，
@code{objcopy}に，オブジェクトファイル書式を変換している間にすべてのシン
ボルに前置される文字を変更するよう伝えます．オブジェクトファイル書式が同
じ前置文字を使用している場合，このオプションは効果がありません．それ以外
の場合，それは適切に，文字を加えたり，文字を削除したり，文字を変更したり
します．

@item --remove-leading-char
グローバルシンボルの最初の文字が，オブジェクトファイル書式で使用されてい
るシンボルに前置される特殊な文字の場合，その文字を削除します．そのような
文字で最もよくあるのはアンダースコアです．このオプションは，すべてのグロー
バルシンボルから前置されるアンダースコアを削除します．シンボル名に対して
異なる規則を持つ，異なるファイル書式のオブジェクト同士をリンクしたい場合，
これは役に立つはずです．これは@code{--change-leading-char}とは異なり，出
力ファイルのオブジェクトファイルの書式に依存せず，それは適切なときは常に
シンボル名を変更します．

@item --redefine-sym @var{old}=@var{new}
シンボル名を@var{old}から@var{new}に変更します．ソースを持っていない2つ
のものを一緒にリンクしようとし，名前の衝突があるとき便利です．

@item --weaken
ファイルのすべてのグローバルシンボルを弱くします．リンカに対し@code{-R} 
オプションを使用した，他のオブジェクトに対しリンクするオブジェクトを構築
するとき，これは便利です．

@item -V
@itemx --version
@code{objcopy}のバージョンナンバーを表示します．

@item -v
@itemx --verbose
冗長な出力です．修正されたすべてのオブジェクトファイルをリストアップしま
す．アーカイブの場合，@samp{objcopy -v}は，アーカイブのすべてのメンバー
をリストアップします．

@item --help
@code{objcopy}へのオプションの概要を表示します．
@end table


@node objdump
@chapter objdump

@cindex object file information
@kindex objdump

@smallexample
objdump [ -a | --archive-headers ] 
        [ -b @var{bfdname} | --target=@var{bfdname} ] 
        [ -C | --demangle ]
        [ -d | --disassemble ]
        [ -D | --disassemble-all ]
        [ -z | --disassemble-zeroes ]
        [ -EB | -EL | --endian=@{big | little @} ]
        [ -f | --file-headers ]
        [ --file-start-context ]
        [ -g | --debugging ]
        [ -h | --section-headers | --headers ]
        [ -i | --info ]
        [ -j @var{section} | --section=@var{section} ]
        [ -l | --line-numbers ]
        [ -S | --source ]
        [ -m @var{machine} | --architecture=@var{machine} ]
        [ -M @var{options} | --disassembler-options=@var{options}]
        [ -p | --private-headers ]
        [ -r | --reloc ]
        [ -R | --dynamic-reloc ]
        [ -s | --full-contents ]
        [ -G | --stabs ]
        [ -t | --syms ]
        [ -T | --dynamic-syms ]
        [ -x | --all-headers ]
        [ -w | --wide ]
        [ --start-address=@var{address} ]
        [ --stop-address=@var{address} ]
        [ --prefix-addresses]
        [ --[no-]show-raw-insn ]
        [ --adjust-vma=@var{offset} ]
        [ -V | --version ]
        [ -H | --help ]
        @var{objfile}@dots{}
@end smallexample

@code{objdump}は，1つ以上のオブジェクトファイルに関する情報を表示します．
オプションで，表示する特定の情報を制御します．この情報は，プログラムをコ
ンパイルして動作させたいだけのプログラマより，コンパイルツールに関する作
業をしているプログラマに対し最も役に立ちます．

@var{objfile}@dots{}は，調査されるオブジェクトファイルです．アーカイブを
指定したとき，@code{objdump}は，それぞれのメンバーオブジェクトファイルの
情報を表示します．

ここに交互に表示しているオプションの長い形式と短い形式は等価です．リスト
の@samp{-a,-d,-D,-f,-g,-G,-h,-H,-p,-r,-R,-S,-t,-T,-V,-x}から少なくとも一
つのオプションを与える必要があります．

@table @code
@item -a
@itemx --archive-header
@cindex archive headers
@var{objfile}ファイルがすべてアーカイブの場合，アーカイブヘッダ情報を表
示します(書式は@samp{ls -l}に似ています)．@samp{ar tv}を用いてリストアッ
プ可能な情報に加え，@samp{objdump -a}は，それぞれのアーカイブのメンバー
のオブジェクトファイルの書式を表示します．

@item --adjust-vma=@var{offset}
@cindex section addresses in objdump
@cindex VMA in objdump
情報をダンプしているとき，最初に，すべてのセクションアドレスに
@var{offset}を加えます．これは，セクションアドレスがシンボルテーブルに対
応していない場合便利で，それは，@code{a.out}のようなセクションアドレスが
存在できない書式を使用しているとき，セクションを特定のアドレスに配置する
とき発生します．

@item -b @var{bfdname}
@itemx --target=@var{bfdname}
@cindex object code format
オブジェクトファイルに対するオブジェクトコードの書式を@var{bfdname}に指
定します．このオプションは不要かもしれません．@var{objdump}は，自動的に
多くの書式を認識することが可能です．

例えば，以下のようにします．
@example
objdump -b oasys -m vax -h fu.o
@end example
@noindent
それは，@file{fu.o}のセクションヘッダ(@samp{-h})からの情報の概要を表示し，
それは特に，Oasysコンパイラで生成される書式のVAXオブジェクトファイルとし
て認識(@samp{-m})されます．@samp{-i}オプションを用いて利用可能な書式をリ
ストアップ可能です．詳細は，@xref{Target Selection}.

@item -C
@itemx --demangle
@cindex demangling in objdump
低レベルのシンボル名をユーザレベルの名前に復号(@dfn{demangle})します．シ
ステムによって前置される，最初にあるあらゆるアンダースコアを削除するだけ
でなく．これはC++関数名を可読にします．demangleの詳細は，@xref{c++filt}.

@item -G
@item --debugging
デバッグ情報を表示します．これは，ファイルに保存されているデバッグ情報の
解析を試み，Cのような構文を使用してそれを出力します．デバッグ情報の特定
の形式のみ実装されています．

@item -d
@itemx --disassemble
@cindex disassembling object code
@cindex machine instructions
@var{objfile}から，機械語命令に対するアセンブラニーモニックを表示します．
このオプションは，(機械語)命令を含むことを期待されるそれらのセクションを，
逆アセンブルするだけです．

@item -D
@itemx --disassemble-all
@samp{-d}に似ていますが，(機械語)命令を含むことを期待されるものだけでな
く，すべてのセクションの内容を逆アセンブルします．

@item --prefix-addresses
逆アセンブルしているとき，それぞれの行に絶対アドレスを出力します．これは
より古い逆アセンブルの書式です．

@item --disassemble-zeroes
通常逆アセンブルの出力はゼロブロックをスキップします．このオプションは，
それらのブロックを他のデータと同じように逆アセンブルする，直接的な逆アセ
ンブラです．

@item -EB
@itemx -EL
@itemx --endian=@{big|little@}
@cindex endianness
@cindex disassembly endianness
オブジェクトファイルのエンディアンを指定します．これは逆アセンブラにのみ
効果があります．これは，S-recordのような，エンディアン情報を記述していな
いファイル書式を逆アセンブルしているとき役に立つはずです．

@item -f
@itemx --file-header
@cindex object file header
それぞれの@var{objfile}ファイルのヘッダ全体からの情報の概要を表示します．

@item --file-start-context
@cindex source code context
まだ表示されていない，内部にリストアップされているソースコード/ファイル
から逆アセンブルされたもの(おそらく'-S')を表示しているとき，コンテクスト
をファイルの先頭まで拡張することを指定します．

@item -h
@itemx --section-header
@itemx --header
@cindex section headers
オブジェクトファイルのセクションヘッダからの情報の概要を表示します．

ファイルのセグメントは，非標準のアドレスにリロケートされ，例えば，
@samp{-Ttext}，@samp{-Tdata}，または@samp{-Tbss}オプションが@code{ld}で
使用されています．しかし，@code{a.out}のようなオブジェクトファイルの書式
によっては，ファイルセグメントの開始アドレスを保存しないものもあります．
そのような状況では，@code{ld}がセクションを正しくリロケートしますが，ファ
イルのセクションのヘッダのリストに@samp{objdump -h}を使用しても，正しい
アドレスを表示することはできません．その代わりに，それは通常のアドレスを
表示し，それらはターゲットに対して暗黙のうちに行われます．

@item --help
@code{objdump}に対するオプションの概要を出力し，終了します．

@item -i
@itemx --info
@cindex architectures available
@cindex object formats available
@samp{-b}や@samp{-m}を用いて指定可能な，すべてのアーキテクチャとオブジェ
クト書式を示すリストを表示します．

@item -j @var{name}
@itemx --section=@var{name}
@cindex section information
セクション@var{name}に対する情報のみ表示します．

@item -l
@itemx --line-numbers
@cindex source filenames for object files
(デバッグ情報を使用した)表示に，表示されているオブジェクトコードやリロケー
トに一致しているファイル名とソースの行番号を用いてラベル付けします．
@samp{-d}，@samp{-D}，または@samp{-r}を用いた場合のみ有益です．

@item -m @var{machine}
@itemx --architecture=@var{machine}
@cindex architecture
@cindex disassembly architecture
オブジェクトファイルの逆アセンブル時に，使用するアーキテクチャを指定しま
す．これは，S-recordのような，アーキテクチャ情報が記述されていないオブジェ
クトファイルを逆アセンブルするとき役に立ちます．@samp{-i}オプションを用
いて，利用可能なアーキテクチャをリストアップ可能です．

@item -M @var{options}
@itemx --disassembler-options=@var{options}
ターゲット指定の情報を逆アセンブラに渡します．いくつかのターゲットでのみ
サポートします．

ターゲットがARMアーキテクチャの場合，逆アセンブラが使用されている間に使
用するレジスタ名のセットを選択するために，このスイッチを使用することが可
能です．@samp{-M reg-name-std} (デフォルト)を指定すると，ARMの(機械語)命
令セットのドキュメントで使用しているレジスタ名を選択しますが，'sp'と呼ば
れるレジスタ13，'lr'と呼ばれるレジスタ14，そして'pc'と呼ばれるレジスタ15
レジスタは除きます．@samp{-M reg-names-apcs}を指定すると，ARM Procedure
Call Standardで使用されている名前のセットを選択するのに対し，@samp{-M
reg-names-raw}を指定すると，@samp{r}にレジスタ番号が続いたものを使用しま
す．

APCSレジスタ命名規則には2つの変形があり，@samp{-M reg-names-atpcs}と
@samp{-M reg-names-special-atpcs}により利用可能で，それはARM/Thumb
Procedure Call Standard命名規約を使用します．(通常のレジスタ名，または，
特殊なレジスタ名のどちらかを使用します．)

このオプションは，ARMアーキテクチャに対し，スイッチ
@samp{--disassembler-options=force-thumb}を使用して，すべての(機械語)命
令をTHUMB(機械語)命令として解釈するように逆アセンブラに強制するためにも
使用可能です．他のコンパイラで生成される thumb コードの逆アセンブラを試
みるとき，これは役に立つはずです．

@item -p
@itemx --private-headers
オブジェクトファイルの書式特有の情報を出力します．出力される厳密な情報は
オブジェクトファイルの書式に依存します．オブジェクトファイルの書式によっ
ては，追加情報は出力されません．

@item -r
@itemx --reloc
@cindex relocation entries, in object file
ファイルのリロケーション項目を出力します．@samp{-d}や@samp{-D}とともに使
用される場合，リロケーションは逆アセンブルの中に点在して出力されます．

@item -R
@itemx --dynamic-reloc
@cindex dynamic relocation entries, in object file
ファイルの動的なリロケーション項目を出力します．これは，ある形式の共有ラ
イブラリのような，動的なオブジェクトのみで意味があります．

@item -s
@itemx --full-contents
@cindex sections, full contents
@cindex object file sections
要求されたあらゆるセクションの，すべての内容を表示します．

@item -S
@itemx --source
@cindex source disassembly
@cindex disassembly, with source
可能な場合，逆アセンブラの中にソースコードを混ぜて表示します．@samp{-d}
が暗黙のうちに指定されます．

@item --show-raw-insn
(機械語)命令を逆アセンブルするとき，(機械語)命令をシンボリック形式と同様
に16進で出力します．@code{--prefix-addresses}が使用されているとき以外，
これはデフォルトです．

@item --no-show-raw-insn
(機械語)命令を逆アセンブルするとき，(機械語)命令バイトを出力しません．こ
れは@code{--prefix-addresses}が使用されているときデフォルトです．

@item -G
@item --stabs
@cindex stab
@cindex .stab
@cindex debug symbols
@cindex ELF object file format
要求されるすべてのセクションの内容を全部表示します．ELFファイルの .stab 
と .stab.indexと .stab.exclセクションの内容を表示します．これは，
@code{.stab}デバッグシンボルテーブルの項目がELFのセクションに運び込まれ
る(Solaris 2.0のような)システムでのみ役に立ちます．そのほかのほとんどの
書式では，デバッグシンボルテーブルの項目は，リンクシンボルとともにバラバ
ラに配置され，@samp{--syms}の出力で見ることが可能となります．スタブシン
ボルの詳細は，@ref{Top,Stabs,Stabs Overview,stabs.info, The ``stabs''
debug format}, を参照してください．

@item --start-address=@var{address}
@cindex start-address
データの表示を，指定したアドレスで開始します．これは@code{-d}，@code{-r}，
そして@code{-s}オプションの出力に効果があります．

@item --stop-address=@var{address}
@cindex stop-address
データの表示を，指定したアドレスで停止します．これは@code{-d}，@code{-r}，
そして@code{-s}オプションの出力に効果があります．

@item -t
@itemx --syms
@cindex symbol table entries, printing
ファイルのシンボルテーブルの項目を出力します．これは，@samp{nm}プログラ
ムで提供される情報に似ています．

@item -T
@itemx --dynamic-syms
@cindex dynamic symbol table entries, printing
ファイルの動的なシンボルテーブルの項目を表示します．これは，特定の形式の
共有ライブラリのような，動的なオブジェクトに対してのみ意味があります．こ
れは，@samp{-D} (@samp{--dynamic})オプションが与えられている@samp{nm}プ
ログラムで提供される情報に似ています．

@item --version
@code{objdump}のバージョンナンバーを出力し終了します．

@item -x
@itemx --all-header
@cindex all header information, object file
@cindex header information, all
利用可能なヘッダ情報をすべて表示し，それはシンボルテーブルと，リロケーショ
ン項目を含みます．@samp{-x}を用いると，@samp{-a -f -h -r -t}をすべて指定
したものと等価になります．

@item -w
@itemx --wide
@cindex wide output, printing
80列以上の出力デバイスに対し，数行で書式化します．
@end table


@node ranlib
@chapter ranlib

@kindex ranlib
@cindex archive contents
@cindex symbol index

@smallexample
ranlib [-vV] @var{archive}
@end smallexample

@code{ranlib}は，アーカイブの内容の索引を生成し，それをアーカイブに保存
します．索引は，リロケート可能なオブジェクトファイルであるアーカイブのメ
ンバーにより定義される，それぞれのシンボルをリストアップします．

この索引をリストアップするために，@samp{nm -s}や@samp{nm --print-armap}
を使用することが可能です．

そのような索引を持ったアーカイブは，ライブラリとのリンクで高速になり，アー
カイブ内での位置によらず，ライブラリ内でのお互いの呼び出し動作を可能にし
ます．

@sc{gnu} @code{ranlib}プログラムは，@sc{gnu} @code{ar}のもう一つの形式で
す．@code{ranlib}を実行することは，@samp{ar -s}を実行することと完全に等
価です．@xref{ar}.

@table @code
@item -v
@itemx -V
@itemx --version
@code{ranlib}のバージョンナンバーを表示します．
@end table


@node size
@chapter size

@kindex size
@cindex section sizes

@smallexample
size [ -A | -B | --format=@var{compatibility} ]
     [ --help ]  [ -d | -o | -x | --radix=@var{number} ]
     [ --target=@var{bfdname} ]  [ -V | --version ]  
     [ @var{objfile}@dots{} ]
@end smallexample

@sc{gnu} @code{size}ユーティリティは，その引数リスト内の，それぞれのオブ
ジェクトやアーカイブファイル@var{objfile}に対し，セクションのサイズ---と
全体のサイズ---をリストアップします．デフォルトで，それぞれのオブジェク
トファイルやそれぞれのアーカイブのモジュールに対し，一行の出力が生成され
ます．

@var{objfile}@dots{}は，調査されるオブジェクトファイルです．何も指定され
ない場合，ファイル@code{a.out}が使用されます．

コマンドラインオプションには，以下の意味があります．

@table @code
@item -A
@itemx -B
@itemx --format=@var{compatibility}
@cindex @code{size} display format
これらのオプションの一つを使用した場合，System V @code{size} (@samp{-A}，
または@samp{--format=sysv}の使用)，または，Berkeley @code{size}
(@samp{-B}，または@samp{--format=berkeley}の使用)に似ている@sc{gnu}
@code{size}からの出力のいずれかを選択することができます．デフォルトは，
一行の書式はBerkeleyのものに似ています．
@c Bonus for doc-source readers: you can also say --format=strange (or
@c anything else that starts with 's') for sysv, and --format=boring (or
@c anything else that starts with 'b') for Berkeley.

以下は，Berkeley (デフォルト)書式の@code{size}の出力例です．

@smallexample
$ size --format=Berkeley ranlib size
text    data    bss     dec     hex     filename
294880  81920   11592   388392  5ed28   ranlib
294880  81920   11888   388688  5ee50   size
@end smallexample

@noindent
これは同じデータですが，System Vの記法を選択して表示されています．

@smallexample
$ size --format=SysV ranlib size
ranlib  :
section         size         addr
.text         294880         8192       
.data          81920       303104       
.bss           11592       385024       
Total         388392    


size  :
section         size         addr
.text         294880         8192       
.data          81920       303104       
.bss           11888       385024       
Total         388688    
@end smallexample

@item --help
受け入れ可能な引数とオプションの概要を表示します．

@item -d
@itemx -o
@itemx -x
@itemx --radix=@var{number}
@cindex @code{size} number format
@cindex radix for section sizes
これらのオプションの一つを使用した場合，それぞれのセクションのサイズを，
10進数(@samp{-d}または@samp{--radix=10})，8進数(@samp{-o}または
@samp{--radix=8})，または16進数(@samp{-x}または@samp{--radix=16})で与え
られるもののいづれかに制御可能です．@samp{--radix=@var{number}}では，3つ
の値(8, 10, 16)のみサポートされます．全体のサイズは常に2つの基数で与えら
れます．それは，@samp{-d}や@samp{-x}に対する，10進数と16進数，または
@samp{-o}を使用した場合，8進数と16進数になります．

@item --target=@var{bfdname}
@cindex object code format
@var{objfile}に対するオブジェクトコードの書式を@var{bfdname}として指定し
ます．このオプションは不要かもしれません．@code{size}は自動的に多くの書
式を認識できます．詳細は，@xref{Target Selection}.

@item -V
@itemx --version
@code{size}のバージョンナンバーを表示します．
@end table


@node strings
@chapter strings
@kindex strings
@cindex listings strings
@cindex printing strings
@cindex strings, printing

@smallexample
strings [-afov] [-@var{min-len}] [-n @var{min-len}] [-t @var{radix}] [-]
        [--all] [--print-file-name] [--bytes=@var{min-len}]
        [--radix=@var{radix}] [--target=@var{bfdname}]
        [--help] [--version] @var{file}@dots{}
@end smallexample

それぞれの与えられた@var{file}に対し，@sc{gnu} @code{strings}は，出力可
能な文字の，少なくとも4文字の長さ(または以下のオプションで与えられた数) 
のならびで，それに出力不可能な文字が続くものを出力します．デフォルトで，
オブジェクトファイルの，初期化されロードされたセクションから，文字列のみ
出力します．それ以外のファイルの形式では，ファイル全体から文字列を出力し
ます．

@code{strings}は，テキストではないファイルの内容を判断することに，主に役
立ちます．

@table @code
@item -a
@itemx --all
@itemx -
オブジェクトファイルの初期化されロードされるセクションのみをスキャンする
のではありません．ファイル全体をスキャンします．

@item -f
@itemx --print-file-name
それぞれの文字列の前にファイル名を出力します．

@item --help
プログラムの使用方法の概要を標準出力に出力し終了します．

@item -@var{min-len}
@itemx -n @var{min-len}
@itemx --bytes=@var{min-len}
デフォルトの4ではなく，少なくとも@var{min-len}文字の長さの文字の列を出力
します．

@item -o
@samp{-t o}に似ています．@code{strings}の他のバージョンには，代わりに
@samp{-t d}のように@samp{-o}を動作させるものもあります．我々は，両方の互
換性を提供することができないので，単純にこちらを選びました．

@item -t @var{radix}
@itemx --radix=@var{radix}
それぞれの文字列の前に，ファイル内部でのオフセットを出力します．単一文字
の引数を指定した場合，オフセットの基数---8進数に対する@samp{o}，16進数に
対する@samp{x}，または10進数に対する@samp{x}---を指定します．

@item --target=@var{bfdname}
@cindex object code format
システムのデフォルトの書式以外のオブジェクトコードの書式を指定します．詳
細は，@xref{Target Selection}.

@item -v
@itemx --version
プログラムのバージョンナンバーを標準出力に出力し終了します．
@end table


@node strip
@chapter strip

@kindex strip
@cindex removing symbols
@cindex discarding symbols
@cindex symbols, discarding

@smallexample
strip [ -F @var{bfdname} | --target=@var{bfdname} ]
      [ -I @var{bfdname} | --input-target=@var{bfdname} ]
      [ -O @var{bfdname} | --output-target=@var{bfdname} ]
      [ -s | --strip-all ] [ -S | -g | --strip-debug ]
      [ -K @var{symbolname} | --keep-symbol=@var{symbolname} ]
      [ -N @var{symbolname} | --strip-symbol=@var{symbolname} ]
      [ -x | --discard-all ] [ -X | --discard-locals ]
      [ -R @var{sectionname} | --remove-section=@var{sectionname} ]
      [ -o @var{file} ] [ -p | --preserve-dates ]
      [ -v | --verbose ]  [ -V | --version ]  [ --help ]
      @var{objfile}@dots{}
@end smallexample

@sc{gnu} @code{strip}は，オブジェクトファイル@var{objfile}からシンボルを
すべて廃棄します．オブジェクトファイルのリストには，アーカイブを含めるこ
とが可能です．少なくとも1つのオブジェクトファイルを与える必要があります．

@code{strip}は，異なる名前に編集されたものを書き出すのではなく，その引数
で指名されたファイルを変更します．

@table @code
@item -F @var{bfdname}
@itemx --target=@var{bfdname}
オリジナルの @var{objfile}を，オブジェクトコード書式@var{bfdname}を用い
たファイルとして扱い，同じ書式で再書き込みします．詳細は，@xref{Target
Selection}.

@item --help
@code{strip}へのオプションの概要を表示し終了します．

@item -I @var{bfdname}	
@itemx --input-target=@var{bfdname}
オリジナルの@var{objfile}を，オブジェクトコード書式@var{bfdname}を用いた
ファイルとして扱います．詳細は，@xref{Target Selection}.

@item -O @var{bfdname}
@itemx --output-target=@var{bfdname}
@var{objfile}を，出力書式@var{bfdname}のファイルで置換します．詳細は，
@xref{Target Selection}.

@item -R @var{sectionname}
@itemx --remove-section=@var{sectionname}
@var{sectionname}で指名されたすべてのセクションを，出力ファイルから削除
します．このオプションは一回以上与えることが可能です．このオプションを使
用すると，不適切にも出力ファイルを利用不可能にする可能性があることに注意
してください．

@item -s
@itemx --strip-all
すべてのシンボルを削除します．

@item -g
@itemx -S
@itemx --strip-debug
デバッグシンボルのみ削除します．

@item --strip-unneeded
リロケーション処理に不要なすべてのシンボルを削除します．

@item -K @var{symbolname}
@itemx --keep-symbol=@var{symbolname}
シンボル@var{symbolname}のみ，ソースファイルに保存します．このオプション
は一回以上与えることが可能です．

@item -N @var{symbolname}
@itemx --strip-symbol=@var{symbolname}
シンボル@var{symbolname}をソースファイルから削除します．このオプションは
一回以上与えることが可能で，@code{-K}以外の@code{strip}オプションと組み
合わせることも可能です．

@item -o @var{file}
既存のファイルを置換するのではなく，@code{strip}された出力を@var{file}に
書き込みます．この引数が使用されたとき，1つの@var{objfile}引数のみ指定可
能です．

@item -p
@itemx --preserve-dates
ファイルのアクセスと編集の日付を保持します．

@item -x
@itemx --discard-all
グローバルでないシンボルを削除します．

@item -X
@itemx --discard-locals
コンパイラが生成したローカルシンボルを削除します．(これらは通常，
@samp{L}または@samp{.}で始まります．)

@item -V
@itemx --version
@code{strip}のバージョンナンバーを表示します．

@item -v
@itemx --verbose
冗長な出力です．編集されたすべてのオブジェクトファイルをリストアップしま
す．アーカイブの場合，@samp{strip -v}はアーカイブのすべてのメンバーをリ
ストアップします．
@end table


@node c++filt, addr2line, strip, Top
@chapter c++filt

@kindex c++filt
@cindex demangling C++ symbols

@smallexample
c++filt [ -_ | --strip-underscores ]
        [ -j | --java ]
	[ -n | --no-strip-underscores ]
        [ -s @var{format} | --format=@var{format} ]
        [ --help ]  [ --version ]  [ @var{symbol}@dots{} ]
@end smallexample

@kindex cxxfilt
C++とJava言語は，関数のオーバーロードを提供し，それは(それぞれ異なる型の
パラメータの受け入れを提供する)同じ名前の多くの関数を書くことが可能だと
いうことを意味します．すべてのC++とJavaの関数名は，低レベルのアセンブリ
ラベルに符号化されます(この処理は@dfn{mangling}として知られています．)
@code{c++filt}@footnote{MS-DOSは，ファイル名に@kbd{+}文字が使用できない
ので，MS-DOS上でのこのプログラムは@code{cxxfilt}と命名されます．}プログ
ラムは，マッピングを反転します．それは，これらのオーバーロードされた関数
を破壊することから，リンカが守ることができるように，低レベルの名前を，ユー
ザレベルの名前に復号(@dfn{demangles})します．

入力にあるすべての英数単語(文字，数字，アンダースコア，ドル記号，または
ピリオド)は，ポテンシャルラベルと考えられます．ラベルをC++の名前に復号す
る場合，C++の名前は出力で低レベルの名前に置換されます．

個別のシンボルを解読するために@code{c++filt}を使用することが可能です．

@example
c++filt @var{symbol}
@end example

@var{symbol}引数が与えられた場合，@code{c++filt}は，シンボル名を標準入力
から読み込み，demangleされた名前を標準出力に書き出します．すべての結果は，
標準出力に出力されます．

@table @code
@item -_
@itemx --strip-underscores
システムによっては，CとC++のコンパイラが，すべての名前の前にアンダースコ
アを書き込むものもあります．例えば，Cでの名前@code{foo}が，低レベルでは
名前@code{_foo}になります．このオプションは，最初のアンダースコアを削除
します．@code{c++filt}がデフォルトでアンダースコアを削除するかどうかはター
ゲットに依存します．

@item -j
@itemx --java
demangleされた名前を，Javaの構文を用いて出力します．デフォルトは，C++の
構文の使用です．

@item -n
@itemx --no-strip-underscores
最初のアンダースコアを削除しません．

@item -s @var{format}
@itemx --format=@var{format}
@sc{gnu} @code{nm}は，異なるC++コンパイラが使用されてmangleしている，3つ
の異なるメソッドを復号することが可能です．このオプションの引数は，使用さ
れているメソッドを選択します．

@table @code
@item gnu
@sc{gnu}コンパイラで使用されるもの(デフォルトメソッド)．
@item lucid
Lucidコンパイラで使用されるもの．
@item arm
C++ Annotated Reference Manualで指定されるもの．
@item hp
HPコンパイラで使用されるもの．
@item edg
EDGコンパイラで使用されるもの．
@end table

@item --help
@code{c++filt}のオプションの概要を出力し終了します．

@item --version
@code{c++filt}のバージョンナンバーを出力し終了します．
@end table

@quotation
@emph{警告:} @code{c++filt}は，新しいユーティリティで，そのユーザインター
フェースの詳細は将来のリリースで変更を受けやすくなっています．特に，コマ
ンドラインの引数として渡される名前を復号するために，コマンドラインオプショ
ンが，将来要求されるかもしれません．言い換えると以下のようになるというこ
とです．

@example
c++filt @var{symbol}
@end example

@noindent
これが，将来のリリースでは，以下のようになるかもしれません．

@example
c++filt @var{option} @var{symbol}
@end example
@end quotation


@node addr2line
@chapter addr2line

@kindex addr2line
@cindex address to file name and line number

@smallexample
addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
          [ -C | --demangle ]
          [ -e @var{filename} | --exe=@var{filename} ]
          [ -f | --functions ] [ -s | --basename ]
          [ -H | --help ] [ -V | --version ]
          [ addr addr ... ]
@end smallexample

@code{addr2line}は，プログラムアドレスをファイル名と行番号に変換します．
アドレスと実行形式が与えられた場合，ファイル名と行番号が与えられたアドレ
スに関連していることを判別するため，それは実行形式内のデバッグ情報を使用
します．

使用する実行形式は，@code{-e}オプションで指定されます．デフォルトは，ファ
イル@code{a.out}です．

@code{addr2line}は，2つの処理モードがあります．

1番目は，16進アドレスがコマンドラインで指定され，@code{addr2line}は，それ
ぞれのアドレスに対しファイル名と行番号を表示します．

2番目は，@code{addr2line}が16進のアドレスと標準入力から読み込み，それぞ
れのアドレスに対し，ファイル名と行番号を標準出力に出力します．このモード
では，@code{addr2line}は，動的に選択されたアドレスを変換するパイプとして
使用可能です．

出力の書式は，@samp{FILENAME:LINENO}です．それぞれのアドレスに対するファ
イル名と行番号は，個別の行に出力されます．@code{-f}オプションが使用され
た場合，それぞれの@samp{FILENAME:LINENO}行に，アドレスに含まれる関数名
@samp{FUNCTIONNAME}が前置されます．

ファイル名と関数名が決定できない場合，@code{addr2line}は2つの疑問符をそ
の場所に出力します．行番号が決定できない場合，@code{addr2line}は，0を出
力します．

ここで交互に表示している，オプションの長い形式と短い形式は等価です．

@table @code
@item -b @var{bfdname}
@itemx --target=@var{bfdname}
@cindex object code format
オブジェクトファイルに対するオブジェクトコードを@var{bfdname}として指定
します．

@item -C
@itemx --demangle
@cindex demangling in objdump
低レベルのシンボル名をユーザレベル名に復号(@dfn{demangle})します．システ
ムによって前置される，すべての最初のアンダースコアを削除する他に，これは
C++関数名を可読にします．demangleの詳細は，@xref{c++filt}.

@item -e @var{filename}
@itemx --exe=@var{filename}
変換したいアドレスに対する実行形式の名前を指定します．デフォルトファイル
は@code{a.out}です．

@item -f
@itemx --functions
ファイルと行番号の情報と同様に，関数名も表示します．

@item -s
@itemx --basenames
それぞれのファイル名のベースのみ表示します．
@end table


@node nlmconv
@chapter nlmconv

@code{nlmconv}は，リロケートオブジェクトファイルをNetWare Loadable
Moduleに変換します．

@ignore
@code{nlmconv} currently works with @samp{i386} object
files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
object files in @sc{elf}, or @code{a.out} format@footnote{
@code{nlmconv} should work with any @samp{i386} or @sc{sparc} object
format in the Binary File Descriptor library.  It has only been tested
with the above formats.}.
@end ignore

@quotation
@emph{警告:} @code{nlmconv}は，NLMターゲットに対してのみ役に立つので，常
にバイナリユーティリティの一部として構築されるわけではありません．
@end quotation

@smallexample
nlmconv [ -I @var{bfdname} | --input-target=@var{bfdname} ]
        [ -O @var{bfdname} | --output-target=@var{bfdname} ]
        [ -T @var{headerfile} | --header-file=@var{headerfile} ]
        [ -d | --debug]  [ -l @var{linker} | --linker=@var{linker} ]
        [ -h | --help ]  [ -V | --version ]
        @var{infile} @var{outfile}
@end smallexample

@code{nlmconv}は，リロケート可能な@samp{i386}オブジェクトファイル
@var{infile}をNetWare Loadable Module @var{outfile}に変換し，さらに，NLM 
ヘッダ情報に対する@var{headerfile}を読み込みます．ヘッダで使用されている
NLMコマンドファイル言語を書くことの説明は， Novell, Inc.で利用可能な，
NLM Software Developer's Kit (``NLM SDK'')の一部である，@cite{NLM
Development and Tools Overview}の，@samp{linkers}セクションの特定の
@samp{NLMLINK}を参照してください．@code{nlmconv}は，@var{infile}を読み込
むために，@sc{gnu} Binary File Descriptorライブラリを使用します．詳細は，
@ref{BFD,,BFD,ld.info,Using LD},を参照してください．

@code{nlmconv}はリンクステップを実行可能です．言い換えると，(コマンドラ
インで1つの入力ファイルを単に指定するのではなく)定義ファイルでリストアッ
プした場合，入力に対して１つ以上のオブジェクトファイルをリストアップする
ことが可能です．この場合，@code{nlmconv}はリンカを呼び出します．

@table @code
@item -I @var{bfdname}
@itemx --input-target=@var{bfdname}
入力ファイルのオブジェクト書式です．@code{nlmconv}は，通常与えられたファ
イルの書式を決定できます(そのためデフォルトは不要です)．詳細は，
@xref{Target Selection}.

@item -O @var{bfdname}
@itemx --output-target=@var{bfdname}
出力ファイルのオブジェクトの書式です．@code{nlmconv}は，出力の書式を入力
の書式を基に推測し，例えば，@samp{i386}入力ファイルに対する出力の書式は，
@samp{nlm32-i386}になります．詳細は，@xref{Target Selection}.

@item -T @var{headerfile}
@itemx --header-file=@var{headerfile}
NLMヘッダ情報のために@var{headerfile}を読み込みます．ヘッダファイルで使
用されているNLMコマンドファイルの言語を書くときの(機械語)命令については，
Novell, Inc. で利用可能なNLM Software Developer's Kitの一部となっている，
@cite{NLM Development and Tools Overview}の@samp{linkers}セクションを参
照してください．

@item -d
@itemx --debug
@code{nlmconv}が使用しているリンカコマンドラインを(標準エラー出力に)表示
します．

@item -l @var{linker}
@itemx --linker=@var{linker}
あらゆるリンクで@var{linker}を使用します．@var{linker}は，絶対パス名また
は相対パス名が可能です．

@item -h
@itemx --help
使用方法の概要を出力します．

@item -V
@itemx --version
@code{nlmconv}のバージョンナンバーを出力します．
@end table


@node windres
@chapter windres

@code{windres}は，複数のWindowsのリソースで使用可能です．

@quotation
@emph{警告:} @code{windres}は，Windowsターゲットに対してのみ役に立つので，
常にバイナリユーティリティの一部として構築されるわけではありません．
@end quotation

@smallexample
windres [options] [input-file] [output-file]
@end smallexample

@code{windres}はリソースを入力ファイルから読み込み，それを出力ファイルに
コピーします．ファイルは以下の3つの書式の内，いずれか1つが可能です．

@table @code
@item rc
リソースコンパイラで読み込むテキスト書式．

@item res
リソースコンパイラが生成したバイナリ書式．

@item coff
COFFオブジェクト，または，実行形式．
@end table

これらの書式の違いに記述は，Microsoftのドキュメントで利用可能です．

@code{windres}が@code{rc}書式から@code{res}書式に変換するとき，それは
Windows Resource Compilerのように動作します．@code{windres}が@code{res}
書式から@code{coff}書式に変換するとき，それはWindows @code{CVTRES}プログ
ラムのように動作します．

@code{windres}が@code{rc}ファイルを生成するとき，出力は似ていますが，入
力で期待される書式と同一ではありません．入力@code{rc}ファイルが外部のファ
イル名を参照するとき，出力@code{rc}ファイルは，その代わりに，ファイルの
内容を含めます．

入力や出力の書式が指定されない場合，@code{windres}はファイル名，または，
入力ファイルのファイルの内容を基に推測します．@file{.rc}の拡張子を持つファ
イルは，@code{rc}ファイルとして扱われ，@file{.res}の拡張子を持つファイル
は，@code{res}ファイルとして扱われ，そして，@file{.o}や@file{.exe}の拡張
子を持つファイルは，@code{coff}ファイルとして扱われます．

出力ファイルが指定されない場合，@code{windres}は，@code{rc}書式内のリソー
スを標準出力に出力します．

@code{rc}を書き，COFFオブジェクトファイルに変換するために@code{windres} 
を使用し，COFFファイルをアプリケーションにリンクするのが通常の使用方法で
す．これは，@code{rc}ファイルのリソースの記述を，Windowsで利用可能にしま
す．

@table @code
@item -i @var{filename}
@itemx --input @var{filename}
入力ファイル名です．このオプションが使用されない場合，@code{windres} は，
最初の非オプションの引数を入力ファイル名として使用します．非オプションの
引数がない場合，@code{windres}は，標準入力から読み込みます．
@code{windres}は，COFFファイルを標準入力から読み込むことはできません．

@item -o @var{filename}
@itemx --output @var{filename}
出力ファイル名です．このオプションが使用されない場合，@code{windres} は，
入力ファイル名として使用した後の，最初の非オプションの引数を出力ファイル
名として使用します．非オプションの引数がない場合，@code{windres}は，標準
出力に書き出します．@code{windres}は，COFFファイルを標準出力に書き出すこ
とはできません．

@item -I @var{format}
@itemx --input-format @var{format}
読み込む入力の書式です．@var{format}は，@samp{res}，@samp{rc}，または
@samp{coff}が可能です．入力書式が指定されない場合，@code{windres}は，上
記のように推測します．

@item -O @var{format}
@itemx --output-format @var{format}
生成する出力の書式です．@var{format}は，@samp{res}，@samp{rc}，または
@samp{coff}が可能です．出力書式が指定されない場合，@code{windres}は，上
記のように推測します．

@item -F @var{target}
@itemx --target @var{target}
入出力としてのCOFFに対して使用するBFD書式を指定します．これは，BFDターゲッ
ト名です．サポートされているターゲットのリストを見るために，
@code{--help}オプションが使用可能です．通常，@code{windres}はデフォルト
の書式を使用し，それは@code{--help}オプションでリストアップされる最初の
ものです．@ref{Target Selection}.

@item --preprocessor @var{program}
@code{windres}が@code{rc}ファイルを読み込むとき，それは最初にCプリプロセッ
サを通じて実行されます．このオプションは，使用するプリプロセッサを使用す
るために，利用することができ，それには引数を前置するものを含みます．デフォ
ルトのプリプロセッサ引数は，@code{gcc -E -xc-header -DRC_INVOKED}です．

@item --include-dir @var{directory}
@code{rc}ファイルを読み込むとき使用する，インクルードディレクトリを指定
します．@code{windres}は，これを@code{-I}オプションとしてプリプロセッサ
に渡します．@code{windres}は，@code{rc}ファイルで指名されているファイル
を探すとき，このディレクトリの検索も行います．

@item -D @var{target}
@itemx --define @var{sym}[=@var{val}]
@code{rc}ファイルを読み込むとき，プリプロセッサに渡す@code{-D}オプション
を指定します．

@item -v
冗長モードを可能にします．これは，プリプロセッサが指定されていない場合，
そのプリプロセッサを報告します．

@item --language @var{val}
@code{rc}ファイルを読み込むとき使用する，デフォルトの言語を指定します．
@var{val}は16進数の言語コードにする必要があります．下位8ビットは言語で，
上位8ビットはサブ言語です．

@item --use-temp-file
プリプロセッサの出力を読み込むためpopenを使用する代わりに，一時ファイル
を使用します．popenの実装がバグの多いホストの場合，このオプションを使用
してください(例えば，ある非英語バージョンのWindows95とWindows98は，出力
がコンソールでないところでは，バグの多いpopenとなっていることが知られて
います)．

@item --no-use-temp-file
プリプロセッサの出力を読み込むため，一時ファイルではなくpopenを使用しま
す．これはデフォルトの動作です．

@item --help
使用方法の概要を出力します．

@item --version
@code{windres}のバージョンナンバーを出力します．

@item --yydebug
@code{windres}が@code{YYDEBUG}を@code{1}と定義してコンパイルされる場合，
パーサデバッグを開始します．
@end table


@node dlltool
@chapter DLLを構築し使用するのに必要なファイルの作成
@cindex DLL
@kindex dlltool

ダイナミックリンクライブラリ(DLL)を構築し使用するのに必要なファイルを作
成するために，@code{dlltool}は使用されます．

@quotation
@emph{警告:} @code{dlltool}は，DLLをサポートするターゲットに対してのみ役
に立つので，常にバイナリユーティリティの一部として構築されるわけではあり
ません．
@end quotation

@smallexample
dlltool [-d|--input-def @var{def-file-name}]
        [-b|--base-file @var{base-file-name}]
        [-e|--output-exp @var{exports-file-name}]
        [-z|--output-def @var{def-file-name}]
        [-l|--output-lib @var{library-file-name}]        
        [--export-all-symbols] [--no-export-all-symbols]
        [--exclude-symbols @var{list}]
        [--no-default-excludes]
        [-S|--as @var{path-to-assembler}] [-f|--as-flags @var{options}]
        [-D|--dllname @var{name}] [-m|--machine @var{machine}]
        [-a|--add-indirect] [-U|--add-underscore] [-k|--kill-at]
        [-A|--add-stdcall-alias]
        [-x|--no-idata4] [-c|--no-idata5] [-i|--interwork]
        [-n|--nodelete] [-v|--verbose] [-h|--help] [-V|--version]
        [object-file @dots{}]
@end smallexample

@code{dlltool}は，その入力を読み込み，それは，コマンドラインで指定された
オブジェクトファイルと，@samp{-d}と@samp{-b}オプションから来ます．そして，
これらの入力を処理し，@samp{-e}オプションが指定されている場合は，エクス
ポートファイルを作成します．@samp{-l}オプションが指定されている場合は，
ライブラリファイルを作成し，@samp{-z}オプションが指定されている場合は，
defファイルを作成します．-e，-l，そして-zオプションのいずれか，またはす
べてを，@code{dlltool}の呼び出しに置くことが可能です．

DLLを作成しているとき，DLLのソースファイルとともに，それは3つの他のファ
イルが必要です．@code{dlltool}は，これらのファイルの作成を手助けすること
が可能です．

最初のファイルは，DLLからエクスポートされる関数や，DLLがインポートする関
数等を指定する，@file{.def}ファイルです．これはテキストファイルで，手動
で作成したり，作成するために@code{dlltool}を@samp{-z}オプションを用いて
使用したりできます．この場合，@code{dlltool}は，エクスポートされるように
特別に印の付けられたこれらの関数を探しながら，コマンドラインで指定された
オブジェクトファイルを走査し，作成する@file{.def}ファイルにそれらの項目
を書き出します．

DLLからエクスポートされるように関数に印を付けるため，オブジェクトファイ
ルの@samp{.drectve}セクションに，@samp{-export:<name_of_function>}項目が
必要です．これは，Cでasm()演算子を使用することで可能となります．

@smallexample
  asm (".section .drectve");  
  asm (".ascii \"-export:my_func\"");

  int my_func (void) @{ @dots{} @}
@end smallexample

DLLの作成に必要とされる2番目のファイルは，エクスポートファイルです．この
ファイルは，DLL本体を作成し，DLLと外部世界の間のインターフェースを取り扱
うオブジェクトファイルとリンクされます．これはバイナリファイルで，
@code{dlltool}が@file{.def}ファイルの作成または読み込みをしている時に，
それに@samp{-e}オプションを与えると作成されます．

DLLの作成に必要とされる3番目のファイルは，DLL内の関数にアクセスするため
にプログラムとリンクするライブラリファイルです．このファイルは，
@code{dlltool}が@file{.def}ファイルの作成または読み込みをしている時に，
それに@samp{-l}オプションを与えると作成されます．

@code{dlltool}は，手動でライブラリファイルを構築しますが，それは，アセン
ブラ宣言を含む一時ファイルを作成し，それをアセンブルすることで，エクスポー
トファイルを構築します．@samp{-S}コマンドラインオプションは，
@code{dlltool}が使用するアセンブラへのパスを指定するため使用可能で，
@samp{-f}オプションは，そのアセンブラに特別なフラグを渡すために使用可能
です．@samp{-n}は，@code{dlltool}がこれらの一時的なアセンブラファイルを
終了後に削除することを防ぐために使用可能で，@samp{-n}が2回指定されている
場合は，@code{dlltool}がライブラリを構築するために使用した，一時的なオブ
ジェクトファイルを削除することを防ぎます．

ここに，ソースファイル@samp{dll.c}からDLLを作成し，そのDLLを使用している
プログラムも(@samp{program.o}という名前のオブジェクトファイルから)作成し
ている例があります．

@smallexample
  gcc -c dll.c
  dlltool -e exports.o -l dll.lib dll.o
  gcc dll.o exports.o -o dll.dll
  gcc program.o dll.lib -o program
@end smallexample

コマンドラインオプションは以下の意味があります．

@table @code

@item -d @var{filename}
@itemx --input-def @var{filename}
@cindex input .def file
読み込み，処理する@file{.def}ファイルの名前を指定します．

@item -b @var{filename}
@itemx --base-file @var{filename}
@cindex base files
読み込み，処理するベースファイルの名前を指定します．このファイルの内容に，
@code{dlltool}で生成されるエクスポートファイルの，リロケーションセクショ
ンが追加されます．

@item -e @var{filename}
@itemx --output-exp @var{filename}
@code{dlltool}で作成される，エクスポートファイルの名前を指定します．

@item -z @var{filename}
@itemx --output-def @var{filename}
@code{dlltool}で作成される，@file{.def}ファイルの名前を指定します．

@item -l @var{filename}
@itemx --output-lib @var{filename}
@code{dlltool}で作成される，ライブラリファイルの名前を指定します．

@item --export-all-symbols
入力ファイル内のエクスポートされるシンボルとして見つかったものは，すべて
大域的に弱く定義されているシンボルとして扱います．これらは，デフォルトで
エクスポートされないシンボルの小さなリストです．
@code{--no-default-excludes}オプションを参照してください．
@code{--exclude-symbols}オプションを使用して，エクスポートされないシンボ
ルのリストを追加することが可能です．

@item --no-export-all-symbols
入力の@file{.def}ファイルや入力オブジェクトファイルの@samp{.drectve}セク
ションで，明示的にリストアップされているシンボルのみエクスポートします．
@samp{.drectve}は，ソースコード内の@samp{dllexport}属性で作成されます．

@item --exclude-symbols @var{list}
@var{list}内のシンボルをエクスポートしません．これは，カンマまたはコロン
文字で分けられた，シンボル名のリストです．シンボル名に，アンダースコアの
前置を含めることはできません．これは，@code{--export-all-symbols}が使用
されているときのみ意味があります．

@item --no-default-excludes
@code{--export-all-symbols}が使用されているとき，それはデフォルトで，あ
る特別なシンボルをエクスポートすることを避けます．現在のエクスポートを避
けるリストは，@samp{DllMain@@12}, @samp{DllEntryPoint@@0},
@samp{impure_ptr}です．これらの特別なシンボルを進んでエクスポートするた
めに，@code{--no-default-excludes}オプションを使用することが可能です．こ
れは，@code{--export-all-symbols}が使用されているときのみ意味があります．

@item -S @var{path}
@itemx --as @var{path}
エクスポートファイルを作成するために使用するアセンブラの，ファイル名を含
む，パスを指定します．

@item -f @var{switches}
@itemx --as-flags @var{switches}
エクスポートファイルを構築しているときアセンブラに渡す，あらゆる特別なコ
マンドラインスイッチを指定します．このオプションは，@samp{-S}が指定され
ていないかのように動作します．このオプションは1つの引数のみ渡し，コマン
ドラインに1回以上出現する場合，最後に出現したもので，前に出現したものに
優先させます．そのため，複数のスイッチをアセンブラに渡す必要がある場合は，
二重引用符で囲む必要があります．

@item -D @var{name}
@itemx --dll-name @var{name}
@samp{-e}オプションが使用されてるとき，DLLの名前として@file{.def}ファイ
ルに保存する名前を指定します．このオプションがない場合，@samp{-e}オプショ
ンで与えられるファイル名は，DLLの名前として使用されます．

@item -m @var{machine}
@itemx -machine @var{machine}
ライブラリファイルが構築されるマシンの形式を指定します．@code{dlltool}に
は，構築のされ方に依存するデフォルト形式がありますが，このオプションで，
それに優先させることが可能です．これは通常，ARMプロセッサに対するDLLを作
成するときのみ役に立ち，DLLの内容は，実際にTHUMB(機械語)命令を使用して符
号化されます．

@item -a
@itemx --add-indirect
@code{dlltool}がエクスポートファイルを作成しているとき，エクスポート関数
がインポートライブラリを使用しないで参照できるように，セクションを加える
ことを指定します．たとえ，それが地獄を意味しようとも！

@item -U
@itemx --add-underscore
@code{dlltool}エクスポートファイルを作成しているとき，エクスポート関数の
名前にアンダースコアを前置することを指定します．

@item -k
@itemx --kill-at
@code{dlltool}エクスポートファイルを作成しているとき，文字列@samp{@@
<number>}を追加しないことを指定します．これらの数字は，序数と呼ばれ，DLL
では関数にアクセスする1つの方法を表示し，それ以外では名前で表示します．

@item -A
@itemx --add-stdcall-alias
@code{dlltool}がエクスポートファイルを作成しているとき，シンボルに
@samp{@@ <number>}を追加したものを，@samp{@@ <number>}なしでstdcallシン
ボルの別名を加えることを指定します．

@item -x
@itemx --no-idata4
@code{dlltool}エクスポートファイルとライブラリファイルを作成しているとき，
.idata4セクションを削除することを指定します．これは，あるオペレーティング
システムとの互換性のためです．

@item -c
@itemx --no-idata5
@code{dlltool}エクスポートファイルとライブラリファイルを作成しているとき，
.idata5セクションを削除することを指定します．これは，あるオペレーティング
システムとの互換性のためです．

@item -i
@itemx --interwork
@code{dlltool}が，生成しているライブラリファイルとエクスポートファイル内
のオブジェクトに，ARMとTHUMB間での相互動作をサポートするように印を付ける
ことを指定します．

@item -n
@itemx --nodelete
@code{dlltool}は，エクスポートファイルを作成するために使用した一時的なア
センブラファイルを保存します．このオプションが繰り返される場合，
@code{dlltool}は，ライブラリを作成するために使用する一時的なオブジェクト
ファイルも保存します．

@item -v
@itemx --verbose
@code{dlltool}は，行っていることを記述します．

@item -h
@itemx --help
コマンドラインオプションのリストを表示し終了します．

@item -V
@itemx --version
@code{dlltool}のバージョンナンバーを表示し終了します．
@end table


@node readelf
@chapter readelf

@cindex ELF file information
@kindex readelf

@smallexample
readelf [ -a | --all ] 
        [ -h | --file-header]
        [ -l | --program-headers | --segments]
        [ -S | --section-headers | --sections]
        [ -e | --headers]
        [ -s | --syms | --symbols]
        [ -n | --notes]
        [ -r | --relocs]
        [ -d | --dynamic]
        [ -V | --version-info]
        [ -D | --use-dynamic]
        [ -x <number> | --hex-dump=<number>]
        [ -w[liapr] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges]]
        [      --histogram]
        [ -v | --version]
        [ -H | --help]
        @var{elffile}@dots{}
@end smallexample

@code{readelf}は，1つ以上のELF書式のオブジェクトファイルの情報を表示しま
す．オプションで表示する特定の情報を制御します．

@var{elffile}@dots{}は調査するオブジェクトファイルです．現在は，
@code{readelf}は，アーカイブの調査のサポートも，64ビットELFファイルのサ
ポートもありません．

ここで交互に表示されている，オプションの長い形式と短い形式は等価です．
@samp{-v}または@samp{-H}の他に，少なくとも1つのオプションを与える必要が
あります．

@table @code
@item -a
@itemx --all
@samp{--file-header}，@samp{--program-headers}，@samp{--sections}，
@samp{--symbols}，@samp{--relocs}，@samp{--dynamic}，@samp{--notes}，そ
して@samp{--version-info}を指定することと等価です．

@item -h
@itemx --file-header
@cindex ELF file header information
ファイルの最初のELFヘッダ内に含まれる情報を表示します．

@item -l
@itemx --program-headers
@itemx --segments
@cindex ELF program header information
@cindex ELF segment information
ファイルのセグメントヘッダ内に含まれる情報を，存在する場合は表示します．

@item -S
@itemx --sections
@itemx --section-headers
@cindex ELF section information
ファイルのセクションヘッダ内に含まれる情報を，存在する場合は表示します．

@item -s
@itemx --symbols
@itemx --syms
@cindex ELF symbol table information
ファイルのシンボルテーブルセクション内の項目を，存在する場合は表示します．

@item -e
@itemx --headers
ファイルのすべてのヘッダを表示します．@samp{-h -l -S}と等価です．

@item -n
@itemx --notes
@cindex ELF core notes
NOTEセグメントの内容を，存在する場合は表示します．

@item -r
@itemx --relocs
@cindex ELF reloc information
ファイルのリロケーションセクションの内容を，存在する場合は表示します．

@item -d
@itemx --dynamic
@cindex ELF dynamic section information
ファイルの動的セクションの内容を，存在する場合は表示します．

@item -V
@itemx --version-info
@cindex ELF version sections informations
ファイルのバージョンセクションの内容を，存在する場合は表示します．

@item -D
@itemx --use-dynamic
シンボルを表示しているとき，@code{readelf}はこのオプションで，ファイルの
シンボルセクションではなく，動的セクションのシンボルテーブルを使用します．

@item -x <number>
@itemx --hex-dump=<number>
16進のダンプとして示されているセクションの内容を表示します．

@item -w[liapr]
@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]
ファイルのデバッグセクションの内容を，存在する場合は表示します．オプショ
ン文字や単語の1つがスイッチに続く場合，これらで指定されたセクションで見
つかるデータのみダンプされます．

@item --histogram
シンボルテーブルの内容を表示するとき，バケットリスト長のヒストグラムを表
示します．

@item -v
@itemx --version
@code{readelf}のバージョンナンバーを表示します．

@item -H
@itemx --help
@code{readelf}が理解するコマンドラインオプションを表示します．
@end table


@node Selecting The Target System
@chapter ターゲットシステムの選択

ターゲットシステムの3つの側面を，@sc{gnu}バイナリファイルユーティリティ
に，それぞれ異なる方法で指定することが可能です．

@itemize @bullet
@item
ターゲット
@item
アーキテクチャ
@item
リンカエミュレーション(リンカのみ適用されます)
@end itemize

以下の概要では，変数を指定する方法のリストは，優先順位が下がる順序となっ
ています．方法は，最初のものがそれ以降のものに優先するようにリストアップ
されています．

有効な値をリストアップするコマンドは，実行しているプログラムに設定されて
いる値のみリストアップします．それらが@samp{--enable-targets=all}で設定
されている場合，ほとんどの利用可能なコマンドはリストアップされますが，い
くつかはそうなりません．ターゲットには@dfn{native} (ターゲットシステムと
同じ形式のホスト) に設定することしかできないものもあるので，すべてのもの
が一度に設定できるわけではありません．

@menu
* Target Selection::            
* Architecture Selection::      
* Linker Emulation Selection::  
@end menu

@node Target Selection
@section ターゲットの選択

@dfn{ターゲット}はオブジェクトファイルの書式です．与えられたターゲットは，
複数のアーキテクチャでサポートされるかもしれません(@pxref{Architecture
Selection})．ターゲットの選択は，オペレーティングシステムやアーキテクチャ
によっても，変化があるかもしれません．

有効なターゲットの値をリストアップするコマンドは，@samp{objdump -i}です
(出力の最初の列は，関連した情報を含みます)．

サンプルの値は以下のとおりです．@samp{a.out-hp300bsd}，
@samp{ecoff-littlemips}，@samp{a.out-sunos-big}．

3項目の設定を使用してターゲットを指定することもできます．これは，ターゲッ
トを指定するために@file{configure}に渡す名前と同種です．3項目の設定を引
数として使用するとき，それを完全に標準のものにする必要があります．ソース
に含まれるシェルスクリプト@file{config.sub}を実行することで，3項目の標準
的なバージョンを知ることが可能です．

サンプルの値は以下のとおりです．@samp{m68k-hp-bsd}，
@samp{mips-dec-ultrix}，@samp{sparc-sun-sunos}．

@subheading @code{objdump}のターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-b}または@samp{--target}

@item
環境変数@code{GNUTARGET}

@item
入力ファイルから推測
@end enumerate

@subheading @code{objcopy}と@code{strip}の入力ターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-I}または@samp{--input-target}，もしくは，
@samp{-F}または@samp{--target}

@item
環境変数@code{GNUTARGET}

@item
入力ファイルから推測
@end enumerate

@subheading @code{objcopy}と@code{strip}の出力ターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-O}または@samp{--output-target}，もしく
は，@samp{-F}または@samp{--target}

@item
入力ターゲット(上記の``@code{objcopy}と@code{strip}の入力ターゲット''を
参照してください)

@item
環境変数@code{GNUTARGET}

@item
入力ファイルから推測
@end enumerate

@subheading @code{nm}，@code{size}，そして@code{strings}のターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{--target}

@item
環境変数@code{GNUTARGET}

@item
入力ファイルから推測
@end enumerate

@subheading リンカ入力ターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-b}または@samp{--format}
(@pxref{Options,,Options,ld.info,Using LD})

@item
スクリプトコマンド@code{TARGET} (@pxref{Option Commands,,Option
Commands,ld.info,Using LD})

@item
環境変数@code{GNUTARGET} (@pxref{Environment,,Environment,ld.info,Using
LD})

@item
リンカエミュレーションで選択されたデフォルトターゲット
(@pxref{Linker Emulation Selection})
@end enumerate

@subheading リンカ出力ターゲット

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-oformat}
(@pxref{Options,,Options,ld.info,Using LD})

@item
スクリプトコマンド@code{OUTPUT_FORMAT}
(@pxref{Option Commands,,Option Commands,ld.info,Using LD})

@item
リンカ入力ターゲット(上記の``リンカ入力ターゲット''を参照してください)
@end enumerate

@node Architecture Selection
@section アーキテクチャの選択

@dfn{アーキテクチャ}は，オブジェクトファイルを実行する@sc{cpu}の型式です．
その名前は，コロンを含めることができ，それは特定の@sc{cpu}とプロセッサファ
ミリーの名前を分けます．

有効なアーキテクチャの値をリストアップするコマンドは，@samp{objdump -i}
です(2番目のコロンは，関連する情報を含みます)

サンプルの値です．@samp{m68k:68020}，@samp{mips:3000}，@samp{sparc}．

@subheading @code{objdump}アーキテクチャ

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-m}または@samp{--architecture}
@item
入力ファイルから推測
@end enumerate

@subheading @code{objcopy}，@code{nm}，@code{size}，@code{strings}のアーキテクチャ

指定方法：

@enumerate
@item
入力ファイルから推測
@end enumerate

@subheading リンカの入力アーキテクチャ

指定方法：

@enumerate
@item
入力ファイルから推測
@end enumerate

@subheading リンカの出力アーキテクチャ

指定方法：

@enumerate
@item
スクリプトコマンド@code{OUTPUT_ARCH}
(@pxref{Option Commands,,Option Commands,ld.info,Using LD})

@item
リンカの出力ターゲットのデフォルトアーキテクチャ(@pxref{Target
Selection})
@end enumerate


@node Linker Emulation Selection
@section リンカエミュレーションの選択

リンカ@dfn{エミュレーション}は，リンカの``個性''で，それはターゲットシス
テムのそれ以外の側面に対するリンカのデフォルト値を与えます．特に以下から
成り立ちます．

@itemize @bullet
@item
リンカスクリプト

@item
ターゲット

@item
いくつかのターゲットが要求する特別なことを行うために，リンクプロセスの特
定のステージで実行されるいくつかの``フック''関数．
@end itemize

有効なリンカエミュレーションの値をリストアップするコマンドは，@samp{ld
-V}です．

サンプルの値は以下のとおりです．@samp{hp300bsd}，@samp{mipslit}，
@samp{sun4}．

指定方法：

@enumerate
@item
コマンドラインオプション：@samp{-m}
(@pxref{Options,,Options,ld.info,Using LD})

@item
環境変数@code{LDEMULATION}

@item
@file{Makefile}でコンパイル時に組み込まれた@code{DEFAULT_EMULATION}で，
それは@file{config/@var{target}.mt}の@code{EMUL}に由来する．
@end enumerate


@node Reporting Bugs
@chapter バグの報告
@cindex bugs
@cindex reporting bugs

バグの報告は，バイナリユーティリティを確実にする上で重要な役割を果たしま
す．

バグを報告することで，問題の解決をもたらすかもしれませんが，そうでないか
もしれません．しかし，いずれにせよ，バグの報告の主な機能は，バイナリユー
ティリティの次のバージョンの仕事をより良くすることで，全てのコミュニティ
に役立つことです．バグの報告は，管理者に対する貢献になります．

バグの報告を目的に役立つようにするため，バグの修正が可能となるような情報
を含める必要があります．

@menu
* Bug Criteria::                Have you found a bug?
* Bug Reporting::               How to report bugs
@end menu

@node Bug Criteria
@section バグを見つけましたか？
@cindex bug criteria

バグを見つけたかどうか確実でない場合，ここに指針がいくつかあります．

@itemize @bullet
@cindex fatal signal
@cindex crash
@item
バイナリユーティリティが，入力によらず，致命的なシグナルを得た場合，それ
はバグです．信頼できるユーティリティは決して壊れません．

@cindex error on valid input
@item
バイナリユーティリティが有効な入力に対しエラーメッセージを生成した場合，
それはバグです．

@item
バイナリユーティリティの経験豊かなユーザの場合，改良のための提案はいつで
も歓迎します．
@end itemize

@node Bug Reporting
@section バグの報告の仕方
@cindex bug reports
@cindex bugs, reporting

多くの企業と個人が，@sc{gnu}製品に対してサポートを提供しています．サポー
ト組織からバイナリユーティリティを得ている場合，われわれは，その組織に最
初に連絡するように勧めます．

@sc{gnu} Emacs配布物のファイル@file{etc/SERVICE}で，サポートしている多く
の会社と個人へ連絡する情報を見つけることが可能です．

いずれにせよ，我々は，バイナリユーティリティに対するバグの報告を
@samp{bug-gnu-utils@@gnu.org}にも送ることを勧めます．

バグの報告の有効な基本原理は以下のとおりです．@strong{すべての事実を報告
する}．事実を述べるべきか削除すべきかよく分からない場合，それを述べてく
ださい！

人々はよく，問題を発生させるものを知っていて，重要でない詳細もあると思う
ため，事実を省略します．このため，使用したファイル名は重要でないと考えた
とします．さて，おそらくそうでしょうが，確実ではありません．おそらくバグ
は，パス名がメモリに保存されている場所から取り出すために生じる，偶然のメ
モリ参照です．おそらく，パス名が異なっている場合，その場所の内容は，バグ
にもかかわらず正しいことを行うユーティリティを馬鹿にするでしょう．安全に
動作するようにし，特定の完全な例を与えてください．それは，最も簡単に行え
最も役に立ちます．

バグの報告の目的が，新しいものの場合は，バグの修正を可能にすることだとい
うことを覚えておいてください．そのため，以前にバグが報告されていないこと
を常に前提にして，バグの報告を書いてください．

ときどき，概略だけのわずかな事実を与え，``これはベルを鳴しますか？ (Does
this ring a bell?)と尋ねる人がいます．これらのバグの報告は役に立たず，正
しくバグの報告をするよう送付者に小言を言うために，@emph{それに対する返答
を廃棄するように}ということを，我々は全員に勧めます．

バグの修正を可能とするため，これらすべてのものを含めるべきです．

@itemize @bullet
@item
ユーティリティのバージョン．それぞれのバージョンは，@samp{--version}引数
で解した場合，それを報告します．

これがなければ，我々はバイナリユーティリティの現在のバージョンにバグを探
す場所があるかどうか分かりません．

@item
@code{BFD}ライブラリを作るために与えたパッチを含む，ソースに適用したあら
ゆるパッチ．

@item
使用しているマシンの形式と，オペレーティングシステム名とバージョンナン
バー．

@item
ユーティリティをコンパイルするとき使用したコンパイラ(とバージョン)---例
えば，``@code{gcc-2.7}''．

@item
バグを観測するためにユーティリティに与えたコマンド引数．重要なものを省略
しないことを保証するため，すべてをリストアップしてください．Makefile (ま
たはmakeの出力)のコピーで十分です．

我々が引数を推測しようとした場合，おそらく間違ったものを推測し，バグに遭
遇しない可能性があります．

@item
完全な入力ファイルまたは入力ファイルの組で，実際のオブジェクトファイルを
送ることは，最も役に立ち，バグがあればuuencodeしてください．ユーティリティ
がオブジェクトファイルやファイルを読み込んでいる場合，それをメールシステ
ムに通過させる場合必要です．@samp{bug-gnu-utils@@gnu.org}はメーリングリ
ストなので，非常に大きなファイルをそこに送ることは避けるよう注意してくだ
さい．ファイルをanonymous FTPで利用可能にするとOKです．

ソースファイルが@sc{gnu}プログラム(例えば，@code{gcc}，@code{gas}，そし
て/または，@sc{gnu} @code{ld})を使用して生成されたことが明らかな場合，オ
ブジェクトファイルよりソースファイルを送ることでOKです．この場合，
@code{gcc}や，それらオブジェクトファイルを生成するために使用したあらゆる
もののバージョンを正確に確実に伝えてください．@code{gcc}や，それらあらゆ
るもののコンフィグレーションの方法も伝えてください．

@item
適当でないと確信することになった動作の記述．例えば，``致命的なシグナルを
得た''．

もちろん，バグはユーティリティが致命的なシグナルを得た場合，我々はきっと
そこに注目します．しかし，バグが不適切な出力の場合，我々は，明らかに間違っ
ていない限り注目しないかもしれません．我々が間違う機会を与えない方がよい
でしょう．

遭遇した問題が致命的なシグナルの場合でさえ，それを明確に伝えるべきです．
ユーティリティのコピーが同期化されていない，または，システムのCライブラ
リのバグに遭遇したといった，おそらく何か変なことが生じています．(それは
発生したのです！) コピーは壊れていて，我々のはそうでないかもしれません．
壊れることを期待していると我々に告げ，我々が壊すことに失敗した場合，我々
にバグは発生しないことを知るでしょう．壊れることを期待していると我々に告
げない場合，我々は自分達の観測から全く結論が得られないでしょう．

@item
ソースの変更を提案したい場合，@samp{-u}，@samp{-c}，または@samp{-p}オプ
ションを用いた@code{diff}で生成したような，コンテクストのdiffを我々に送っ
てください．古いファイルから新しいファイルへのdiffを，常に送ってください．
@code{ld}のソースについて何か議論したい場合，行番号ではなくコンテクスト
で参照してください．

我々の開発ソース内の行番号は，あなた方のソースと一致しないでしょう．行番
号は我々に全く情報をもたらしません．
@end itemize

ここに不要なものがあります．

@itemize @bullet
@item
バグの回りの説明．

バグに遭遇した人は，バグを無くす入力ファイルへの変更と，効果がない変更を
調査するのに多くの時間を費やすことが多いです．

我々がバグを見つける方法は，単純な例をブレークポイントを用いたデバッガで
実行することで，それは一連の例から推測することではないので，これは役に立
たないことが多いです．我々は，他のことをすることを勧めます．

もちろん，報告するためのオリジナルの例@emph{ではなく}，それより簡単な例
が見つかった場合，それはとても役立ちます．出力ファイルのエラーは，見つけ
るのがより簡単，デバッガの実行に余り時間がかからない，等々です．

しかし，簡略化は重要ではありません．こうしたくない場合，いい加減にバグを
報告し，使用したテストケースを全て我々に送ってください．

@item
バグに対するパッチ．

バグに対するパッチは，それがいいものであれば我々は助かります．しかし，テ
ストケースのような，我々全員がパッチを必要だと推測するのに必要な情報を省
略しないでください．我々は，パッチに関する問題が分かり，別の方法で問題を
修正することに決めるかもしれませんし，全く理解できないかも知れません．

バイナリユーティリティと同じくらい複雑なプログラムを用いた場合，コードを
通じて，プログラムに特定の手順をたどらせる例を構成することは，とても難し
いことです．例を我々に送らない場合，我々はそれを構成することができないの
で，我々はバグが修正されたかどうか検証することができません．

そして，あなたが修正しようとしたバグや，パッチの改良点を我々が理解できな
い場合や，我々はそれをインストールしないでしょう．テストケースは我々の理
解を助けます．

@item
バグやそれが依存するものに関する推測．

そのような推測は，通常正しくありません．事実を見つけるために最初にデバッ
ガを使用しなければ，我々でも正しく推測できません．
@end itemize


@node Index
@unnumbered 索引

@printindex cp

@contents
@bye
