...

パッケージ dwarf

import "debug/dwarf"
概要
目次

概要 ▾

dwarf パッケージは,DWARF 2.0 Standard と http://dwarfstd.org/doc/dwarf-2.0.0.pdf で定義されている,実行ファイルから読み込まれる DWARF デバッグ情報へのアクセスを提供します。

目次 ▾

変数
type AddrType
type ArrayType
    func (t *ArrayType) Size() int64
    func (t *ArrayType) String() string
type Attr
    func (a Attr) GoString() string
    func (i Attr) String() string
type BasicType
    func (b *BasicType) Basic() *BasicType
    func (t *BasicType) String() string
type BoolType
type CharType
type Class
    func (i Class) GoString() string
    func (i Class) String() string
type CommonType
    func (c *CommonType) Common() *CommonType
    func (c *CommonType) Size() int64
type ComplexType
type Data
    func New(abbrev, aranges, frame, info, line, pubnames, ranges, str []byte) (*Data, error)
    func (d *Data) AddTypes(name string, types []byte) error
    func (d *Data) LineReader(cu *Entry) (*LineReader, error)
    func (d *Data) Ranges(e *Entry) ([][2]uint64, error)
    func (d *Data) Reader() *Reader
    func (d *Data) Type(off Offset) (Type, error)
type DecodeError
    func (e DecodeError) Error() string
type DotDotDotType
    func (t *DotDotDotType) String() string
type Entry
    func (e *Entry) AttrField(a Attr) *Field
    func (e *Entry) Val(a Attr) interface{}
type EnumType
    func (t *EnumType) String() string
type EnumValue
type Field
type FloatType
type FuncType
    func (t *FuncType) String() string
type IntType
type LineEntry
type LineFile
type LineReader
    func (r *LineReader) Next(entry *LineEntry) error
    func (r *LineReader) Reset()
    func (r *LineReader) Seek(pos LineReaderPos)
    func (r *LineReader) SeekPC(pc uint64, entry *LineEntry) error
    func (r *LineReader) Tell() LineReaderPos
type LineReaderPos
type Offset
type PtrType
    func (t *PtrType) String() string
type QualType
    func (t *QualType) Size() int64
    func (t *QualType) String() string
type Reader
    func (r *Reader) AddressSize() int
    func (r *Reader) Next() (*Entry, error)
    func (r *Reader) Seek(off Offset)
    func (r *Reader) SeekPC(pc uint64) (*Entry, error)
    func (r *Reader) SkipChildren()
type StructField
type StructType
    func (t *StructType) Defn() string
    func (t *StructType) String() string
type Tag
    func (t Tag) GoString() string
    func (i Tag) String() string
type Type
type TypedefType
    func (t *TypedefType) Size() int64
    func (t *TypedefType) String() string
type UcharType
type UintType
type UnspecifiedType
type UnsupportedType
    func (t *UnsupportedType) String() string
type VoidType
    func (t *VoidType) String() string

パッケージファイル

attr_string.go buf.go class_string.go const.go entry.go line.go open.go tag_string.go type.go typeunit.go unit.go

変数

ErrUnknownPC は,シーク PC が回線テーブルのどのエントリにも含まれていない場合に LineReader.ScanPC によって返されるエラーです。

var ErrUnknownPC = errors.New("ErrUnknownPC")

type AddrType

AddrType はマシンアドレス型を表します。

type AddrType struct {
    BasicType
}

type ArrayType

ArrayType は,固定サイズの配列型を表します。

type ArrayType struct {
    CommonType
    Type          Type
    StrideBitSize int64 // 0 より大きい場合,各要素を保持するビット数
    Count         int64 // if == -1 , char x[] のような不完全な配列。
}

func (*ArrayType) Size

func (t *ArrayType) Size() int64

func (*ArrayType) String

func (t *ArrayType) String() string

type Attr

Attr は, DWARF エントリのフィールド内の属性型を識別します。

type Attr uint32
const (
    AttrSibling        Attr = 0x01
    AttrLocation       Attr = 0x02
    AttrName           Attr = 0x03
    AttrOrdering       Attr = 0x09
    AttrByteSize       Attr = 0x0B
    AttrBitOffset      Attr = 0x0C
    AttrBitSize        Attr = 0x0D
    AttrStmtList       Attr = 0x10
    AttrLowpc          Attr = 0x11
    AttrHighpc         Attr = 0x12
    AttrLanguage       Attr = 0x13
    AttrDiscr          Attr = 0x15
    AttrDiscrValue     Attr = 0x16
    AttrVisibility     Attr = 0x17
    AttrImport         Attr = 0x18
    AttrStringLength   Attr = 0x19
    AttrCommonRef      Attr = 0x1A
    AttrCompDir        Attr = 0x1B
    AttrConstValue     Attr = 0x1C
    AttrContainingType Attr = 0x1D
    AttrDefaultValue   Attr = 0x1E
    AttrInline         Attr = 0x20
    AttrIsOptional     Attr = 0x21
    AttrLowerBound     Attr = 0x22
    AttrProducer       Attr = 0x25
    AttrPrototyped     Attr = 0x27
    AttrReturnAddr     Attr = 0x2A
    AttrStartScope     Attr = 0x2C
    AttrStrideSize     Attr = 0x2E
    AttrUpperBound     Attr = 0x2F
    AttrAbstractOrigin Attr = 0x31
    AttrAccessibility  Attr = 0x32
    AttrAddrClass      Attr = 0x33
    AttrArtificial     Attr = 0x34
    AttrBaseTypes      Attr = 0x35
    AttrCalling        Attr = 0x36
    AttrCount          Attr = 0x37
    AttrDataMemberLoc  Attr = 0x38
    AttrDeclColumn     Attr = 0x39
    AttrDeclFile       Attr = 0x3A
    AttrDeclLine       Attr = 0x3B
    AttrDeclaration    Attr = 0x3C
    AttrDiscrList      Attr = 0x3D
    AttrEncoding       Attr = 0x3E
    AttrExternal       Attr = 0x3F
    AttrFrameBase      Attr = 0x40
    AttrFriend         Attr = 0x41
    AttrIdentifierCase Attr = 0x42
    AttrMacroInfo      Attr = 0x43
    AttrNamelistItem   Attr = 0x44
    AttrPriority       Attr = 0x45
    AttrSegment        Attr = 0x46
    AttrSpecification  Attr = 0x47
    AttrStaticLink     Attr = 0x48
    AttrType           Attr = 0x49
    AttrUseLocation    Attr = 0x4A
    AttrVarParam       Attr = 0x4B
    AttrVirtuality     Attr = 0x4C
    AttrVtableElemLoc  Attr = 0x4D
    AttrAllocated      Attr = 0x4E
    AttrAssociated     Attr = 0x4F
    AttrDataLocation   Attr = 0x50
    AttrStride         Attr = 0x51
    AttrEntrypc        Attr = 0x52
    AttrUseUTF8        Attr = 0x53
    AttrExtension      Attr = 0x54
    AttrRanges         Attr = 0x55
    AttrTrampoline     Attr = 0x56
    AttrCallColumn     Attr = 0x57
    AttrCallFile       Attr = 0x58
    AttrCallLine       Attr = 0x59
    AttrDescription    Attr = 0x5A
)

func (Attr) GoString

func (a Attr) GoString() string

func (Attr) String

func (i Attr) String() string

type BasicType

BasicType は,すべての基本型に共通のフィールドを保持します。

type BasicType struct {
    CommonType
    BitSize   int64
    BitOffset int64
}

func (*BasicType) Basic

func (b *BasicType) Basic() *BasicType

func (*BasicType) String

func (t *BasicType) String() string

type BoolType

BoolType はブール型を表します。

type BoolType struct {
    BasicType
}

type CharType

CharType は符号付き文字型を表します。

type CharType struct {
    BasicType
}

type Class 1.5

Class (クラス) は,属性値の DWARF 4 クラスです。

一般に,与えられた属性の値は, DWARF によって定義されたいくつかの可能なクラスのうちの 1 つをとることができ,それぞれがわずかに異なる属性の解釈を導きます。

DWARF バージョン 4 は,属性値クラスを以前のバージョンの DWARF よりも細かく区別します。 リーダーは, DWARF の以前のバージョンからのより粗いクラスを適切な DWARF 4 クラスに明確にします。 たとえば, DWARF 2 は定数およびすべての型のセクションオフセットに " 定数 " を使用しますが,セクションオフセットが Class*Ptr クラスの 1 つだけである場合でも, DWARF 2 ファイル内の属性を正規化します。 DWARF 3 で定義されています。

type Class int
const (
    // ClassUnknown は,未知の DWARF クラスの値を表します。
    ClassUnknown Class = iota

    // ClassAddress は,ターゲットマシンのアドレスである uint64 型の値を表します。
    ClassAddress

    // ClassBlock は,その解釈が属性に依存する type []byte の値を表します。
    ClassBlock

    // ClassConstant は,定数である int64 型の値を表します。
    // この定数の解釈は属性によって異なります。
    ClassConstant

    // ClassExprLoc は,エンコードされた DWARF 式または場所の説明を含む []byte の値を表します。
    ClassExprLoc

    // ClassFlag は bool 型の値を表します。
    ClassFlag

    // ClassLinePtr は, "line" セクションへの int64 オフセットの値を表します。
    ClassLinePtr

    // ClassLocListPtr は, "loclist" セクションへの int64 オフセットである値を表します。
    ClassLocListPtr

    // ClassMacPtr は, "mac" セクションへの int64 オフセットである値を表します。
    ClassMacPtr

    // ClassMacPtr は, "rangelist" セクションへの int64 オフセットである値を表します。
    ClassRangeListPtr

    // ClassReference は, info セクション内のエントリのオフセットオフセットである値を表します (Reader.Seek と共に使用します) 。
    // DWARF 仕様では, ClassReference と ClassReferenceSig をクラス "reference" にまとめています。
    ClassReference

    // ClassReferenceSig は,エントリ型を参照する uint64 型のシグニチャである値を表します。
    ClassReferenceSig

    // ClassString は文字列である値を表します。
    // コンパイル単位が AttrUseUTF8 フラグを指定している場合 (強くお勧めします) ,文字列値は UTF-8 でエンコードされます。
    // それ以外の場合,エンコーディングは指定されていません。
    ClassString

    // ClassReferenceAlt は,代替オブジェクトファイルの DWARF "info" セクションへのオフセットである int64 型の値を表します。
    ClassReferenceAlt

    // ClassStringAlt は,代替オブジェクトファイルの DWARF 文字列セクションへのオフセットである int64 型の値を表します。
    ClassStringAlt
)

func (Class) GoString 1.5

func (i Class) GoString() string

func (Class) String 1.5

func (i Class) String() string

type CommonType

CommonType は,複数の型に共通のフィールドを保持します。 フィールドが不明であるか特定の型に適用できない場合は,ゼロ値が使用されます。

type CommonType struct {
    ByteSize int64  // この型の値のサイズ (バイト)
    Name     string // 型を参照するために使用できる名前
}

func (*CommonType) Common

func (c *CommonType) Common() *CommonType

func (*CommonType) Size

func (c *CommonType) Size() int64

type ComplexType

ComplexType は,複素数浮動小数点型を表します。

type ComplexType struct {
    BasicType
}

type Data

Data は,実行可能ファイル (たとえば, ELF または Mach-O 実行可能ファイル) からロードされた DWARF デバッグ情報を表します。

type Data struct {
    // エクスポートされていないフィールドがあります
}

func New

func New(abbrev, aranges, frame, info, line, pubnames, ranges, str []byte) (*Data, error)

New は与えられたパラメータから初期化された新しい Data オブジェクトを返します。 この関数を直接呼び出すのではなく,クライアントは通常,適切なパッケージ debug/elf , debug/macho ,または debug/pe のファイル型の DWARF メソッドを使用する必要があります。

[]byte 引数は,オブジェクトファイル内の対応するデバッグセクションからのデータです。 たとえば, ELF オブジェクトの場合, abbrev は ".debug_abbrev" セクションの内容です。

func (*Data) AddTypes 1.3

func (d *Data) AddTypes(name string, types []byte) error

AddTypes は DWARF データに 1 つの .debug_types セクションを追加します。 DWARF バージョン 4 のデバッグ情報を持つ一般的なオブジェクトには,複数の .debug_types セクションがあります。 この名前はエラー報告にのみ使用され, 1 つの .debug_types セクションを別のセクションと区別するのに役立ちます。

func (*Data) LineReader 1.5

func (d *Data) LineReader(cu *Entry) (*LineReader, error)

LineReader は,コンパイル単位 cu の行テーブルの新しいリーダーを返します。 これは, TagCompileUnit タグを持つエントリである必要があります。

このコンパイル単位に行テーブルがない場合は, nil, nil を返します。

func (*Data) Ranges 1.7

func (d *Data) Ranges(e *Entry) ([][2]uint64, error)

Ranges は, [low,high) ペアのスライスである e でカバーされる PC 範囲を返します。 TagCompileUnit や TagSub プログラムなどの一部のエントリ型にのみ PC 範囲があります。 他の人にとっては,これはエラーなしで nil を返すでしょう。

func (*Data) Reader

func (d *Data) Reader() *Reader

Reader は新しい Reader for Data を返します。 リーダーは, DWARF の " 情報 " セクションのバイトオフセット 0 に配置されています。

func (*Data) Type

func (d *Data) Type(off Offset) (Type, error)

Type は DWARF の “info” セクションの off の位置にある型を読み込みます。

type DecodeError

type DecodeError struct {
    Name   string
    Offset Offset
    Err    string
}

func (DecodeError) Error

func (e DecodeError) Error() string

type DotDotDotType

DotDotDotType は可変個の ... 関数パラメータを表します。

type DotDotDotType struct {
    CommonType
}

func (*DotDotDotType) String

func (t *DotDotDotType) String() string

type Entry

エントリは,属性と値のペアのシーケンスです。

type Entry struct {
    Offset   Offset // DWARF 情報のエントリのオフセット
    Tag      Tag    // タグ (エントリーの種類)
    Children bool   // エントリーの後に子供がいるかどうか
    Field    []Field
}

func (*Entry) AttrField 1.5

func (e *Entry) AttrField(a Attr) *Field

AttrField は Entry の属性 Attr に関連付けられた Field を返します。 そのような属性がない場合は nil を返します。

func (*Entry) Val

func (e *Entry) Val(a Attr) interface{}

Val は Entry の属性 Attr に関連付けられた値を返します。 そのような属性がない場合は nil を返します。

nil return のチェックと,値が予想される動的型であることのチェックを同時に行う一般的な方法は以下です。

v, ok := e.Val(AttrSibling).(int64)

type EnumType

EnumType は列挙型を表します。 そのネイティブの整数型の唯一の指示は,その ByteSize(CommonType 内部) です。

type EnumType struct {
    CommonType
    EnumName string
    Val      []*EnumValue
}

func (*EnumType) String

func (t *EnumType) String() string

type EnumValue

EnumValue は 1 つの列挙値を表します。

type EnumValue struct {
    Name string
    Val  int64
}

type Field

Field (フィールド) は,エントリ内の 1 つの属性と値のペアです。

値は, DWARF によって定義されたいくつかの " 属性クラス " の 1 つになります。 各クラスに対応する Go 型は以下のとおりです。

DWARF クラス       Go 型          Class
-----------       -------        -----
address           uint64         ClassAddress
block             []byte         ClassBlock
constant          int64          ClassConstant
flag              bool           ClassFlag
reference
  to info         dwarf.Offset   ClassReference
  to type unit    uint64         ClassReferenceSig
string            string         ClassString
exprloc           []byte         ClassExprLoc
lineptr           int64          ClassLinePtr
loclistptr        int64          ClassLocListPtr
macptr            int64          ClassMacPtr
rangelistptr      int64          ClassRangeListPtr

認識されない属性またはベンダー定義の属性の場合, Class は ClassUnknown になります。

type Field struct {
    Attr  Attr
    Val   interface{}
    Class Class // Go 1.5
}

type FloatType

FloatType は浮動小数点型を表します。

type FloatType struct {
    BasicType
}

type FuncType

FuncType は関数型を表します。

type FuncType struct {
    CommonType
    ReturnType Type
    ParamType  []Type
}

func (*FuncType) String

func (t *FuncType) String() string

type IntType

IntType は符号付き整数型を表します。

type IntType struct {
    BasicType
}

type LineEntry 1.5

LineEntry は DWARF ラインテーブル内の行です。

type LineEntry struct {
    // アドレスは,コンパイラによって生成された機械語命令のプログラムカウンタ値です。
    // この LineEntry は, Address から次の LineEntry の Address の直前までの各命令に適用されます。
    Address uint64

    // OpIndex は, VLIW 命令内の操作のインデックスです。
    // 最初の操作のインデックスは 0 です。
    // VLIW 以外のアーキテクチャでは,常に 0 になります。
    // Address と OpIndex は,命令ストリーム内の個々の操作を参照できる操作ポインタを形成します。
    OpIndex int

    // File はこれらの命令に対応するソースファイルです。
    File *LineFile

    // Line はこれらの命令に対応するソースコード行番号です。
    // 行の番号は 1 から始まります。
    // これらの命令がどのソース行にも属さない場合は, 0 になることがあります。
    Line int

    // Column は,これらの命令のソース行内の列番号です。
    // 列には 1 から始まる番号が付けられます。
    // 行の " 左端 " を示すために 0 になる場合があります。
    Column int

    // IsStmt は, Address が行,ステートメント,ステートメントの個別のサブパートなど,推奨されるブレークポイントの場所であることを示します。
    IsStmt bool

    // BasicBlock は, Address が基本ブロックの始まりであることを示します。
    BasicBlock bool

    // PrologueEnd は, Address が含まれている関数への入り口でブレークポイントのために実行が延期されるべき (おそらく多くの)1 台の PC であることを示します。
    //
    // DWARF 3 で追加されました。
    PrologueEnd bool

    // EpilogueBegin は, Address が,この関数の終了時にブレークポイントのために実行が中断されるべき 1 つの (おそらく多数の) PC であることを示します。
    //
    // DWARF 3 で追加されました。
    EpilogueBegin bool

    // ISA はこれらの命令の命令セットアーキテクチャです。
    // 可能な ISA 値は適切な ABI 仕様によって定義されるべきです。
    //
    // DWARF 3 で追加されました。
    ISA int

    // Discriminator は,これらの命令が属するブロックを示す任意の整数です。
    // これは,すべて同じソースファイル,行,および列を持つ可能性がある複数のブロックを区別するのに役立ちます。
    // 与えられたソース位置に対して 1 つのブロックしか存在しない場合,それは 0 であるべきです。
    //
    // DWARF 3 で追加されました。
    Discriminator int

    // EndSequence は, Address が一連のターゲットマシン命令の終了後の最初のバイトであることを示します。
    // 設定されている場合,これと Address フィールドのみが意味を持ちます。
    // 行番号テーブルは,複数の潜在的にばらばらの命令シーケンスに関する情報を含むことができる。
    // ラインテーブルの最後のエントリには,必ず EndSequence を設定してください。
    EndSequence bool
}

type LineFile 1.5

LineFile は, DWARF 行テーブルエントリによって参照されるソースファイルです。

type LineFile struct {
    Name   string
    Mtime  uint64 // 実装定義の修正時間,または不明の場合は 0
    Length int    // ファイル長,または不明の場合は 0
}

type LineReader 1.5

LineReader は, 1 つのコンパイル単位に対して, DWARF の "line" セクションから LineEntry 構造体のシーケンスを読み取ります。 LineEntries は PC が増加する順に発生し,各 LineEntry はその LineEntry の PC から次の LineEntry の PC の直前までの命令のメタデータを提供します。 最後のエントリには, EndSequence フィールドが設定されています。

type LineReader struct {
    // エクスポートされていないフィールドがあります
}

func (*LineReader) Next 1.5

func (r *LineReader) Next(entry *LineEntry) error

Next は,このラインテーブルの次の行に * エントリを設定して,次の行に移動します。 それ以上エントリがなく,行テーブルが正しく終了している場合は, io.EOF を返します。

行は常に entry.Address の昇順になっていますが, entry.Line は前後に移動することがあります。

func (*LineReader) Reset 1.5

func (r *LineReader) Reset()

リセットすると,行テーブルリーダーは行テーブルの先頭に移動します。

func (*LineReader) Seek 1.5

func (r *LineReader) Seek(pos LineReaderPos)

Seek は, Line テーブルリーダーを Tell によって返された位置に復元します。

引数 pos は,この行テーブルに対して Tell を呼び出して返されたものでなければなりません。

func (*LineReader) SeekPC 1.5

func (r *LineReader) SeekPC(pc uint64, entry *LineEntry) error

SeekPC は pc を含む LineEntry に * エントリを設定し,ラインテーブルの次のエントリにリーダーを配置します。 必要ならば,これは逆方向に探して pc を見つけます。

pc がこの行テーブルのどのエントリにも含まれていない場合, SeekPC は ErrUnknownPC を返します。 この場合, *entry と最終シーク位置は指定されていません。

DWARF ラインテーブルでは,順次順方向スキャンのみが許可されています。 従って,最悪の場合,これはラインテーブルのサイズにおいて線形の時間がかかる。 呼び出し元が高速の PC ルックアップを繰り返し実行したい場合は,回線テーブルの適切なインデックスを作成する必要があります。

func (*LineReader) Tell 1.5

func (r *LineReader) Tell() LineReaderPos

Tell は,行テーブルの現在位置を返します。

type LineReaderPos 1.5

LineReaderPos は,回線テーブル内の位置を表します。

type LineReaderPos struct {
    // エクスポートされていないフィールドがあります
}

type Offset

Offset (オフセット) は, DWARF 情報内のエントリの場所を表します。 (Reader.Seek を参照してください。)

type Offset uint32

type PtrType

PtrType はポインタ型を表します。

type PtrType struct {
    CommonType
    Type Type
}

func (*PtrType) String

func (t *PtrType) String() string

type QualType

QualType は, C/C++ の "const", "restrict" ,または "volatile" 修飾子を持つ型を表します。

type QualType struct {
    CommonType
    Qual string
    Type Type
}

func (*QualType) Size

func (t *QualType) Size() int64

func (*QualType) String

func (t *QualType) String() string

type Reader

Reader は DWARF の “info” セクションから Entry 構造体を読むことを可能にします。 エントリ構造はツリー状に配置されています。 Reader の Next 関数は,ツリーの事前注文走査から連続したエントリを返します。 エントリに子がある場合,その Children フィールドは true になり,子はそれに続き, Tag 0 のエントリで終了します。

type Reader struct {
    // エクスポートされていないフィールドがあります
}

func (*Reader) AddressSize 1.5

func (r *Reader) AddressSize() int

AddressSize は,現在のコンパイル単位のアドレスのサイズをバイト数で返します。

func (*Reader) Next

func (r *Reader) Next() (*Entry, error)

Next は,エンコードされたエントリストリームから次のエントリを読み込みます。 セクションの終わりに達すると, nil, nil を返します。 現在のオフセットが無効であるか,オフセットのデータが有効なエントリとしてデコードできない場合はエラーを返します。

func (*Reader) Seek

func (r *Reader) Seek(off Offset)

Seek (シーク) は,エンコードされたエントリストリーム内で Reader をオフセット off に配置します。 オフセット 0 を使用して最初の項目を示すことができます。

func (*Reader) SeekPC 1.7

func (r *Reader) SeekPC(pc uint64) (*Entry, error)

SeekPC は, pc を含むコンパイル単位のエントリを返し,その単位の子を読むようにリーダーを配置します。 pc がどのユニットにも覆われていない場合, SeekPC は ErrUnknownPC を返し,リーダーの位置は未定義です。

コンパイル単位は実行可能ファイルの複数の領域を記述できるため,最悪の場合, SeekPC はすべてのコンパイル単位内のすべての範囲を検索する必要があります。 SeekPC を呼び出すたびに,最後の呼び出しのコンパイル単位で検索が開始されるため,一般的に,一連の PC をソートすると検索が速くなります。 呼び出し元が高速の PC ルックアップを繰り返し行う場合は, Ranges メソッドを使用して適切なインデックスを作成してください。

func (*Reader) SkipChildren

func (r *Reader) SkipChildren()

SkipChildren は, Next によって返された最後のエントリに関連付けられている子エントリをスキップします。 そのエントリが子を持っていなかったり Next が呼び出されていなかった場合, SkipChildren は何もしません。

type StructField

StructField は,構造体,共用体,または C++ クラス型のフィールドを表します。

type StructField struct {
    Name       string
    Type       Type
    ByteOffset int64
    ByteSize   int64 // 通常はゼロです。 通常のフィールドには Type.Size() を使用してください。
    BitOffset  int64 // ByteOffset の ByteSize バイト以内
    BitSize    int64 // ビットフィールドでない場合はゼロ
}

type StructType

StructType は,構造体,共用体,または C++ クラス型を表します。

type StructType struct {
    CommonType
    StructName string
    Kind       string // "struct", "union" ,または "class" 。
    Field      []*StructField
    Incomplete bool // true の場合, struct, union, class は宣言されているが未定義
}

func (*StructType) Defn

func (t *StructType) Defn() string

func (*StructType) String

func (t *StructType) String() string

type Tag

Tag (タグ) はエントリの分類 (型) です。

type Tag uint32
const (
    TagArrayType              Tag = 0x01
    TagClassType              Tag = 0x02
    TagEntryPoint             Tag = 0x03
    TagEnumerationType        Tag = 0x04
    TagFormalParameter        Tag = 0x05
    TagImportedDeclaration    Tag = 0x08
    TagLabel                  Tag = 0x0A
    TagLexDwarfBlock          Tag = 0x0B
    TagMember                 Tag = 0x0D
    TagPointerType            Tag = 0x0F
    TagReferenceType          Tag = 0x10
    TagCompileUnit            Tag = 0x11
    TagStringType             Tag = 0x12
    TagStructType             Tag = 0x13
    TagSubroutineType         Tag = 0x15
    TagTypedef                Tag = 0x16
    TagUnionType              Tag = 0x17
    TagUnspecifiedParameters  Tag = 0x18
    TagVariant                Tag = 0x19
    TagCommonDwarfBlock       Tag = 0x1A
    TagCommonInclusion        Tag = 0x1B
    TagInheritance            Tag = 0x1C
    TagInlinedSubroutine      Tag = 0x1D
    TagModule                 Tag = 0x1E
    TagPtrToMemberType        Tag = 0x1F
    TagSetType                Tag = 0x20
    TagSubrangeType           Tag = 0x21
    TagWithStmt               Tag = 0x22
    TagAccessDeclaration      Tag = 0x23
    TagBaseType               Tag = 0x24
    TagCatchDwarfBlock        Tag = 0x25
    TagConstType              Tag = 0x26
    TagConstant               Tag = 0x27
    TagEnumerator             Tag = 0x28
    TagFileType               Tag = 0x29
    TagFriend                 Tag = 0x2A
    TagNamelist               Tag = 0x2B
    TagNamelistItem           Tag = 0x2C
    TagPackedType             Tag = 0x2D
    TagSubprogram             Tag = 0x2E
    TagTemplateTypeParameter  Tag = 0x2F
    TagTemplateValueParameter Tag = 0x30
    TagThrownType             Tag = 0x31
    TagTryDwarfBlock          Tag = 0x32
    TagVariantPart            Tag = 0x33
    TagVariable               Tag = 0x34
    TagVolatileType           Tag = 0x35
    // 以下は DWARF 3 の新機能です。
    TagDwarfProcedure  Tag = 0x36
    TagRestrictType    Tag = 0x37
    TagInterfaceType   Tag = 0x38
    TagNamespace       Tag = 0x39
    TagImportedModule  Tag = 0x3A
    TagUnspecifiedType Tag = 0x3B
    TagPartialUnit     Tag = 0x3C
    TagImportedUnit    Tag = 0x3D
    TagMutableType     Tag = 0x3E // 後で DWARF から削除されました。
    TagCondition       Tag = 0x3F
    TagSharedType      Tag = 0x40
    // 以下は DWARF 4 の新機能です。
    TagTypeUnit            Tag = 0x41
    TagRvalueReferenceType Tag = 0x42
    TagTemplateAlias       Tag = 0x43
)

func (Tag) GoString

func (t Tag) GoString() string

func (Tag) String

func (i Tag) String() string

type Type

Type は通常,特定の Type 構造体 (CharType, StructType など) のいずれかへのポインタを表します。

type Type interface {
    Common() *CommonType
    String() string
    Size() int64
}

type TypedefType

TypedefType は名前付き型を表します。

type TypedefType struct {
    CommonType
    Type Type
}

func (*TypedefType) Size

func (t *TypedefType) Size() int64

func (*TypedefType) String

func (t *TypedefType) String() string

type UcharType

UcharType は,符号なし文字型を表します。

type UcharType struct {
    BasicType
}

type UintType

UintType は符号なし整数型を表します。

type UintType struct {
    BasicType
}

type UnspecifiedType 1.4

UnspecifiedType は,暗黙的,不明,あいまいまたは存在しない型を表します。

type UnspecifiedType struct {
    BasicType
}

type UnsupportedType 1.13

UnsupportedType は,サポートされていない型に遭遇した場合に返されるプレースホルダーです。

type UnsupportedType struct {
    CommonType
    Tag Tag
}

func (*UnsupportedType) String 1.13

func (t *UnsupportedType) String() string

type VoidType

VoidType は C の void 型を表します。

type VoidType struct {
    CommonType
}

func (*VoidType) String

func (t *VoidType) String() string