Пакет plan9obj
Обзор
Пакет plan9obj реализует доступ к объектным файлам Plan 9 a.out.
Безопасность
Этот пакет не предназначен для защиты от вредоносных входных данных и находится вне области действия https://go.dev/security/policy. В частности, при разборе объектных файлов выполняется только базовая валидация. Поэтому необходимо проявлять осторожность при разборе недоверенных входных данных, так как разбор некорректных файлов может потребовать значительных ресурсов или привести к панике.
Индекс
Файлы пакета
file.go plan9obj.go
Константы
const (
Magic64 = 0x8000 // 64-bit expanded header
Magic386 = (4*11+0)*11 + 7
MagicAMD64 = (4*26+0)*26 + 7 + Magic64
MagicARM = (4*20+0)*20 + 7
) Переменные
ErrNoSymbols возвращается функцией File.Symbols, если в File отсутствует соответствующий раздел.
var ErrNoSymbols = errors.New("no symbol section") тип File 1.3
File представляет собой открытый файл Plan 9 a.out.
type File struct {
FileHeader
Sections []*Section
// contains filtered or unexported fields
}
функция NewFile 1.3
func NewFile(r io.ReaderAt) (*File, error)
NewFile создаёт новый File для доступа к бинарному файлу Plan 9 в базовом ридере. Ожидается, что бинарный файл Plan 9 начнётся с позиции 0 в ReaderAt.
функция Open 1.3
func Open(name string) (*File, error)
Open открывает файл с заданным именем с помощью os.Open и подготавливает его для использования как бинарного файла Plan 9 a.out.
функция (*File) Close 1.3
func (f *File) Close() error
Close закрывает File. Если File был создан с помощью NewFile напрямую, а не Open, Close не оказывает никакого влияния.
функция (*File) Section 1.3
func (f *File) Section(name string) *Section
Section возвращает раздел с заданным именем или nil, если такой раздел не существует.
функция (*File) Symbols 1.3
func (f *File) Symbols() ([]Sym, error)
Symbols возвращает таблицу символов для f.
тип FileHeader 1.3
FileHeader представляет заголовок файла Plan 9 a.out.
type FileHeader struct {
Magic uint32
Bss uint32
Entry uint64
PtrSize int
LoadAddress uint64 // Go 1.4
HdrSize uint64 // Go 1.4
}
тип Section 1.3
Section представляет собой отдельный раздел в файле Plan 9 a.out.
type Section struct {
SectionHeader
// Embed ReaderAt for ReadAt method.
// Do not embed SectionReader directly
// to avoid having Read and Seek.
// If a client wants Read and Seek it must use
// Open() to avoid fighting over the seek offset
// with other clients.
io.ReaderAt
// contains filtered or unexported fields
}
функция (*Section) Data 1.3
func (s *Section) Data() ([]byte, error)
Data считывает и возвращает содержимое раздела Plan 9 a.out.
функция (*Section) Open 1.3
func (s *Section) Open() io.ReadSeeker
Open возвращает новый ReadSeeker, считывающий раздел Plan 9 a.out.
тип SectionHeader 1.3
SectionHeader представляет собой заголовок отдельного раздела Plan 9 a.out. Эта структура не существует на диске, но облегчает навигацию по объектному файлу.
type SectionHeader struct {
Name string
Size uint32
Offset uint32
}
тип Sym 1.3
Sym представляет запись в разделе таблицы символов Plan 9 a.out.
type Sym struct {
Value uint64
Type rune
Name string
}
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/debug/plan9obj/