plan9obj

package
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 2 Imported by: 0

Documentation

Overview

plan9objパッケージは、Plan 9 a.outオブジェクトファイルへのアクセスを実装します。

セキュリティ

このパッケージは、敵対的な入力に対して強化されるように設計されていませんし、 https://go.dev/security/policy の範囲外です。特に、オブジェクトファイルを解析する際には基本的な 検証のみが行われます。そのため、信頼できない入力を解析する際には注意が必要です。なぜなら、 不正なファイルを解析すると、大量のリソースを消費したり、パニックを引き起こす可能性があるからです。

Index

Constants

View Source
const (
	Magic64 = 0x8000

	Magic386   = (4*11+0)*11 + 7
	MagicAMD64 = (4*26+0)*26 + 7 + Magic64
	MagicARM   = (4*20+0)*20 + 7
)

Variables

View Source
var ErrNoSymbols = errors.New("no symbol section")

ErrNoSymbolsは、File内にそのようなセクションがない場合に、 File.Symbols によって返されるエラーです。

Functions

This section is empty.

Types

type File

type File struct {
	FileHeader
	Sections []*Section
	// contains filtered or unexported fields
}

Fileは、開いているPlan 9 a.outファイルを表します。

func NewFile

func NewFile(r io.ReaderAt) (*File, error)

NewFileは、基礎となるリーダーでPlan 9バイナリにアクセスするための新しい File を作成します。 Plan 9バイナリは、ReaderAtの位置0で開始することが期待されます。

func Open

func Open(name string) (*File, error)

Openは、os.Open を使用して指定された名前のファイルを開き、 それをPlan 9 a.outバイナリとして使用するための準備をします。

func (*File) Close

func (f *File) Close() error

Closeは、File を閉じます。 FileOpen ではなく NewFile を直接使用して作成された場合、 Closeは何も影響を及ぼしません。

func (*File) Section

func (f *File) Section(name string) *Section

Sectionは、指定された名前のセクションを返します。 そのようなセクションが存在しない場合はnilを返します。

func (*File) Symbols

func (f *File) Symbols() ([]Sym, error)

Symbolsは、fのシンボルテーブルを返します。

type FileHeader

type FileHeader struct {
	Magic       uint32
	Bss         uint32
	Entry       uint64
	PtrSize     int
	LoadAddress uint64
	HdrSize     uint64
}

FileHeaderは、Plan 9 a.outファイルヘッダーを表します。

type Section

type Section struct {
	SectionHeader

	// ReadAtメソッドのためにReaderAtを埋め込みます。
	// ReadとSeekを持つことを避けるために、
	// SectionReaderを直接埋め込むことはありません。
	// クライアントがReadとSeekを使用したい場合は、
	// 他のクライアントとのシークオフセットの競合を避けるために
	// Open()を使用する必要があります。
	io.ReaderAt
	// contains filtered or unexported fields
}

Sectionは、Plan 9 a.outファイルの単一のセクションを表します。

func (*Section) Data

func (s *Section) Data() ([]byte, error)

Dataは、Plan 9 a.outセクションの内容を読み取り、返します。

func (*Section) Open

func (s *Section) Open() io.ReadSeeker

Openは、Plan 9 a.outセクションを読み取る新しいReadSeekerを返します。

type SectionHeader

type SectionHeader struct {
	Name   string
	Size   uint32
	Offset uint32
}

SectionHeaderは、単一のPlan 9 a.outセクションヘッダーを表します。 この構造体はディスク上には存在せず、オブジェクトファイルを通じた ナビゲーションを容易にします。

type Sym

type Sym struct {
	Value uint64
	Type  rune
	Name  string
}

Symは、Plan 9 a.outのシンボルテーブルセクションのエントリを表します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL