Node:Top, Next:, Up:(dir)

はじめに

この短いマニュアルは,GNUバイナリユーティリティ(バージョン 2.11全体)に対する予備的な文章を含みます.

この文章はGNU Free Documentation Licenseの条件の下で配布されます.ライセ ンスのコピーは,"GNU Free Documentation License"と名付けられたセクション に含まれています.


Node:ar, Next:, Previous:Top, Up:Top

ar

ar [-]p[mod [relpos] [count]] archive [member...]
ar -M [ <mri-script ]

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

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

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

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

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

この索引表をリストアップするため,nm -snm --print-armap が使用可能です.アーカイブに表がない場合,ranlibと呼ばれる arの別の形式が,表を加えるために使用可能です.

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


Node:ar cmdline, Next:, Up:ar

コマンドラインでのarの制御

ar [-X32_64] [-]p[mod [relpos] [count]] archive [member...]

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

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

GNU arでは,最初のコマンドライン引数内で,処理コードp と修飾フラグmodを,あらゆる順序で混合させることが可能です.

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

pキー文字は,実行する処理を指定します.それは以下のいずれでも可能 ですが,その中の1つだけを指定する必要があります.

d
アーカイブからモジュールを削除します.削除するモジュール名は, member...として指定してください.削除するファイルを指定してい ない場合,アーカイブはそのままです.

v修飾子を指定した場合,arは削除するそれぞれのモジュールを リストアップします.

m
アーカイブ内でメンバーを移動するためにこの処理を使用してください.

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

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

p
アーカイブの指定されたメンバーを標準出力ファイルに出力します. v修飾子が指定された場合,その内容のコピーの前にメンバー名を標準出 力に表示します.

member引数を指定していない場合,アーカイブのすべてのファイルが出力 されます.

q
すばやく追加します.歴史的に,ファイルmember...archiveの終りに,置換についての調査をせずに加えます.

修飾子ab,そしてiは,このオプションに効果は ありません.新しいメンバーは常にアーカイブの終りに位置します.

修飾子vで,arは追加されるそれぞれのファイルをリストアップ します.

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

しかし,あまりに多くの異なるシステムで,高速追加が索引を再構築することを 仮定するので,GNU arは,qrの同義語として実装 されています.

r
ファイルmember...archiveに挿入します(置換を用い ます).この処理は,加えられるものと名前が一致した場合,既存のメンバーが 削除される点で,qと異なります.

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

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

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

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

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

同じ名前の(fieという名の)ファイルが,(b.aをいう名の)アーカ イブに1つ以上ある場合,ar t b.a fieは最初のインスタンスのみリスト アップします.すべてを見るために,完全なリストを請求する必要があります-- この例ではar t b.aです.

x
(memberという名の)メンバーをアーカイブから抽出します. arが抽出しているそれぞれの名前をリストアップするように,この処理 でv修飾子を使用することが可能です.

memberを指定しない場合,アーカイブのすべてのファイルが抽出されます.

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

a
新しいファイルを,アーカイブの既存のメンバーのに追加します.修 飾子aを使用した場合,archive指定の前に,既存のアーカイブメ ンバー名をrelpos引数におく必要があります.
b
新しいファイルをアーカイブの既存のメンバーのに加えます.修飾子 bを使用した場合,archive指定の前に,既存のアーカイブメンバー 名をrelpos引数におく必要があります.(iと同じです).
c
アーカイブを作成します.更新の要求をしたとき,指定された archiveが存在する場合でも,それは常に作成されます.しかし,この修 飾子を使用して,作成することを期待するということを前もって指定しない場合, 警告が生じます.
f
アーカイブで名前を切り詰めます.GNU arは,通常あらゆる長さの ファイル名を許可します.これは,いくつかのシステムのネイティブar プログラムと互換性のないアーカイブを作成させます.これが懸念される場合, アーカイブに配置するときファイル名を切り詰めるために,f修飾子を使 用することが可能です.
i
新しいファイルをアーカイブの既存のメンバーの前に挿入します.修飾 子iを使用する場合,既存のアーカイブメンバの名前は,relpos引 数として,archive指定の前におく必要があります.(bと同じです).
l
この修飾子は受け入れられますが,使用されません.
N
countパラメータを使用します.これは,同じ名前のアーカイブに,複数 の項目がある場合に使用されます.アーカイブから与えられた名前の,インスタ ンスのcountを抽出または削除します.
o
メンバーが既存のとき,そのオリジナルの日付を保持します.この修飾 子を指定しない場合,アーカイブから抽出されるファイルは,抽出した時間でタ イムスタンプがつきます.
P
アーカイブの名前の一致にフルパス名を使用します.GNU arはフル パス名を持つアーカイブ(そのようなアーカイブは,POSIXで問題ない)を作成で きませんが,他のアーカイブを作成するものは可能です.このオプションで, GNU arは完全なパス名を使用しているファイル名に一致し,それで, 他のツールで作成されたアーカイブから単一のファイルを抽出するとき便利にな ります.
s
オブジェクトファイルの索引をアーカイブに書き出したり,他の変更がアーカイ ブに対してなされない場合でも,既存のものを更新したりします.この修飾子フ ラグは,あらゆるオプションとともに,または単独で使用可能です.アーカイブ でar sを実行することは,ranlibの実行と等価です.
S
アーカイブシンボル表を生成しません.これで何段階か使用する大きなライブラ リの構築を高速にできます.結果として出力されるアーカイブは,リンカで使用 できません.シンボル表を構築するために,arの最後の実行でS 修飾子を省略したり,アーカイブでranlibを実行する必要があります.
u
通常,ar r...でリストアップされているすべてのファイルをアーカ イブに挿入します.リストアップしたもので,同じ名前の既存のメンバーより新 しいファイルのみ挿入したい場合,この修飾子を使用してください. u修飾子は,処理r(置換)に対してのみ可能です.特に,タイムス タンプの調査が処理qでの速度の利点を損なうため,quと組み合 わせることはできません.
v
この修飾子は,処理の冗長バージョンを要求します.多くのオペレーショ ンは,修飾子vが追加されているとき,処理しているファイル名のような 追加の情報を表示します.
V
この修飾子はarのバージョンナンバーを表示します.

arは,AIXに対する互換性のため,-X32_64と綴られた最初のオプ ションを無視します.このオプション空生成される動作は,GNU arのデ フォルトです.arは,その他のあらゆる-Xオプションをサポート しません.特に,AIX arではデフォルトとなる-X32はサポートし ません.


Node:ar scripts, Previous:ar cmdline, Up:ar

スクリプトを用いたarの制御

ar -M [ <script ]

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

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

arコマンド言語の構文は簡単です.

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

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

ADDLIB archive
ADDLIB archive (module, module, ... module)
archiveのすべての内容(または,指定されている場合,アーカイブのそれ ぞれの指名されたmodule)を,現在のアーカイブに追加します.

OPENCREATEを前もって使用することが要求されます.

ADDMOD member, member, ... member
それぞれの指名されたmemberを,モジュールとして,現在のアーカイブに 追加します.

OPENCREATEを前もって使用することが要求されます.

CLEAR
現在のアーカイブの内容を削除し,最後にSAVEされてからのあらゆる処 理の効果を無効にします.現在のアーカイブが指定されていない場合でも実行可 能です(効果はありません).
CREATE archive
アーカイブを作成し,それを現在のアーカイブにします(その他,多くのコマン ドに対し必要です).新しいアーカイブは,一時的な名前で作成されます.それ は,SAVEを使用するまで,archiveとして実際に保存されません. 既存のアーカイブに優先可能です.同様に,指名されている既存の archiveファイルの内容は,SAVEまで破壊されません.
DELETE module, module, ... module
それぞれのリストアップされているmoduleを,現在のアーカイブから削除 します.ar -d archive module ... moduleと同 じです.

OPENCREATEを前もって使用することが要求されます.

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

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

END
arを,成功に完了したことを示す終了コード0で終了します.こ のコマンドは出力ファイルを保存しません.最後のSAVEコマンド以降に 現在のアーカイブを変更した場合.これらの変更は失われます.
EXTRACT module, module, ... module
それぞれ指名されたmoduleを,現在のアーカイブから抽出し,それらを現 在のディレクトリに個別のファイルとして書き出します.ar -x archive module...と同じです.

OPENCREATEを前もって使用することが要求されます.

LIST
現在のアーカイブのすべての内容を,VERBOSEの状態に関わらず, "verbose"形式で表示します.効果はar tv archiveに似ていま す.(この単独コマンドはGNU ar拡張で,MRI互換に提供されている ものではありません).

OPENCREATEを前もって使用することが要求されます.

OPEN archive
現在のアーカイブとして使用するために,既存のアーカイブを開きます(他の多 くのコマンドに対し必要です).それに続くコマンドの結果からのあらゆる変更 は,次にSAVEが使用されるまで,archiveに対し実際に効果はあり ません.
REPLACE module, module, ... module
現在のアーカイブで,それぞれの(REPLACEの引数で指名された)既存の moduleを,現在のワーキングディレクトリのファイルから置換します.エ ラー無くこのコマンドを実行するために,ファイルと現在のアーカイブのモジュー ルの両方が存在する必要があります.

OPENCREATEを前もって使用することが要求されます.

VERBOSE
DIRECTORYからの出力を管理している内部フラグを切り替えます.フラグ がオンのとき,DIRECTORY出力は,ar -tv ...からの出力に 一致します.
SAVE
現在のアーカイブへの変更をコミットし,それを,最後のCREATEOPENコマンドで指定された名前のファイルに,実際に保存します.

OPENCREATEを前もって使用することが要求されます.


Node:nm, Next:, Previous:ar, Up:Top

nm

nm [ -a | --debug-syms ]  [ -g | --extern-only ]
   [ -B ]  [ -C | --demangle[=style] ] [ -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 radix | --radix=radix ] [ -P | --portability ]
   [ --target=bfdname ] [ -f format | --format=format ]
   [ --defined-only ] [-l | --line-numbers ]  [ --no-demangle ]
   [ -V | --version ]  [ -X 32_64 ]  [ --help ]  [ objfile... ]

GNU nmは,オブジェクトファイルobjfile...のシンボル をリストアップします.オブジェクトファイルが引数として与えられていない場 合,nmは,ファイルa.outと仮定します.

それぞれのシンボルに対し,nmは以下を表示します.

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

-A
-o
--print-file-name
それぞれのシンボルに,入力ファイルを一度だけ識別できるようにするのではな く,それが見つかる入力ファイル(またはアーカイブメンバー)の名前をそのすべ てのシンボルの前に配置します.
-a
--debug-syms
すべてのシンボルで,デバッグ専用のシンボルさえ表示します.通常はリストアッ プされません.
-B
(MIPS nmとの互換性のための)--format=bsdと同じです.
-C
--demangle[=style]
低レベルのシンボル名をユーザレベルの名前に復号(demangle)します.シ ステムが前置する,最初のあらゆるアンダースコアを削除する他,これはC++関 数名を読みやすくします.異なるコンパイラでは,mangle形式が異なります.追 加のdemangle形式の引数は,コンパイラに対する適切なdemangle形式を選択する ために使用可能です.demangleの情報は,See c++filt.
--no-demangle
低レベルのシンボル名をdemangleしません.これはデフォルトです.
-D
--dynamic
通常のシンボルではなく,動的なシンボルを表示します.これは,共有ライブラ リの特定の形式のような,動的オブジェクトに対してのみ意味があります.
-f format
--format=format
出力書式formatを使用し,それは,bsdsysv,または posixが可能です.デフォルトはbsdです.formatの最初の 文字のみ識別されます.それは大文字または小文字が可能です.
-g
--extern-only
外部シンボルのみ表示します.
-l
--line-numbers
それぞれのシンボルに対し,ファイル名と行番号を見つけようとするため,デバッ グ情報を使用します.定義済シンボルに対し,シンボルのアドレスの行番号を探 します.未定義のシンボルに対し,シンボルを参照するリロケーションエントリ の行番号を探します.行番号の情報が見つかる場合,それを他のシンボル情報の 後に出力します.
-n
-v
--numeric-sort
シンボルを,名前のアルファベット順ではなく,そのアドレスで数値的に並べ替 えます.
-p
--no-sort
シンボルの並べ替えを全く行いません.それらを見つかった順番で出力します.
-P
--portability
デフォルトの書式の代わりに,POSIX.2標準出力形式を使用します.-f posixと同じです.
-s
--print-armap
アーカイブメンバーからシンボルをリストアップするとき,索引を含めます.名 前に対する定義を含むモジュールの(arranlibでアーカイブに 保存されている)マップです.
-r
--reverse-sort
並べ替えの順序を(数値的またはアルファベット順によらず)逆にします.最後の ものを最初にします.
--size-sort
シンボルを大きさで並べ替えます.大きさは,そのシンボル値と,次に現れるよ り大きい値を持つシンボル値の差として計算されます.シンボル値ではなく,そ の大きさが出力されます.
-t radix
--radix=radix
radixをシンボル値を出力する基数として使用します.それは,10進数の d,8進数のo,または16進数のxにする必要があります.
--target=bfdname
システムのデフォルト書式以外のオブジェクトコードを指定します.詳細は, See Target Selection.
-u
--undefined-only
未定義のシンボルのみ表示します(それらはそれぞれのオブジェクトファイルの 外部にあります).
--defined-only
それぞれのオブジェクトファイルの定義済シンボルのみ表示します.
-V
--version
nmのバージョンナンバーを表示し終了します.
-X
このオプションは,AIXバージョンのnmへの互換性のため無視されます. それは,32_64とする必要がある,1つのパラメータを持ちます.AIX nmのデフォルトモードは-X 32に対応し,それはGNU nmではサポートされていません.
--help
nmのオプションの概要を表示し終了します.


Node:objcopy, Next:, Previous:nm, Up:Top

objcopy

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

GNU objcopyユーティリティは,オブジェクトファイルの内容を別 のファイルにコピーします.objcopyはオブジェクトファイルの読み書き にGNU BFDを使用します.それは,目的のオブジェクトファイルに, 元となるスオブジェクトファイルと異なる書式で書き出すことが可能です. objcopyの正確な動作は,コマンドラインオプションで制御されます. objcopyは,完全にリンクされているファイルを,2つの書式の間でコピー 可能であるべきだということに注意してください.しかし,リロケート可能なオ ブジェクトファイルを2つの書式の間でコピーすることは,期待したようには動 作しません.

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

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

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

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

注意 - objcopyは,入力ファイルのエンディアンを変更することができ ません.入力書式にエンディアンがある場合,(持たない書式もあります), objcopyは,入力ファイルを同じエンディアンを持つ,またはエンディア ンを持たない書式のファイルにのみコピー可能です.

infile
outfile
それぞれ入力と出力のファイルです.outfileを指定しない場合, objcopyは結果的に破壊される一時ファイルを作成し,infileに名 前を変更します.
-I bfdname
--input-target=bfdname
ソースファイルのオブジェクトの書式を,それを導き出すのではなく, bfdnameと考えます.詳細は,See Target Selection.
-O bfdname
--output-target=bfdname
出力ファイルを,オブジェクトファイルの書式bfdnameを用いて書き出し ます.詳細は,See Target Selection.
-F bfdname
--target=bfdname
入出力両方のファイルに対し,オブジェクトの書式としてbfdnameを使 用します.すなわち,単純にソースから目的物に,変換せずにデータを転送しま す.詳細は,See Target Selection.
-j sectionname
--only-section=sectionname
指名されたセクションのみ,入力ファイルから出力ファイルへコピーします.こ のオプションは,1回以上与えることが可能です.このオプションを不適切に使 用すると,出力ファイルが使用不可能になることに注意してください.
-R sectionname
--remove-section=sectionname
指名されている,あらゆるsectionnameセクションを出力ファイルから削 除します.このオプションは,1回以上与えることが可能です.このオプション を不適切に使用すると,出力ファイルが使用不可能になることに注意してくださ い.
-S
--strip-all
リロケーションとシンボルの情報を,ソースファイルからコピーしません.
-g
--strip-debug
デバッグシンボルをソースファイルからコピーしません.
--strip-unneeded
リロケーション処理に不要な,すべてのシンボルを削除します.
-K symbolname
--keep-symbol=symbolname
ソースファイルからシンボルsymbolnameのみコピーします.このオプショ ンは,1回以上与えることが可能です.
-N symbolname
--strip-symbol=symbolname
ソースファイルからシンボルsymbolnameをコピーしません.このオプショ ンは,1回以上与えることが可能です.
-L symbolname
--localize-symbol=symbolname
外部から見えないようにするため,シンボルsymbolnameをファイルでロー カルにします.このオプションは,1回以上与えることが可能です.
-W symbolname
--weaken-symbol=symbolname
シンボルsymbolnameを弱くします.このオプションは,1回以上与えるこ とが可能です.
-x
--discard-all
ソースファイルからグローバルでないシンボルをコピーしません.
-X
--discard-locals
コンパイラが生成したローカルなシンボルをコピーしません.(これらは通常, Lまたは.ではじまります.)
-b byte
--byte=byte
入力ファイルのbyteバイト毎のバイトのみ保持します(ヘッダデータは影 響されません).byteは,0からinterleave-1までの範囲が可能で, interleaveは,-i--interleaveオプションで与えられる, またはデフォルトの4になります.このオプションは,プログラマブルROM にファイルを作成するとき便利です.それは特に,srec出力ターゲット とともに使用されます.
-i interleave
--interleave=interleave
interleaveバイト毎に1つのみコピーします.-b--byteオ プションを用いてそのバイトを選択してください.デフォルトは4です. objcopyは,-b--byteを指定していない場合,このオプ ションを無視します.
-p
--preserve-dates
出力ファイルのアクセスと編集の日付を入力ファイルと同じに設定します.
--debugging
可能な場合,デバッグ情報を変換します.特定のデバッグ書式のみサポートされ ていて,そして,変換処理は時間がかかるため,これはデフォルトではありませ ん.
--gap-fill val
valを用いてセクション間のギャップを補充します.このオプションはセ クションのload address (LMA)に適用されます.それは,低いアドレス 1でセクションの大きさを増加し,そ して,valを用いて作成される余分な空間で補充することで動作します.
--pad-to address
Pad the output file up to the load address address. This is done by increasing the size of the last section. The extra space is filled in with the value specified by --gap-fill (default zero).

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

--set-start val
新しいファイルの開始アドレスをvalに設定します.すべてのオブジェク トファイル書式が,開始アドレスの設定をサポートするわけではありません.
--change-start incr
--adjust-start incr
開始アドレスをincrを加えることで変更します.すべてのオブジェクトファ イル書式が,開始アドレスの設定をサポートするわけではありません.
--change-addresses incr
--adjust-vma incr
開始アドレスのように,incrを加えることで,VMAとLMAアドレスを変更し ます.オブジェクトファイルの書式によっては,セクションアドレスを任意に変 更できないものもあります.これはセクションをリロケートしないことに注意し てください.セクションが特定のアドレスにロードされていることをプログラム が期待し,セクションが異なるアドレスにロードされるように変更するために, このオプションが使用された場合,プログラムは失敗するかもしれません.
--change-section-address section{=,+,-}val
--adjust-section-vma section{=,+,-}val
sectionで指名されたVMAアドレスとLMAアドレスの両方を設定または変更 します.=が使用された場合,セクションのアドレスは,valに設 定されます.それ以外の場合,valは,セクションアドレスに加えられる, またはそれから引かれます.上記の--change-addresses以下のコメント を参照してください.入力ファイルにsectionが存在しない場合, --no-change-warningsが使用されていない限り,警告が発せられます.
--change-section-lma section{=,+,-}val
指名されたsectionのLMAアドレスを設定または変更します.LMAアドレス は,プログラムロード時にセクションがメモリにロードされるアドレスです.通 常これはVMAと同じで,それは,プログラムの実行時のセクションのアドレスで すが,システムによっては,特にプログラムがROMに保存されるものでは,2つが 異なる可能性があります.=が使用されている場合,セクションのアドレ スは,valに設定されます.それ以外の場合,valはセクションアド レスに加えられる,またはそれから引かれます.上記の --change-addresses以下のコメントを参照してください.section が入力ファイルに存在しない場合,--no-change-warningsが使用されて いない限り,警告が発せられます.
--change-section-vma section{=,+,-}val
指名されたsectionのVMAアドレスを設定または変更します.VMAアドレス は,プログラムの実行を開始したときにセクションが位置するアドレスです.通 常これはLMAと同じで,それは,セクションがメモリにロードされるアドレスで すが,システムによっては,特にプログラムがROMに保存されるものでは,2つが 異なる可能性があります.=が使用されている場合,セクションのアドレ スは,valに設定されます.それ以外の場合,valはセクションアド レスに加えられる,またはそれから引かれます.上記の --change-addresses以下のコメントを参照してください.section が入力ファイルに存在しない場合,--no-change-warningsが使用されて いない限り,警告が発せられます.
--change-warnings
--adjust-warnings
--change-section-address--change-section-lma--change-section-vmaが使用されている場合で,指名されたセクション が存在しない場合,警告を発します.これはデフォルトです.
--no-change-warnings
--no-adjust-warnings
--change-section-address--change-section-lma--change-section-vmaが使用されている場合で,指名されたセクション が存在しない場合でも警告を発しません.
--set-section-flags section=flags
指名したセクションのフラグを設定します.flags引数は,カンマで分け られたフラグ名の文字列です.認識される名前は,alloccontentsloadnoloadreadonlycodedataromshare,そしてdebugで す.contentsフラグを内容のないセクションに対し設定可能ですが,内 容のあるセクションのcontentsフラグとしての意味がありません--その 代わりにセクションを削除します.すべてのフラグがすべてのオブジェクトファ イル書式に意味があるわけではありません.
--add-section sectionname=filename
ファイルをコピーしている間に,指名されたsectionnameの新しいセクショ ンを追加します.新しいセクションの内容はファイルfilenameからもたら されます.セクションの大きさは,ファイルのサイズになります.このオプショ ンは,任意の名前を持つセクションをサポート可能なファイル書式でのみ動作し ます.
--change-leading-char
オブジェクトファイル書式には,シンボルの開始時に特別な文字を使用するもの もあります.そのような文字で最もよくあるのはアンダースコアで,それはコン パイラがすべてのシンボルの前によく追加するものです.このオプションは, objcopyに,オブジェクトファイル書式を変換している間にすべてのシン ボルに前置される文字を変更するよう伝えます.オブジェクトファイル書式が同 じ前置文字を使用している場合,このオプションは効果がありません.それ以外 の場合,それは適切に,文字を加えたり,文字を削除したり,文字を変更したり します.
--remove-leading-char
グローバルシンボルの最初の文字が,オブジェクトファイル書式で使用されてい るシンボルに前置される特殊な文字の場合,その文字を削除します.そのような 文字で最もよくあるのはアンダースコアです.このオプションは,すべてのグロー バルシンボルから前置されるアンダースコアを削除します.シンボル名に対して 異なる規則を持つ,異なるファイル書式のオブジェクト同士をリンクしたい場合, これは役に立つはずです.これは--change-leading-charとは異なり,出 力ファイルのオブジェクトファイルの書式に依存せず,それは適切なときは常に シンボル名を変更します.
--srec-len=ival
srec出力でのみ意味があります.生成されているSrecordの最大長をival に設定します.この長さは,両方のアドレス,データ,そしてcrcフィールドを カバーします.
--srec-forceS3
srec出力でのみ意味があります.S1/S2レコードの生成を避け,S3のみのレコー ド書式を作成します.
--redefine-sym old=new
シンボル名をoldからnewに変更します.ソースを持っていない2つ のものを一緒にリンクしようとし,名前の衝突があるとき便利です.
--weaken
ファイルのすべてのグローバルシンボルを弱くします.リンカに対し-R オプションを使用した,他のオブジェクトに対しリンクするオブジェクトを構築 するとき,これは便利です.
-V
--version
objcopyのバージョンナンバーを表示します.
-v
--verbose
冗長な出力です.修正されたすべてのオブジェクトファイルをリストアップしま す.アーカイブの場合,objcopy -vは,アーカイブのすべてのメンバー をリストアップします.
--help
objcopyへのオプションの概要を表示します.


Node:objdump, Next:, Previous:objcopy, Up:Top

objdump

objdump [ -a | --archive-headers ]
        [ -b bfdname | --target=bfdname ]
        [ -C | --demangle[=style] ]
        [ -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 section | --section=section ]
        [ -l | --line-numbers ]
        [ -S | --source ]
        [ -m machine | --architecture=machine ]
        [ -M options | --disassembler-options=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=address ]
        [ --stop-address=address ]
        [ --prefix-addresses]
        [ --[no-]show-raw-insn ]
        [ --adjust-vma=offset ]
        [ -V | --version ]
        [ -H | --help ]
        objfile...

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

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

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

-a
--archive-header
objfileファイルがすべてアーカイブの場合,アーカイブヘッダ情報を表 示します(書式はls -lに似ています).ar tvを用いてリストアッ プ可能な情報に加え,objdump -aは,それぞれのアーカイブのメンバー のオブジェクトファイルの書式を表示します.
--adjust-vma=offset
情報をダンプしているとき,最初に,すべてのセクションアドレスに offsetを加えます.これは,セクションアドレスがシンボルテーブルに対 応していない場合便利で,それは,a.outのようなセクションアドレスが 存在できない書式を使用しているとき,セクションを特定のアドレスに配置する とき発生します.
-b bfdname
--target=bfdname
オブジェクトファイルに対するオブジェクトコードの書式をbfdnameに指 定します.このオプションは不要かもしれません.objdumpは,自動的に 多くの書式を認識することが可能です.

例えば,以下のようにします.

objdump -b oasys -m vax -h fu.o

それは,fu.oのセクションヘッダ(-h)からの情報の概要を表示し, それは特に,Oasysコンパイラで生成される書式のVAXオブジェクトファイルとし て認識(-m)されます.-iオプションを用いて利用可能な書式をリ ストアップ可能です.詳細は,See Target Selection.

-C
--demangle[=style]
低レベルのシンボル名をユーザレベルの名前に復号(demangle)します.シ ステムによって前置される,最初にあるあらゆるアンダースコアを削除するだけ でなく.これはC++関数名を可読にします.異なるコンパイラでは,mangle形式 が異なります.追加のdemangle形式の引数は,コンパイラに対する適切な demangle形式を選択するために使用可能です.demangleの情報は, See c++filt.
-G
--debugging
デバッグ情報を表示します.これは,ファイルに保存されているデバッグ情報の 解析を試み,Cのような構文を使用してそれを出力します.デバッグ情報の特定 の形式のみ実装されています.
-d
--disassemble
objfileから,機械語命令に対するアセンブラニーモニックを表示します. このオプションは,(機械語)命令を含むことを期待されるそれらのセクションを, 逆アセンブルするだけです.
-D
--disassemble-all
-dに似ていますが,(機械語)命令を含むことを期待されるものだけでな く,すべてのセクションの内容を逆アセンブルします.
--prefix-addresses
逆アセンブルしているとき,それぞれの行に絶対アドレスを出力します.これは より古い逆アセンブルの書式です.
--disassemble-zeroes
通常逆アセンブルの出力はゼロブロックをスキップします.このオプションは, それらのブロックを他のデータと同じように逆アセンブルする,直接的な逆アセ ンブラです.
-EB
-EL
--endian={big|little}
オブジェクトファイルのエンディアンを指定します.これは逆アセンブラにのみ 効果があります.これは,S-recordのような,エンディアン情報を記述していな いファイル書式を逆アセンブルしているとき役に立つはずです.
-f
--file-header
それぞれのobjfileファイルのヘッダ全体からの情報の概要を表示します.
--file-start-context
まだ表示されていない,内部にリストアップされているソースコード/ファイル から逆アセンブルされたもの(おそらく'-S')を表示しているとき,コンテクスト をファイルの先頭まで拡張することを指定します.
-h
--section-header
--header
オブジェクトファイルのセクションヘッダからの情報の概要を表示します.

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

--help
objdumpに対するオプションの概要を出力し,終了します.
-i
--info
-b-mを用いて指定可能な,すべてのアーキテクチャとオブジェ クト書式を示すリストを表示します.
-j name
--section=name
セクションnameに対する情報のみ表示します.
-l
--line-numbers
(デバッグ情報を使用した)表示に,表示されているオブジェクトコードやリロケー トに一致しているファイル名とソースの行番号を用いてラベル付けします. -d-D,または-rを用いた場合のみ有益です.
-m machine
--architecture=machine
オブジェクトファイルの逆アセンブル時に,使用するアーキテクチャを指定しま す.これは,S-recordのような,アーキテクチャ情報が記述されていないオブジェ クトファイルを逆アセンブルするとき役に立ちます.-iオプションを用 いて,利用可能なアーキテクチャをリストアップ可能です.
-M options
--disassembler-options=options
ターゲット指定の情報を逆アセンブラに渡します.いくつかのターゲットでのみ サポートします.

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

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

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

-p
--private-headers
オブジェクトファイルの書式特有の情報を出力します.出力される厳密な情報は オブジェクトファイルの書式に依存します.オブジェクトファイルの書式によっ ては,追加情報は出力されません.
-r
--reloc
ファイルのリロケーション項目を出力します.-d-Dとともに使 用される場合,リロケーションは逆アセンブルの中に点在して出力されます.
-R
--dynamic-reloc
ファイルの動的なリロケーション項目を出力します.これは,ある形式の共有ラ イブラリのような,動的なオブジェクトのみで意味があります.
-s
--full-contents
要求されたあらゆるセクションの,すべての内容を表示します.
-S
--source
可能な場合,逆アセンブラの中にソースコードを混ぜて表示します.-d が暗黙のうちに指定されます.
--show-raw-insn
(機械語)命令を逆アセンブルするとき,(機械語)命令をシンボリック形式と同様 に16進で出力します.--prefix-addressesが使用されているとき以外, これはデフォルトです.
--no-show-raw-insn
(機械語)命令を逆アセンブルするとき,(機械語)命令バイトを出力しません.こ れは--prefix-addressesが使用されているときデフォルトです.
-G
--stabs
要求されるすべてのセクションの内容を全部表示します.ELFファイルの .stab と .stab.indexと .stab.exclセクションの内容を表示します.これは, .stabデバッグシンボルテーブルの項目がELFのセクションに運び込まれ る(Solaris 2.0のような)システムでのみ役に立ちます.そのほかのほとんどの 書式では,デバッグシンボルテーブルの項目は,リンクシンボルとともにバラバ ラに配置され,--symsの出力で見ることが可能となります.スタブシン ボルの詳細は,Top, を参照してください.
--start-address=address
データの表示を,指定したアドレスで開始します.これは-d-r, そして-sオプションの出力に効果があります.
--stop-address=address
データの表示を,指定したアドレスで停止します.これは-d-r, そして-sオプションの出力に効果があります.
-t
--syms
ファイルのシンボルテーブルの項目を出力します.これは,nmプログラ ムで提供される情報に似ています.
-T
--dynamic-syms
ファイルの動的なシンボルテーブルの項目を表示します.これは,特定の形式の 共有ライブラリのような,動的なオブジェクトに対してのみ意味があります.こ れは,-D (--dynamic)オプションが与えられているnmプ ログラムで提供される情報に似ています.
--version
objdumpのバージョンナンバーを出力し終了します.
-x
--all-header
利用可能なヘッダ情報をすべて表示し,それはシンボルテーブルと,リロケーショ ン項目を含みます.-xを用いると,-a -f -h -r -tをすべて指定 したものと等価になります.
-w
--wide
80列以上の出力デバイスに対し,数行で書式化します.


Node:ranlib, Next:, Previous:objdump, Up:Top

ranlib

ranlib [-vV] archive

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

この索引をリストアップするために,nm -snm --print-armap を使用することが可能です.

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

GNU ranlibプログラムは,GNU arのもう一つの形式で す.ranlibを実行することは,ar -sを実行することと完全に等 価です.See ar.

-v
-V
--version
ranlibのバージョンナンバーを表示します.


Node:size, Next:, Previous:readelf, Up:Top

size

size [ -A | -B | --format=compatibility ]
     [ --help ]  [ -d | -o | -x | --radix=number ]
     [ --target=bfdname ]  [ -V | --version ]
     [ objfile... ]

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

objfile...は,調査されるオブジェクトファイルです.何も指定され ない場合,ファイルa.outが使用されます.

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

-A
-B
--format=compatibility
これらのオプションの一つを使用した場合,System V size (-A, または--format=sysvの使用)からの出力に似ているGNU sizeからの出力,または,Berkeley size (-B,または --format=berkeleyの使用)のいずれかを選択することができます.デフォ ルトは,一行の書式はBerkeleyのものに似ています.

以下は,Berkeley (デフォルト)書式のsizeの出力例です.

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

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

$ 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

--help
受け入れ可能な引数とオプションの概要を表示します.
-d
-o
-x
--radix=number
これらのオプションの一つを使用した場合,それぞれのセクションのサイズを, 10進数(-dまたは--radix=10),8進数(-oまたは --radix=8),または16進数(-xまたは--radix=16)で与え られるもののいづれかに制御可能です.--radix=numberでは,3つ の値(8, 10, 16)のみサポートされます.全体のサイズは常に2つの基数で与えら れます.それは,-d-xに対する,10進数と16進数,または -oを使用した場合,8進数と16進数になります.
--target=bfdname
objfileに対するオブジェクトコードの書式をbfdnameとして指定し ます.このオプションは不要かもしれません.sizeは自動的に多くの書 式を認識できます.詳細は,See Target Selection.
-V
--version
sizeのバージョンナンバーを表示します.


Node:strings, Next:, Previous:size, Up:Top

strings

strings [-afov] [-min-len] [-n min-len] [-t radix] [-]
        [--all] [--print-file-name] [--bytes=min-len]
        [--radix=radix] [--target=bfdname]
        [--help] [--version] file...

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

stringsは,テキストではないファイルの内容を判断することに,主に役 立ちます.

-a
--all
-
オブジェクトファイルの初期化されロードされるセクションのみをスキャンする のではありません.ファイル全体をスキャンします.
-f
--print-file-name
それぞれの文字列の前にファイル名を出力します.
--help
プログラムの使用方法の概要を標準出力に出力し終了します.
-min-len
-n min-len
--bytes=min-len
デフォルトの4ではなく,少なくともmin-len文字の長さの文字の列を出力 します.
-o
-t oに似ています.stringsの他のバージョンには,代わりに -t dのように-oを動作させるものもあります.我々は,両方の互 換性を提供することができないので,単純にこちらを選びました.
-t radix
--radix=radix
それぞれの文字列の前に,ファイル内部でのオフセットを出力します.単一文字 の引数を指定した場合,オフセットの基数--8進数に対するo,16進数に 対するx,または10進数に対するx--を指定します.
--target=bfdname
システムのデフォルトの書式以外のオブジェクトコードの書式を指定します.詳 細は,See Target Selection.
-v
--version
プログラムのバージョンナンバーを標準出力に出力し終了します.


Node:strip, Next:, Previous:strings, Up:Top

strip

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

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

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

-F bfdname
--target=bfdname
オリジナルのobjfileを,オブジェクトコード書式bfdnameを用いた ファイルとして扱い,同じ書式で再書き込みします.詳細は,See Target Selection.
--help
stripへのオプションの概要を表示し終了します.
-I bfdname
--input-target=bfdname
オリジナルのobjfileを,オブジェクトコード書式bfdnameを用いた ファイルとして扱います.詳細は,See Target Selection.
-O bfdname
--output-target=bfdname
objfileを,出力書式bfdnameのファイルで置換します.詳細は, See Target Selection.
-R sectionname
--remove-section=sectionname
sectionnameで指名されたすべてのセクションを,出力ファイルから削除 します.このオプションは一回以上与えることが可能です.このオプションを使 用すると,不適切にも出力ファイルを利用不可能にする可能性があることに注意 してください.
-s
--strip-all
すべてのシンボルを削除します.
-g
-S
--strip-debug
デバッグシンボルのみ削除します.
--strip-unneeded
リロケーション処理に不要なすべてのシンボルを削除します.
-K symbolname
--keep-symbol=symbolname
シンボルsymbolnameのみ,ソースファイルに保存します.このオプション は一回以上与えることが可能です.
-N symbolname
--strip-symbol=symbolname
シンボルsymbolnameをソースファイルから削除します.このオプションは 一回以上与えることが可能で,-K以外のstripオプションと組み 合わせることも可能です.
-o file
既存のファイルを置換するのではなく,stripされた出力をfileに 書き込みます.この引数が使用されたとき,1つのobjfile引数のみ指定可 能です.
-p
--preserve-dates
ファイルのアクセスと編集の日付を保持します.
-x
--discard-all
グローバルでないシンボルを削除します.
-X
--discard-locals
コンパイラが生成したローカルシンボルを削除します.(これらは通常, Lまたは.で始まります.)
-V
--version
stripのバージョンナンバーを表示します.
-v
--verbose
冗長な出力です.編集されたすべてのオブジェクトファイルをリストアップしま す.アーカイブの場合,strip -vはアーカイブのすべてのメンバーをリ ストアップします.


Node:c++filt, Next:, Previous:strip, Up:Top

c++filt

c++filt [ -_ | --strip-underscores ]
        [ -j | --java ]
	[ -n | --no-strip-underscores ]
        [ -s format | --format=format ]
        [ --help ]  [ --version ]  [ symbol... ]

C++とJava言語は,関数のオーバーロードを提供し,それは(それぞれ異なる型の パラメータの受け入れを提供する)同じ名前の多くの関数を書くことが可能だと いうことを意味します.すべてのC++とJavaの関数名は,低レベルのアセンブリ ラベルに符号化されます(この処理はmanglingとして知られています.) c++filt2プログ ラムは,マッピングを反転します.それは,これらのオーバーロードされた関数 を破壊することから,リンカが守ることができるように,低レベルの名前をユー ザレベルの名前に復号(demangles)します.

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

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

c++filt symbol

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

-_
--strip-underscores
システムによっては,CとC++のコンパイラが,すべての名前の前にアンダースコ アを書き込むものもあります.例えば,Cでの名前fooが,低レベルでは 名前_fooになります.このオプションは,最初のアンダースコアを削除 します.c++filtがデフォルトでアンダースコアを削除するかどうかはター ゲットに依存します.
-j
--java
demangleされた名前を,Javaの構文を用いて出力します.デフォルトは,C++の 構文の使用です.
-n
--no-strip-underscores
最初のアンダースコアを削除しません.
-s format
--format=format
GNU nmは,異なるC++コンパイラが使用されてmangleしている,3つ の異なるメソッドを復号することが可能です.このオプションの引数は,使用さ れているメソッドを選択します.
gnu
GNUコンパイラで使用されるもの(デフォルトメソッド).
lucid
Lucidコンパイラで使用されるもの.
arm
C++ Annotated Reference Manualで指定されるもの.
hp
HPコンパイラで使用されるもの.
edg
EDGコンパイラで使用されるもの.
gnu-new-abi
新しいABIを用いたGNUコンパイラで使用されるもの.

--help
c++filtのオプションの概要を出力し終了します.
--version
c++filtのバージョンナンバーを出力し終了します.
警告: c++filtは,新しいユーティリティで,そのユーザインター フェースの詳細は将来のリリースで変更を受けやすくなっています.特に,コマ ンドラインの引数として渡される名前を復号するために,コマンドラインオプショ ンが,将来要求されるかもしれません.言い換えると以下のようになるというこ とです.
c++filt symbol

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

c++filt option symbol


Node:addr2line, Next:, Previous:c++filt, Up:Top

addr2line

addr2line [ -b bfdname | --target=bfdname ]
          [ -C | --demangle[=style ]
          [ -e filename | --exe=filename ]
          [ -f | --functions ] [ -s | --basename ]
          [ -H | --help ] [ -V | --version ]
          [ addr addr ... ]

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

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

addr2lineは,2つの処理モードがあります.

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

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

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

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

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

-b bfdname
--target=bfdname
オブジェクトファイルに対するオブジェクトコードをbfdnameとして指定 します.
-C
--demangle[=style]
低レベルのシンボル名をユーザレベル名に復号(demangle)します.システ ムによって前置される,すべての最初のアンダースコアを削除する他に,これは C++関数名を可読にします.異なるコンパイラでは,mangle形式が異なります. 追加のdemangle形式の引数は,コンパイラに対する適切なdemangle形式を選択す るために使用可能です.demangleの情報は,See c++filt.
-e filename
--exe=filename
変換したいアドレスに対する実行形式の名前を指定します.デフォルトファイル はa.outです.
-f
--functions
ファイルと行番号の情報と同様に,関数名も表示します.
-s
--basenames
それぞれのファイル名のベースのみ表示します.


Node:nlmconv, Next:, Previous:addr2line, Up:Top

nlmconv

nlmconvは,リロケートオブジェクトファイルをNetWare Loadable Moduleに変換します.

警告: nlmconvは,NLMターゲットに対してのみ役に立つので,常 にバイナリユーティリティの一部として構築されるわけではありません.
nlmconv [ -I bfdname | --input-target=bfdname ]
        [ -O bfdname | --output-target=bfdname ]
        [ -T headerfile | --header-file=headerfile ]
        [ -d | --debug]  [ -l linker | --linker=linker ]
        [ -h | --help ]  [ -V | --version ]
        infile outfile

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

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

-I bfdname
--input-target=bfdname
入力ファイルのオブジェクト書式です.nlmconvは,通常与えられたファ イルの書式を決定できます(そのためデフォルトは不要です).詳細は, See Target Selection.
-O bfdname
--output-target=bfdname
出力ファイルのオブジェクトの書式です.nlmconvは,出力の書式を入力 の書式を元に推測し,例えば,i386入力ファイルに対する出力の書式は, nlm32-i386になります.詳細は,See Target Selection.
-T headerfile
--header-file=headerfile
NLMヘッダ情報のためにheaderfileを読み込みます.ヘッダファイルで使 用されているNLMコマンドファイルの言語を書くときの(機械語)命令については, Novell, Inc. で利用可能なNLM Software Developer's Kitの一部となっている, NLM Development and Tools Overviewlinkersセクションを参 照してください.
-d
--debug
nlmconvが使用しているリンカコマンドラインを(標準エラー出力に)表示 します.
-l linker
--linker=linker
あらゆるリンクでlinkerを使用します.linkerは,絶対パス名また は相対パス名が可能です.
-h
--help
使用方法の概要を出力します.
-V
--version
nlmconvのバージョンナンバーを出力します.


Node:windres, Next:, Previous:nlmconv, Up:Top

windres

windresは,複数のWindowsのリソースで使用可能です.

警告: windresは,Windowsターゲットに対してのみ役に立つので, 常にバイナリユーティリティの一部として構築されるわけではありません.
windres [options] [input-file] [output-file]

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

rc
リソースコンパイラで読み込むテキスト書式.
res
リソースコンパイラが生成したバイナリ書式.
coff
COFFオブジェクト,または,実行形式.

これらの書式の差異の正確な記述は,Microsoftのドキュメントで利用可能です.

windresrc書式からres書式に変換するとき,それは Windows Resource Compilerのように動作します.windresres 書式からcoff書式に変換するとき,それはWindows CVTRESプログ ラムのように動作します.

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

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

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

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

-i filename
--input filename
入力ファイル名です.このオプションが使用されない場合,windres は, 最初の非オプションの引数を入力ファイル名として使用します.非オプションの 引数がない場合,windresは,標準入力から読み込みます. windresは,COFFファイルを標準入力から読み込むことはできません.
-o filename
--output filename
出力ファイル名です.このオプションが使用されない場合,windres は, 入力ファイル名として使用した後の,最初の非オプションの引数を出力ファイル 名として使用します.非オプションの引数がない場合,windresは,標準 出力に書き出します.windresは,COFFファイルを標準出力に書き出すこ とはできません.
-I format
--input-format format
読み込む入力の書式です.formatは,resrc,または coffが可能です.入力書式が指定されない場合,windresは,上 記のように推測します.
-O format
--output-format format
生成する出力の書式です.formatは,resrc,または coffが可能です.出力書式が指定されない場合,windresは,上 記のように推測します.
-F target
--target target
入出力としてのCOFFに対して使用するBFD書式を指定します.これは,BFDターゲッ ト名です.サポートされているターゲットのリストを見るために, --helpオプションが使用可能です.通常,windresはデフォルト の書式を使用し,それは--helpオプションでリストアップされる最初の ものです.Target Selection.
--preprocessor program
windresrcファイルを読み込むとき,それは最初にCプリプロセッ サを通じて実行されます.このオプションは,使用するプリプロセッサを指定す るために,利用することができ,それには引数を前置するものを含みます.デフォ ルトのプリプロセッサ引数は,gcc -E -xc-header -DRC_INVOKEDです.
--include-dir directory
rcファイルを読み込むとき使用する,インクルードディレクトリを指定 します.windresは,これを-Iオプションとしてプリプロセッサ に渡します.windresは,rcファイルで指名されているファイル を探すとき,このディレクトリの検索も行います.
-D target
--define sym[=val]
rcファイルを読み込むとき,プリプロセッサに渡す-Dオプション を指定します.
-v
冗長モードを可能にします.これは,プリプロセッサが指定されていない場合, そのプリプロセッサを報告します.
--language val
rcファイルを読み込むとき使用する,デフォルトの言語を指定します. valは16進数の言語コードにする必要があります.下位8ビットは言語で, 上位8ビットはサブ言語です.
--use-temp-file
プリプロセッサの出力を読み込むためpopenを使用する代わりに,一時ファイル を使用します.popenの実装がバグの多いホストの場合,このオプションを使用 してください(例えば,ある非英語バージョンのWindows95とWindows98は,出力 がコンソールでないところでは,バグの多いpopenとなっていることが知られて います).
--no-use-temp-file
プリプロセッサの出力を読み込むため,一時ファイルではなくpopenを使用しま す.これはデフォルトの動作です.
--help
使用方法の概要を出力します.
--version
windresのバージョンナンバーを出力します.
--yydebug
windresYYDEBUG1と定義してコンパイルされる場合, パーサデバッグを開始します.


Node:dlltool, Next:, Previous:windres, Up:Top

DLLを構築し使用するのに必要なファイルの作成

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

警告: dlltoolは,DLLをサポートするターゲットに対してのみ役 に立つので,常にバイナリユーティリティの一部として構築されるわけではあり ません.
dlltool [-d|--input-def def-file-name]
        [-b|--base-file base-file-name]
        [-e|--output-exp exports-file-name]
        [-z|--output-def def-file-name]
        [-l|--output-lib library-file-name]
        [--export-all-symbols] [--no-export-all-symbols]
        [--exclude-symbols list]
        [--no-default-excludes]
        [-S|--as path-to-assembler] [-f|--as-flags options]
        [-D|--dllname name] [-m|--machine 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 ...]

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

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

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

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

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

  int my_func (void) { ... }

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

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

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

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

  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

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


-d filename
--input-def filename
読み込み,処理する.defファイルの名前を指定します.
-b filename
--base-file filename
読み込み,処理するベースファイルの名前を指定します.このファイルの内容に, dlltoolで生成されるエクスポートファイルの,リロケーションセクショ ンが追加されます.
-e filename
--output-exp filename
dlltoolで作成される,エクスポートファイルの名前を指定します.
-z filename
--output-def filename
dlltoolで作成される,.defファイルの名前を指定します.
-l filename
--output-lib filename
dlltoolで作成される,ライブラリファイルの名前を指定します.
--export-all-symbols
入力ファイル内のエクスポートされるシンボルとして見つかったものは,すべて 大域的に弱く定義されているシンボルとして扱います.これらは,デフォルトで エクスポートされないシンボルの小さなリストです. --no-default-excludesオプションを参照してください. --exclude-symbolsオプションを使用して,エクスポートされないシンボ ルのリストを追加することが可能です.
--no-export-all-symbols
入力の.defファイルや入力オブジェクトファイルの.drectveセク ションで,明示的にリストアップされているシンボルのみエクスポートします. .drectveは,ソースコード内のdllexport属性で作成されます.
--exclude-symbols list
list内のシンボルをエクスポートしません.これは,カンマまたはコロン 文字で分けられた,シンボル名のリストです.シンボル名に,アンダースコアの 前置を含めることはできません.これは,--export-all-symbolsが使用 されているときのみ意味があります.
--no-default-excludes
--export-all-symbolsが使用されているとき,それはデフォルトで,あ る特別なシンボルをエクスポートすることを避けます.現在のエクスポートを避 けるリストは,DllMain@12, DllEntryPoint@0, impure_ptrです.これらの特別なシンボルを進んでエクスポートするた めに,--no-default-excludesオプションを使用することが可能です.こ れは,--export-all-symbolsが使用されているときのみ意味があります.
-S path
--as path
エクスポートファイルを作成するために使用するアセンブラの,ファイル名を含 む,パスを指定します.
-f switches
--as-flags switches
エクスポートファイルを構築しているときアセンブラに渡す,あらゆる特別なコ マンドラインスイッチを指定します.このオプションは,-Sが指定され ていないかのように動作します.このオプションは1つの引数のみ渡し,コマン ドラインに1回以上出現する場合,最後に出現したもので,前に出現したものに 優先させます.そのため,複数のスイッチをアセンブラに渡す必要がある場合は, 二重引用符で囲む必要があります.
-D name
--dll-name name
-eオプションが使用されてるとき,DLLの名前として.defファイ ルに保存する名前を指定します.このオプションがない場合,-eオプショ ンで与えられるファイル名は,DLLの名前として使用されます.
-m machine
-machine machine
ライブラリファイルが構築されるマシンの形式を指定します.dlltoolに は,構築のされ方に依存するデフォルト形式がありますが,このオプションで, それに優先させることが可能です.これは通常,ARMプロセッサに対するDLLを作 成するときのみ役に立ち,DLLの内容は,実際にTHUMB(機械語)命令を使用して符 号化されます.
-a
--add-indirect
dlltoolがエクスポートファイルを作成しているとき,エクスポート関数 がインポートライブラリを使用しないで参照できるように,セクションを加える ことを指定します.たとえ,それが地獄を意味しようとも!
-U
--add-underscore
dlltoolエクスポートファイルを作成しているとき,エクスポート関数の 名前にアンダースコアを前置することを指定します.
-k
--kill-at
dlltoolエクスポートファイルを作成しているとき,文字列@ <number>を追加しないことを指定します.これらの数字は,序数と呼ばれ,DLL では関数にアクセスする1つの方法を表示し,それ以外では名前で表示します.
-A
--add-stdcall-alias
dlltoolがエクスポートファイルを作成しているとき,シンボルに @ <number>を追加したものを,@ <number>なしでstdcallシン ボルの別名を加えることを指定します.
-x
--no-idata4
dlltoolエクスポートファイルとライブラリファイルを作成しているとき, .idata4セクションを削除することを指定します.これは,あるオペレーティング システムとの互換性のためです.
-c
--no-idata5
dlltoolエクスポートファイルとライブラリファイルを作成しているとき, .idata5セクションを削除することを指定します.これは,あるオペレーティング システムとの互換性のためです.
-i
--interwork
dlltoolが,生成しているライブラリファイルとエクスポートファイル内 のオブジェクトに,ARMとTHUMB間での相互動作をサポートするように印を付ける ことを指定します.
-n
--nodelete
dlltoolは,エクスポートファイルを作成するために使用した一時的なア センブラファイルを保存します.このオプションが繰り返される場合, dlltoolは,ライブラリを作成するために使用する一時的なオブジェクト ファイルも保存します.
-v
--verbose
dlltoolは,行っていることを記述します.
-h
--help
コマンドラインオプションのリストを表示し終了します.
-V
--version
dlltoolのバージョンナンバーを表示し終了します.


Node:readelf, Next:, Previous:ranlib, Up:Top

readelf

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[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
        [      --histogram]
        [ -v | --version]
        [ -H | --help]
        elffile...

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

elffile...は調査するオブジェクトファイルです.現在は, readelfは,アーカイブの調査のサポートも,64ビットELFファイルのサ ポートもありません.

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

-a
--all
--file-header--program-headers--sections--symbols--relocs--dynamic--notes,そ して--version-infoを指定することと等価です.
-h
--file-header
ファイルの最初のELFヘッダ内に含まれる情報を表示します.
-l
--program-headers
--segments
ファイルのセグメントヘッダ内に含まれる情報を,存在する場合は表示します.
-S
--sections
--section-headers
ファイルのセクションヘッダ内に含まれる情報を,存在する場合は表示します.
-s
--symbols
--syms
ファイルのシンボルテーブルセクション内の項目を,存在する場合は表示します.
-e
--headers
ファイルのすべてのヘッダを表示します.-h -l -Sと等価です.
-n
--notes
NOTEセグメントの内容を,存在する場合は表示します.
-r
--relocs
ファイルのリロケーションセクションの内容を,存在する場合は表示します.
-d
--dynamic
ファイルの動的セクションの内容を,存在する場合は表示します.
-V
--version-info
ファイルのバージョンセクションの内容を,存在する場合は表示します.
-D
--use-dynamic
シンボルを表示しているとき,readelfはこのオプションで,ファイルの シンボルセクションではなく,動的セクションのシンボルテーブルを使用します.
-x <number>
--hex-dump=<number>
16進のダンプとして示されているセクションの内容を表示します.
-w[liaprf]
--debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
ファイルのデバッグセクションの内容を,存在する場合は表示します.オプショ ン文字や単語の1つがスイッチに続く場合,これらで指定されたセクションで見 つかるデータのみダンプされます.
--histogram
シンボルテーブルの内容を表示するとき,バケットリスト長のヒストグラムを表 示します.
-v
--version
readelfのバージョンナンバーを表示します.
-H
--help
readelfが理解するコマンドラインオプションを表示します.


Node:Selecting The Target System, Next:, Previous:dlltool, Up:Top

ターゲットシステムの選択

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

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

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


Node:Target Selection, Next:, Up:Selecting The Target System

ターゲットの選択

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

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

サンプルの値は以下のとおりです.a.out-hp300bsdecoff-littlemipsa.out-sunos-big

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

サンプルの値は以下のとおりです.m68k-hp-bsdmips-dec-ultrixsparc-sun-sunos

objdumpのターゲット

指定方法:

  1. コマンドラインオプション:-bまたは--target
  2. 環境変数GNUTARGET
  3. 入力ファイルから推測

objcopystripの入力ターゲット

指定方法:

  1. コマンドラインオプション:-Iまたは--input-target,もしくは, -Fまたは--target
  2. 環境変数GNUTARGET
  3. 入力ファイルから推測

objcopystripの出力ターゲット

指定方法:

  1. コマンドラインオプション:-Oまたは--output-target,もしく は,-Fまたは--target
  2. 入力ターゲット(上記の"objcopystripの入力ターゲット"を 参照してください)
  3. 環境変数GNUTARGET
  4. 入力ファイルから推測

nmsize,そしてstringsのターゲット

指定方法:

  1. コマンドラインオプション:--target
  2. 環境変数GNUTARGET
  3. 入力ファイルから推測

リンカ入力ターゲット

指定方法:

  1. コマンドラインオプション:-bまたは--format (see Options)
  2. スクリプトコマンドTARGET (see Option Commands)
  3. 環境変数GNUTARGET (see Environment)
  4. リンカエミュレーションで選択されたデフォルトターゲット (see Linker Emulation Selection)

リンカ出力ターゲット

指定方法:

  1. コマンドラインオプション:-oformat (see Options)
  2. スクリプトコマンドOUTPUT_FORMAT (see Option Commands)
  3. リンカ入力ターゲット(上記の"リンカ入力ターゲット"を参照してください)


Node:Architecture Selection, Next:, Previous:Target Selection, Up:Selecting The Target System

アーキテクチャの選択

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

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

サンプルの値です.m68k:68020mips:3000sparc

objdumpアーキテクチャ

指定方法:

  1. コマンドラインオプション:-mまたは--architecture
  2. 入力ファイルから推測

objcopynmsizestringsのアーキテクチャ

指定方法:

  1. 入力ファイルから推測

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

指定方法:

  1. 入力ファイルから推測

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

指定方法:

  1. スクリプトコマンドOUTPUT_ARCH (see Option Commands)
  2. リンカの出力ターゲットのデフォルトアーキテクチャ(see Target Selection)


Node:Linker Emulation Selection, Previous:Architecture Selection, Up:Selecting The Target System

リンカエミュレーションの選択

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

有効なリンカエミュレーションの値をリストアップするコマンドは,ld -Vです.

サンプルの値は以下のとおりです.hp300bsdmipslitsun4

指定方法:

  1. コマンドラインオプション:-m (see Options)
  2. 環境変数LDEMULATION
  3. Makefileでコンパイル時に組み込まれたDEFAULT_EMULATIONで, それはconfig/target.mtEMULに由来する.


Node:Reporting Bugs, Next:, Previous:Selecting The Target System, Up:Top

バグの報告

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

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

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


Node:Bug Criteria, Next:, Up:Reporting Bugs

バグを見つけましたか?

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


Node:Bug Reporting, Previous:Bug Criteria, Up:Reporting Bugs

バグの報告の仕方

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

GNU Emacs配布物のファイルetc/SERVICEで,サポートしている多く の会社と個人へ連絡する情報を見つけることが可能です.

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

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

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

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

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

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

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


Node:GNU Free Documentation License, Next:, Previous:Reporting Bugs, Up:Top

GNU Free Documentation License

GNU Free Documentation License

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties-for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements."

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

    Copyright (c)  YEAR  YOUR NAME.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.1
    or any later version published by the Free Software Foundation;
    with the Invariant Sections being LIST THEIR TITLES, with the
    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".

If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.


Node:Index, Previous:GNU Free Documentation License, Up:Top

索引

Table of Contents


Footnotes

  1. 訳注:原文は lower address。

  2. MS-DOSは,ファイル名に+文字が使用できない ので,MS-DOS上でのこのプログラムはcxxfiltと命名されます.