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 OnlyKeepDebug ¶
func OnlyKeepDebug(dst io.WriteSeeker, src ReadAtCloser) error
Types ¶
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 Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer writes ELF files.
func (*Writer) AddNotes ¶
AddNotes adds additional notes to write to in 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.