github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/debug/pe/symbol.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package pe
     6  
     7  const COFFSymbolSize = 18
     8  
     9  // COFFSymbolは、単一のCOFFシンボルテーブルレコードを表します。
    10  type COFFSymbol struct {
    11  	Name               [8]uint8
    12  	Value              uint32
    13  	SectionNumber      int16
    14  	Type               uint16
    15  	StorageClass       uint8
    16  	NumberOfAuxSymbols uint8
    17  }
    18  
    19  // FullNameは、シンボルsymの実際の名前を見つけます。通常、名前は
    20  // sym.Nameに格納されますが、それが8文字より長い場合、代わりに
    21  // COFF文字列テーブルstに格納されます。
    22  func (sym *COFFSymbol) FullName(st StringTable) (string, error)
    23  
    24  // Symbolは、NameフィールドがGoの文字列に置き換えられ、
    25  // NumberOfAuxSymbolsが存在しない [COFFSymbol] と似ています。
    26  type Symbol struct {
    27  	Name          string
    28  	Value         uint32
    29  	SectionNumber int16
    30  	Type          uint16
    31  	StorageClass  uint8
    32  }
    33  
    34  // COFFSymbolAuxFormat5は、セクション定義シンボルに付随するauxシンボルの予想される形式を説明します。
    35  // PEフォーマットは、関数定義のためのフォーマット1、.beおよび.efシンボルのためのフォーマット2など、
    36  // いくつかの異なるauxシンボルフォーマットを定義します。フォーマット5は、セクション定義に関連する追加情報を保持し、
    37  // 再配置の数+行番号、およびCOMDAT情報を含みます。ここで何が起こっているのかについての詳細は、
    38  // https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#auxiliary-format-5-section-definitions を参照してください。
    39  type COFFSymbolAuxFormat5 struct {
    40  	Size           uint32
    41  	NumRelocs      uint16
    42  	NumLineNumbers uint16
    43  	Checksum       uint32
    44  	SecNum         uint16
    45  	Selection      uint8
    46  	_              [3]uint8
    47  }
    48  
    49  // これらの定数は、AuxFormat5の 'Selection'
    50  // フィールドの可能な値を構成します。
    51  const (
    52  	IMAGE_COMDAT_SELECT_NODUPLICATES = 1
    53  	IMAGE_COMDAT_SELECT_ANY          = 2
    54  	IMAGE_COMDAT_SELECT_SAME_SIZE    = 3
    55  	IMAGE_COMDAT_SELECT_EXACT_MATCH  = 4
    56  	IMAGE_COMDAT_SELECT_ASSOCIATIVE  = 5
    57  	IMAGE_COMDAT_SELECT_LARGEST      = 6
    58  )
    59  
    60  // COFFSymbolReadSectionDefAuxは、セクション定義シンボルの補助情報
    61  // (COMDAT情報を含む)のブロブを返します。ここで 'idx' は、
    62  // Fileの主要な [COFFSymbol] 配列内のセクションシンボルのインデックスです。
    63  // 戻り値は、適切なauxシンボル構造体へのポインタです。詳細については、以下を参照してください:
    64  //
    65  // 補助シンボル: https://docs.microsoft.com/ja-jp/windows/win32/debug/pe-format#auxiliary-symbol-records
    66  // COMDATセクション: https://docs.microsoft.com/ja-jp/windows/win32/debug/pe-format#comdat-sections-object-only
    67  // セクション定義の補助情報: https://docs.microsoft.com/ja-jp/windows/win32/debug/pe-format#auxiliary-format-5-section-definitions
    68  func (f *File) COFFSymbolReadSectionDefAux(idx int) (*COFFSymbolAuxFormat5, error)