おしながき

ELFファイルフォーマット

  • .eh_frameセクションの構造と読み方

DWARFファイルフォーマット

NCURSESライブラリ

  • NCURSES Programing HOWTO ワタクシ的ほんやく
    1. Tools and Widget Libraries
    2. Just For Fun !!!
    3. References
  • その他、自分メモ
  • NCURSES雑多な自分メモ01


最近の更新 (Recent Changes)

2019-09-24
2013-10-10
2013-10-03
2013-10-01
2013-09-29
目次に戻る:DWARFファイルフォーマット

Attribute名(DW_AT_yyyy)一覧と値、意味

Attributeな一覧でごわす。

(2013/08/26 まだまだ、とりあえず原文ちょくやーく! 信じちゃだめぇ。)

No. Attribute名 Code 意味 取り得るClass 備考
1 DW_AT_sibling 0x01 親DIEの参照先 reference
2 DW_AT_location 0x02 データオブジェクトの格納場所
これは、変数などのオブジェクトがどこに格納されているかを示すDWARF expressionか、.debug_locへの参照(loclistptr)のどっちか
block
loclistptr
3 DW_AT_name 0x03 * 宣言の名称(※変数名、など)
* コンパイルソースのファイル名
string
4 DW_AT_ordering 0x09 配列の行/列の順番を示す定数
(原文 pp153 7.17 Array Orderingの表参照)
constant
5 DW_AT_byte_size 0x0b * データオブジェクト(変数など)やデータ型などのバイト数 block
constant
reference
6 DW_AT_bit_offset 0x0c * 基本型でのビット上の場所(オフセット)
* データメンバのビット上の場所(オフセット)
(※これ、Cならビットフィールドの様ですね ★要調査★)
block
constant
reference
7 DW_AT_bit_size 0x0d * 基本型のビットサイズ
* データメンバのビットサイズ
(※これは、ビット幅を示すものだと思うけど、なぜblockとかがある?のかが不明)
block
constant
reference
8 DW_AT_stmt_list 0x10 ソースファイル上の行番号(の情報が書いてある.debug_lineの該当箇所へのリンク) lineptr
9 DW_AT_low_pc 0x11 コードアドレスの範囲における下位アドレス
※例: 0x0100-0x0400の範囲がアドレスなら、DW_AT_low_pcは0x0100
なお、確かアドレスが範囲でなくて1箇所を示す時もDW_AT_low_pcで示されるはず(highはなしで)
address
10 DW_AT_high_pc 0x12 コードアドレスの範囲における上位アドレス
※例: 0x0100-0x0400の範囲がアドレスなら、DW_AT_high_pcは0x0400
address
11 DW_AT_language 0x13 プログラム言語を示す固定値
(原文 pp149 7.12 Source Languagesの表の通り)
C言語の場合は0x000c(C99)、0x0002(C)、0x0001(C89)あたり。C++は0x0004
constant
12 DW_AT_discr 0x15 可変部分の識別
※何に、どーやって使うの?
reference
13 DW_AT_discr_value 0x16 識別値
※だから、にゃにこれ?識別値って?
constant
14 DW_AT_visibility 0x17 宣言の可視化状況を示す固定値
可視化状況とは、localなのか、exportedされているのか、など
(原文 pp149 7.10 Visibility codesの表に固定値記述あり)
constant
15 DW_AT_import 0x18 * インポートした宣言
* インポートしたユニット
* namespaceのエイリアス(別名)
* 宣言で使うnamespace
* ディレクティブで使うnamespace
これらのいずれかに該当するDIEへの参照です
※具体的に、どういケースで遣われるのかが、全く不明っす
reference
16 DW_AT_string_length 0x19 文字列型の文字長(サイズ) block
loclistptr
17 DW_AT_common_reference 0x1a 共通ブロック語法? reference
18 DW_AT_comp_dir 0x1b Compilation Unitの対象とするソースが格納されているディレクトリ? string
19 DW_AT_const_value 0x1c * 定数オブジェクト
* Enum値
* テンプレートパラメタ(多分C++とか)
block
constant
string
20 DW_AT_containing_type 0x1d ポインタ型を含むメンバの型?
※これ翻訳自信なし!
reference
21 DW_AT_default_value 0x1e 変数のデフォルト値(への参照) reference
22 DW_AT_inline 0x20 * 抽象クラス
* インライン関数
のいずれかのケースで、宣言されているかどうか、インライン化されているかどうか、を示す固定値です。
(原文 pp152 7.16 Inline Codeの表参照)
constant
23 DW_AT_is_optional 0x21 追加(オプション)のパラメタであるかどうかのフラグ
※どーいうケースで使われるか、不明
flag
24 DW_AT_lower_bound 0x22 サブレンジの下位境界
※サブレンジってのが分からん。。。が、何らかの格納場所の範囲の境界を示すDWARF expressionか固定値と思われ
block
constant
reference
25 DW_AT_producer 0x25 コンパイラを特定する文字列(コンパイラがお好きな文字を設定してくださいます) string
26 DW_AT_prototyped 0x27 関数のプロトタイプ(の場合、trueになるフラグ) flag
27 DW_AT_return_addr 0x2a 関数の戻り先アドレスの保存先(を示すDWARF expressionなど) block
loclistptr
28 DW_AT_start_scope 0x2c * オブジェクト/型の宣言
※だが、何入るのか不明
constant
29 DW_AT_bit_stride 0x2e (バイト倍数で整列されず、例えば1要素6bitみたいな)
* 配列での1要素のビット幅(=1つの要素を飛び越える時のまたぎ幅)
* 複数次元配列における下位次元の1要素のビット幅
constant
30 DW_AT_upper_bound 0x2f サブレンジの上位境界
※サブレンジってにゃに?
block
constant
reference
31 DW_AT_abstract_origin 0x31 * インライン関数内のインスタンス(変数など)(の情報が格納されたDIEへの参照?)
* インライン関数内にある、行外で定義されたインスタンス(のDIEへの参照?)
reference
32 DW_AT_accessibility 0x32 (C++/Ada)
* C++/Adaの(アクセス)宣言?(publicとかprivateとかかな?)
* C++ 基底クラス
* C++ 継承メンバ
(原文 pp148 7.9の表に入る値記述あり)
constant
33 DW_AT_address_class 0x33 * ポインタ、もしくは参照型
* 関数、もしくは関数の型
(原文 pp151 7.13に、一般的な場合は 0 (DW_ADDR_none)だよって記述あるです)
constant
34 DW_AT_artificial 0x34 ソース上で実際に宣言されていないオブジェクトもしくは型かどうかのフラグ。
値が"True"なら、ソース上でそのDIEは宣言されていませんってこと(だと思うきっと)
flag
35 DW_AT_base_types 0x35 *CUの基本的なデータ型(を示すDIEの参照)
(ある変数があったとして、そいつがintならintを定義しているDIEへの参照が入る)
reference
36 DW_AT_calling_convention 0x36 サブプログラム呼出規約
(原文 pp152 7.15 の表に値記述あり)
これ、値の表を見ると"normal""program""nocall"の3択なので、呼出文が関数を呼ぶのか、プログラムを呼ぶのか、
何もしないのかを示す位に役割っぽいですね。
constant
37 DW_AT_count 0x37 サブレンジ型の要素? block
constant
reference
38 DW_AT_data_member_location 0x38 * データメンバの格納場所(恐らく構造体など)
* 継承メンバの格納場所(C++)
block
constant
loclistptr
39 DW_AT_decl_column 0x39 ソース宣言の列番
※ソースのテキストファイル上の列番号です
※ソース宣言って?
constant
40 DW_AT_decl_file 0x3a ソース宣言を含むファイル(テーブルの番号)
※.debug_line内のファイルテーブルの番号っす
constant
41 DW_AT_decl_line 0x3b ソース宣言の行番号 constant
42 DW_AT_declaration 0x3c 不完全 or 未定義 or 分割された宣言であることのフラグ flag
43 DW_AT_discr_list 0x3d 識別値リスト(現状はラベルか範囲かってだけみたいです)
(原文pp153 7.18の表に値あり)
block
現状1Byte
44 DW_AT_encoding 0x3e ベース型(intやcharなど)のエンコーディング(表現方法)
(原文 pp146 7.8 Base type Encodingsの表に入る値記述あり)
格納される値が、アドレスなのか、Booleanなのか、浮動小数なのか、整数(符号有無)なのか、を固定値で表すもんです。
constant
45 DW_AT_external 0x3f * 外部で宣言している関数(extern宣言されている関数)
* 外部で宣言されている変数(extern宣言されている変数)
かどうかのフラグ(外部宣言ならtrue)
flag
46 DW_AT_frame_base 0x40 関数フレームベースのアドレス(の場所を指すDWARF expression) block
loclistptr
47 DW_AT_friend 0x41 friend宣言の関係(フレンドなDIEへの参照) reference
48 DW_AT_identifier_case 0x42 IDケースのルール???
(※これ、何のためのもんか、全く不明っす)
(原文pp151 7.14 Identifier caseの表にある4つのどれかが取り得る値っす)
constant
49 DW_AT_macro_info 0x43 マクロ情報(.debug_macinfo)へのリンク macptr
50 DW_AT_namelist_item 0x44 namelistのアイテム block
51 DW_AT_priority 0x45 モジュールの優先度
※他のDIEへの参照になっているが、何を参照するのか不明
reference
52 DW_AT_segment 0x46 アドレッシング情報(が格納されている場所) block
loclistptr
53 DW_AT_specification 0x47 * 不完全、未定義、分割された定義やある宣言への関連を示す情報
関連するDIEへのリンクを持っている
reference
54 DW_AT_static_link 0x48 上位フレームの位置(が格納されたDWARF expression)
※上位フレーム(uplevel frame)って何だ?なんとなく、呼出元関数?モジュール?
block
loclistptr
55 DW_AT_type 0x49 * 宣言の型
* 関数戻り値の型
の情報があるDIEへの参照です。
reference
56 DW_AT_use_location 0x4a "Member location for pointer to menber type"????
※スミマセン、これ翻訳不可能。。。(一旦保留。ま、オブジェクト言語だよねきっと)
block
loclistptr
57 DW_AT_variable_parameter 0x4b 常に必要とされないパラメタかどうかのフラグ。
常に必要とされないパラメタはtrue
※これvargとかだよねきっと
flag
58 DW_AT_virtuality 0x4c * virtual指示文
* 基底クラスのvirtual宣言
* 関数のvirtual宣言
これらの宣言がなされているかどうかの状況を示す固定値
(原文 pp149 7.11 Virtuality codesの表に定数あり)
constant
59 DW_AT_vtable_elem_location 0x4d vtableスロットにあるvirtual関数(の格納場所を指すDWARF expressionへの参照) block
loclistptr
60 DW_AT_allocated 0x4e * 型のアロケート状態
(※これも何が入るのか全く不明 ★要調査★)
DWARF3以降
block
constant
reference
61 DW_AT_associated 0x4f * 型の関連状態
(※詳細不明 ★要調査★ → 関連する型へのリンクなんかなぁ)
DWARF3以降
block
constant
reference
62 DW_AT_data_location 0x50 実データへの間接参照?
DWARF3以降
block
63 DW_AT_byte_stride 0x51 * enum配列のByteまたぎ幅?
* サブレンジのByteまたぎ幅?
(※すみません、訳ができへんこれ。。。)
DWARF3以降
block
constant
reference
64 DW_AT_entry_pc 0x52 * モジュール初期化(コードの)エントリアドレス
* 関数のエントリアドレス
* インライン関数のエントリアドレス
DWARF3以降
address
65 DW_AT_use_UTF8 0x53 Compilation Unit内の文字列がUTF8かどうかのフラグ。
UTF8使用なら、true
DWARF3以降
flag
66 DW_AT_extension 0x54 以前宣言したnamespaceの拡張、もしくはオリジナルのnamespace(への参照)
※C++詳しくないんで、翻訳あやしぃ〜
DWARF3以降
reference
67 DW_AT_ranges 0x55 コードの範囲が連続していない時の対象範囲が書かれた.debug_rangesへの参照
DWARF3以降
rangelistptr
68 DW_AT_trampoline 0x56 ターゲットのサブルーチン(関数)
※これも現状わしゃには意味不明
DWARF3以降
address
flag
reference
string
69 DW_AT_call_column 0x57 インライン関数呼出の列番号
※何に使うのこれ?
DWARF3以降
constant
70 DW_AT_call_file 0x58 インライン関数呼出を含むファイル番号
※どーいう時に使われるのかは分からんですが、このファイル番号は.debug_lineのファイルテーブルの番号っすね
DWARF3以降
constant
71 DW_AT_call_line 0x59 インライン関数呼出の行番号
※これもにゃんに使うんだろね?
DWARF3以降
constant
72 DW_AT_description 0x5a 固有文字列
※コンパイラなどが埋め込むものと思われ。
DWARF3以降
string
73 DW_AT_binary_scale 0x5b 固定ポインタ型?へのバイナリスケール倍率
(★要調査★ なんじゃこれ?なんとなく、24バイト飛びでアクセスするようなポインタアクセス時の飛びバイトを表すもの?高級言語向け?)
DWARF3以降
constant
74 DW_AT_decimal_scale 0x5c 整数スケール倍率
※なんかの言語には整数にスケールできる機能あるんですかねぇ?
DWARF3以降
constant
75 DW_AT_small 0x5d 固定ポインタ型におけるスケールファクタ(の情報が格納されたDIEへのリンク)
DWARF3以降
reference
76 DW_AT_decimal_sign 0x5e 整数の符号(のバイナリレベルでの持たせ方を示す定数)
(原文 pp147 Fig.26に入る値記述あり)
DWARF3以降
constant
77 DW_AT_digit_count 0x5f パックド10進数表記 or 算術文字列型の桁数
DWARF3以降
constant
78 DW_AT_picture_string 0x60 数字文字型用の絵文字?
※へんてこなBroken Japaneseな訳ですが、つまりのところ翻訳できてません。。
"picture string"って何?
DWARF3以降
string
79 DW_AT_mutable 0x61 メンバデータのmutableプロパティかどうかを示すフラグ
DWARF3以降
flag
80 DW_AT_threads_scaled 0x62 UPC配列におけるスレッドのスケール倍数
※これなんじゃ、ってかんじ、ですが、どーもぐぐるとJAVAっぽい
DWARF3以降
flag
81 DW_AT_explicit 0x63 メンバ関数が明示的なものかどうか(のフラグ)
DWARF3以降
flag
82 DW_AT_object_pointer 0x64 メンバ関数が所属するオブジェクトへのポインタ
※原文注釈みる限り、thisやself指定の時のポインタを示すものみたいです
DWARF3以降
reference
83 DW_AT_endianity 0x65 データのエンディアン(の表現方法を示すフラグ)
(原文 pp148 Fig27の表の値のいずれかが入る)
よーは、Little/Big Endianのどっちか、ってことですね。
DWARF3以降
constant
84 DW_AT_elemental 0x66 関数(メソッド)の基本属性
※なぜflag?
DWARF3以降
flag
85 DW_AT_pure 0x67 関数のPureプロパティ(なら、true)
DWARF3以降
flag
86 DW_AT_recursive 0x68 関数の循環プロパティ(なら、true)
※オブジェクト指向言語はほとんどしろーとなので、これ何をいっているか良く分かっていません。
ただ、翻訳違うよねこれきっと。直訳バレバレ。。。
DWARF3以降
flag
87 DW_AT_lo_user 0x2000 --- ---
88 DW_AT_hi_user 0x3fff --- ---


目次に戻る:DWARFファイルフォーマット