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)