elfwriter

package
v0.36.0 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2025 License: Apache-2.0 Imports: 9 Imported by: 1

Documentation

Overview

Package elfwriter is a package to write ELF files without having their entire contents in memory at any one time.

Original work started from https://github.com/go-delve/delve/blob/master/pkg/elfwriter/writer.go and additional functionality added on top.

This package does not provide completeness guarantees. Some of the missing features: - Consistency and soundness of relocations - Consistency and preservation of linked sections (when target removed (sh_link)) - partially supported - Consistency and existence of overlapping segments when a section removed (offset, range check)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCompressionHeaderFromSource

func NewCompressionHeaderFromSource(fhdr *elf.FileHeader, src io.ReaderAt, offset int64) (*compressionHeader, error)

func OnlyKeepDebug

func OnlyKeepDebug(dst io.WriteSeeker, src ReadAtCloser) error

Types

type Note

type Note struct {
	Type elf.NType
	Name string
	Data []byte
}

type NullifyingWriter

type NullifyingWriter struct {
	Writer
	// contains filtered or unexported fields
}

NullifyingWriter is a wrapper around another Writer that nullifies all the sections except the whitelisted ones.

func NewNullifyingWriter

func NewNullifyingWriter(dst io.WriteSeeker, src io.ReaderAt, opts ...Option) (*NullifyingWriter, error)

NewNullifyingWriter creates a new NullifyingWriter.

func (*NullifyingWriter) FilterPrograms

func (w *NullifyingWriter) FilterPrograms(predicates ...func(*elf.Prog) bool)

FilterPrograms filters out programs from the source.

func (*NullifyingWriter) Flush

func (w *NullifyingWriter) Flush() error

func (*NullifyingWriter) KeepSections

func (w *NullifyingWriter) KeepSections(predicates ...func(*elf.Section) bool)

KeepSections keeps only the sections that match the predicates. If no predicates are given, all sections are nullified.

type Option

type Option func(w *Writer)

func WithCompressDWARFSections

func WithCompressDWARFSections() Option

WithCompressDWARFSections compresses DWARF sections.

type ReadAtCloser added in v0.35.3

type ReadAtCloser interface {
	io.ReaderAt
	io.Closer
}

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

Writer writes ELF files.

func (*Writer) AddNotes

func (w *Writer) AddNotes(additionalNotes ...Note)

AddNotes adds additional notes to write to in the underlying io.WriterSeeker.

func (*Writer) Flush

func (w *Writer) Flush() error

Flush writes any buffered data to the underlying io.WriterSeeker.

func (*Writer) Reset

func (w *Writer) Reset(ws io.WriteSeeker)

Reset discards any unflushed buffered data, clears any error, and resets data to write its output to dst.

Jump to

Keyboard shortcuts

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