github.com/pkujhd/goloader@v0.0.0-20240411034752-1a28096bd7bd/module.1.8.go (about)

     1  //go:build go1.8 && !go1.10
     2  // +build go1.8,!go1.10
     3  
     4  package goloader
     5  
     6  const magic uint32 = 0xFFFFFFFB
     7  
     8  // pcHeader holds data used by the pclntab lookups.
     9  type pcHeader struct {
    10  	magic      uint32 // 0xFFFFFFFB
    11  	pad1, pad2 uint8  // 0,0
    12  	minLC      uint8  // min instruction size
    13  	ptrSize    uint8  // size of a ptr in bytes
    14  }
    15  
    16  // moduledata records information about the layout of the executable
    17  // image. It is written by the linker. Any changes here must be
    18  // matched changes to the code in cmd/internal/ld/symtab.go:symtab.
    19  // moduledata is stored in read-only memory; none of the pointers here
    20  // are visible to the garbage collector.
    21  type moduledata struct {
    22  	pclntable    []byte
    23  	ftab         []functab
    24  	filetab      []uint32
    25  	findfunctab  uintptr
    26  	minpc, maxpc uintptr
    27  
    28  	text, etext           uintptr
    29  	noptrdata, enoptrdata uintptr
    30  	data, edata           uintptr
    31  	bss, ebss             uintptr
    32  	noptrbss, enoptrbss   uintptr
    33  	end, gcdata, gcbss    uintptr
    34  	types, etypes         uintptr
    35  
    36  	textsectmap []textsect
    37  	typelinks   []int32 // offsets from types
    38  	itablinks   []*itab
    39  
    40  	ptab []ptabEntry
    41  
    42  	pluginpath string
    43  	pkghashes  []modulehash
    44  
    45  	modulename   string
    46  	modulehashes []modulehash
    47  
    48  	gcdatamask, gcbssmask bitvector
    49  
    50  	typemap map[typeOff]uintptr // offset to *_rtype in previous module
    51  
    52  	next *moduledata
    53  }
    54  
    55  func initmodule(module *moduledata, linker *Linker) {
    56  	module.filetab = linker.Filetab
    57  }