Documentation

Overview

    Package section contains binary stream manipulation utilities.

    Index

    Constants

    View Source
    const CustomName = "name"

    Variables

    This section is empty.

    Functions

    func CopyStandardSection

    func CopyStandardSection(w io.Writer, r Reader, id ID, customLoader func(r Reader, payloadLen uint32) error) (length int64, err error)

      CopyStandardSection with the given type if one is found. The returned length includes the copied section's header and payload (everything that was written). Custom sections preceding the standard section are processed by customLoader (or discarded if it's nil) - they are not included in the returned length. If another standard section type is found, it is left untouched (the reader will be backed up before the section id) and zero length is returned. If no standard section is encountered, zero length and io.EOF are returned. io.EOF is returned only when it occurs between sections.

      func CustomLoader

      func CustomLoader(loaders map[string]CustomContentLoader) func(Reader, uint32) error

      func SkipCustomSections

      func SkipCustomSections(r Reader, customLoader func(Reader, uint32) error) (err error)

        SkipCustomSections until the next standard section. The skipped sections are processed by customLoader (or discarded if it's nil). If no standard section is encountered, io.EOF is returned. io.EOF is returned only when it occurs between sections.

        Types

        type ByteRange

        type ByteRange struct {
        	Offset int64
        	Length int64
        }

        type CustomContentLoader

        type CustomContentLoader func(sectionName string, r Reader, payloadLen uint32) error

        type CustomMapping

        type CustomMapping ByteRange

        func (*CustomMapping) Loader

        func (target *CustomMapping) Loader(sectionMap *Map) CustomContentLoader

          Loader of arbitrary custom section. Remembers position, discards content.

          type CustomSections

          type CustomSections struct {
          	Sections map[string][]byte
          }

          func (*CustomSections) Load

          func (cs *CustomSections) Load(name string, r Reader, length uint32) (err error)

          type FuncName

          type FuncName struct {
          	FuncName   string
          	LocalNames []string
          }

          type ID

          type ID = module.SectionID

          type Map

          type Map struct {
          	Sections [module.NumSections]ByteRange
          }

            Map of section positions within the WebAssebly binary module. Map must me initialied with MakeMap or NewMap.

            Section offset is always nonzero for standard sections; if the section is missing, it's the position where it would be. Section length is nonzero if the section is present.

            Sections[Custom] holds information about the last (or latest) custom section. Its offset is zero if there are no custom sections.

            func MakeMap

            func MakeMap() (m Map)

              MakeMap which represents an empty module.

              func NewMap

              func NewMap() *Map

                NewMap which represents an empty module.

                func (*Map) Mapper

                func (m *Map) Mapper() func(byte, Reader) (uint32, error)

                type MappedNameSection

                type MappedNameSection struct {
                	NameSection
                	Mapping ByteRange
                }

                func (*MappedNameSection) Loader

                func (ns *MappedNameSection) Loader(sectionMap *Map) func(string, Reader, uint32) error

                  Loader of "name" section. Remembers position.

                  type NameSection

                  type NameSection struct {
                  	ModuleName string
                  	FuncNames  []FuncName
                  }

                  func (*NameSection) Load

                  func (ns *NameSection) Load(_ string, r Reader, length uint32) (err error)

                    Load "name" section.

                    type Reader

                    type Reader = binary.Reader