Package plan9obj implements access to Plan 9 a.out object files.



    View Source
    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


    This section is empty.


    This section is empty.


    type File

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

      A File represents an open Plan 9 a.out file.

      func NewFile

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

        NewFile creates a new File for accessing a Plan 9 binary in an underlying reader. The Plan 9 binary is expected to start at position 0 in the ReaderAt.

        func Open

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

          Open opens the named file using os.Open and prepares it for use as a Plan 9 a.out binary.

          func (*File) Close

          func (f *File) Close() error

            Close closes the File. If the File was created using NewFile directly instead of Open, Close has no effect.

            func (*File) Section

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

              Section returns a section with the given name, or nil if no such section exists.

              func (*File) Symbols

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

                Symbols returns the symbol table for f.

                type FileHeader

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

                  A FileHeader represents a Plan 9 a.out file header.

                  type Section

                  type Section struct {
                  	// 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.
                  	// contains filtered or unexported fields

                    A Section represents a single section in a Plan 9 a.out file.

                    func (*Section) Data

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

                      Data reads and returns the contents of the Plan 9 a.out section.

                      func (*Section) Open

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

                        Open returns a new ReadSeeker reading the Plan 9 a.out section.

                        type SectionHeader

                        type SectionHeader struct {
                        	Name   string
                        	Size   uint32
                        	Offset uint32

                          A SectionHeader represents a single Plan 9 a.out section header. This structure doesn't exist on-disk, but eases navigation through the object file.

                          type Sym

                          type Sym struct {
                          	Value uint64
                          	Type  rune
                          	Name  string

                            A Symbol represents an entry in a Plan 9 a.out symbol table section.