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

     1  //go:build go1.8 && !go1.9
     2  // +build go1.8,!go1.9
     3  
     4  package reloctype
     5  
     6  import "cmd/objfile/obj"
     7  
     8  // copy from $GOROOT/src/cmd/internal/obj/link.go
     9  const (
    10  	R_ADDR = (int)(obj.R_ADDR)
    11  	// R_ADDRARM64 relocates an adrp, add pair to compute the address of the
    12  	// referenced symbol.
    13  	R_ADDRARM64 = (int)(obj.R_ADDRARM64)
    14  	// R_ADDROFF resolves to a 32-bit offset from the beginning of the section
    15  	// holding the data being relocated to the referenced symbol.
    16  	R_ADDROFF = (int)(obj.R_ADDROFF)
    17  	// R_WEAKADDROFF resolves just like R_ADDROFF but is a weak relocation.
    18  	// A weak relocation does not make the symbol it refers to reachable,
    19  	// and is only honored by the linker if the symbol is in some other way
    20  	// reachable.
    21  	R_WEAKADDROFF = (int)(obj.R_WEAKADDROFF)
    22  	R_CALL        = (int)(obj.R_CALL)
    23  	R_CALLARM     = (int)(obj.R_CALLARM)
    24  	R_CALLARM64   = (int)(obj.R_CALLARM64)
    25  	R_CALLIND     = (int)(obj.R_CALLIND)
    26  	R_PCREL       = (int)(obj.R_PCREL)
    27  	// R_TLS_LE, used on 386, amd64, and ARM, resolves to the offset of the
    28  	// thread-local symbol from the thread local base and is used to implement the
    29  	// "local exec" model for tls access (r.Sym is not set on intel platforms but is
    30  	// set to a TLS symbol -- runtime.tlsg -- in the linker when externally linking).
    31  	R_TLS_LE = (int)(obj.R_TLS_LE)
    32  	// R_TLS_IE, used 386, amd64, and ARM resolves to the PC-relative offset to a GOT
    33  	// slot containing the offset from the thread-local symbol from the thread local
    34  	// base and is used to implemented the "initial exec" model for tls access (r.Sym
    35  	// is not set on intel platforms but is set to a TLS symbol -- runtime.tlsg -- in
    36  	// the linker when externally linking).
    37  	R_TLS_IE = (int)(obj.R_TLS_IE)
    38  	// R_METHODOFF resolves to a 32-bit offset from the beginning of the section
    39  	// holding the data being relocated to the referenced symbol.
    40  	// It is a variant of R_ADDROFF used when linking from the uncommonType of a
    41  	// *rtype, and may be set to zero by the linker if it determines the method
    42  	// text is unreachable by the linked program.
    43  	R_METHODOFF = (int)(obj.R_METHODOFF)
    44  
    45  	R_GOTPCREL = (int)(obj.R_GOTPCREL)
    46  
    47  	R_ARM64_GOTPCREL = (int)(obj.R_ARM64_GOTPCREL)
    48  )
    49  
    50  const (
    51  	//not used, only adapter golang higher version
    52  	R_KEEP               = 0x10000000 - 10
    53  	R_INITORDER          = 0x10000000 - 9
    54  	R_ARM64_PCREL_LDST8  = 0x10000000 - 8
    55  	R_ARM64_PCREL_LDST16 = 0x10000000 - 7
    56  	R_ARM64_PCREL_LDST32 = 0x10000000 - 6
    57  	R_ARM64_PCREL_LDST64 = 0x10000000 - 5
    58  	R_USETYPE            = 0x10000000 - 4
    59  	R_USEIFACE           = 0x10000000 - 3
    60  	R_USEIFACEMETHOD     = 0x10000000 - 2
    61  	R_ADDRCUOFF          = 0x10000000 - 1
    62  	R_WEAKADDR           = 0x20000000
    63  	R_WEAK               = 0x8000
    64  )
    65  
    66  func RelocTypeString(relocType int) string {
    67  	return (obj.RelocType)(relocType).String()
    68  }