Skip to content

Commit 350d172

Browse files
committed
change unnecessary exported function to lowercase
1 parent d8a1b3c commit 350d172

File tree

8 files changed

+37
-37
lines changed

8 files changed

+37
-37
lines changed

Diff for: debug.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func dumpPCData(b []byte, prefix string) {
1919
}
2020

2121
func dumpStackMap(f interface{}) {
22-
finfo := findfunc(getFuncPtr(f))
22+
finfo := findfunc(getFunctionPtr(f))
2323
fmt.Println(funcname(finfo))
2424
stkmap := (*stackmap)(funcdata(finfo, _FUNCDATA_LocalsPointerMaps))
2525
fmt.Printf("%v %p\n", stkmap, stkmap)

Diff for: dymcode.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ func addSymAddrs(code *CodeReloc, symPtr map[string]uintptr, codeModule *CodeMod
208208
seg.errors += fmt.Sprintf("unresolve external:%s\n", sym.Name)
209209
}
210210
} else if sym.Name == TLSNAME {
211-
RegTLS(symPtr, sym.Offset)
211+
regTLS(symPtr, sym.Offset)
212212
} else if sym.Kind == STEXT {
213213
seg.symAddrs[i] = uintptr(code.Syms[i].Offset + seg.codeBase)
214214
codeModule.Syms[sym.Name] = uintptr(seg.symAddrs[i])
@@ -257,7 +257,7 @@ func relocateItab(code *CodeReloc, module *CodeModule, seg *segment) {
257257
seg.offset += ItabSize
258258
} else if seg.codeByte[iter.Offset-2] == x86amd64LEAcode {
259259
seg.codeByte[iter.Offset-2:][0] = x86amd64MOVcode
260-
*(*uintptr)(unsafe.Pointer(&(seg.codeByte[seg.offset:][0]))) = address
260+
putAddress(seg.codeByte[seg.offset:], uint64(address))
261261
seg.offset += PtrSize
262262
} else {
263263
seg.errors += fmt.Sprintf("relocateItab: not support code:%v!\n", seg.codeByte[iter.Offset-2:iter.Offset])
@@ -268,7 +268,7 @@ func relocateItab(code *CodeReloc, module *CodeModule, seg *segment) {
268268
case R_ADDRARM64:
269269
relocateADRP(seg.codeByte[iter.Offset:], iter.Reloc, seg, address, itabName)
270270
case R_ADDR:
271-
*(*uintptr)(unsafe.Pointer(&(seg.codeByte[iter.Offset:][0]))) = uintptr(int(address) + iter.Add)
271+
putAddress(seg.codeByte[iter.Offset:], uint64(int(address)+iter.Add))
272272
default:
273273
seg.errors += fmt.Sprintf("unknown relocateItab type:%d Name:%s\n", iter.Type, itabName)
274274
}
@@ -384,7 +384,7 @@ func relocate(code *CodeReloc, symPtr map[string]uintptr, codeModule *CodeModule
384384
copy(seg.codeByte[seg.offset:], armcode)
385385
seg.offset += len(armcode)
386386
}
387-
*(*uintptr)(unsafe.Pointer(&(seg.codeByte[seg.offset:][0]))) = uintptr(int(addr) + add)
387+
putAddress(seg.codeByte[seg.offset:], uint64(int(addr)+add))
388388
seg.offset += PtrSize
389389
}
390390
} else {
@@ -407,7 +407,7 @@ func relocate(code *CodeReloc, symPtr map[string]uintptr, codeModule *CodeModule
407407
relocByte = seg.codeByte
408408
}
409409
address := uintptr(int(addr) + loc.Add)
410-
*(*uintptr)(unsafe.Pointer(&(relocByte[loc.Offset:][0]))) = uintptr(address)
410+
putAddress(relocByte[loc.Offset:], uint64(address))
411411
case R_CALLIND:
412412

413413
case R_ADDROFF, R_WEAKADDROFF, R_METHODOFF:

Diff for: iface.1.10.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func eraseiface(inter *interfacetype, typ *_type) bool {
4747
// Use atomic read here so if we see m != nil, we also see
4848
// the initializations of the fields of m.
4949
// m := *p
50-
m := (*itab)(Loadp(unsafe.Pointer(p)))
50+
m := (*itab)(loadp(unsafe.Pointer(p)))
5151
if m == nil {
5252
return false
5353
}

Diff for: iface.1.8.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func eraseiface(inter *interfacetype, typ *_type) bool {
3737
defer unlock(&ifaceLock)
3838
h := itabhash(inter, typ)
3939
var m, last *itab = nil, nil
40-
for m = (*itab)(Loadp(unsafe.Pointer(&hash[h]))); m != nil; m = m.link {
40+
for m = (*itab)(loadp(unsafe.Pointer(&hash[h]))); m != nil; m = m.link {
4141
if m.inter == inter && m._type == typ {
4242
if last == nil {
4343
atomicstorep(unsafe.Pointer(&hash[h]), unsafe.Pointer(nil))

Diff for: readobj.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func readObj(f *os.File, reloc *CodeReloc, objsymmap map[string]objSym, pkgpath
3939
func ReadObj(f *os.File) (*CodeReloc, error) {
4040
reloc := CodeReloc{SymMap: make(map[string]int), GCObjs: make(map[string]uintptr), FileMap: make(map[string]int)}
4141
reloc.Mod.pclntable = append(reloc.Mod.pclntable, x86moduleHead...)
42-
var objsymmap = make(map[string]objSym)
42+
objsymmap := make(map[string]objSym)
4343
err := readObj(f, &reloc, objsymmap, nil)
4444
if err != nil {
4545
return nil, err
@@ -53,7 +53,7 @@ func ReadObj(f *os.File) (*CodeReloc, error) {
5353
func ReadObjs(files []string, pkgPath []string) (*CodeReloc, error) {
5454
reloc := CodeReloc{SymMap: make(map[string]int), GCObjs: make(map[string]uintptr), FileMap: make(map[string]int)}
5555
reloc.Mod.pclntable = append(reloc.Mod.pclntable, x86moduleHead...)
56-
var objsymmap = make(map[string]objSym)
56+
objsymmap := make(map[string]objSym)
5757
for i, file := range files {
5858
f, err := os.Open(file)
5959
if err != nil {

Diff for: register.go

+16-19
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ package goloader
22

33
import (
44
"cmd/objfile/objfile"
5-
"encoding/binary"
65
"os"
76
"reflect"
87
"strings"
98
"unsafe"
109
)
1110

1211
// See reflect/value.go emptyInterface
13-
type interfaceHeader struct {
12+
type emptyInterface struct {
1413
typ unsafe.Pointer
1514
word unsafe.Pointer
1615
}
@@ -89,13 +88,13 @@ func RegSymbol(symPtr map[string]uintptr) error {
8988
symPtr[sym.Name] = uintptr(sym.Addr)
9089
}
9190
if strings.HasPrefix(sym.Name, ITAB_PREFIX) {
92-
RegItab(symPtr, sym.Name, uintptr(sym.Addr))
91+
regItab(symPtr, sym.Name, uintptr(sym.Addr))
9392
}
9493
}
9594
return nil
9695
}
9796

98-
func RegItab(symPtr map[string]uintptr, name string, addr uintptr) {
97+
func regItab(symPtr map[string]uintptr, name string, addr uintptr) {
9998
symPtr[name] = uintptr(addr)
10099
bss := strings.Split(strings.TrimLeft(name, ITAB_PREFIX), ",")
101100
slice := sliceHeader{addr, len(bss), len(bss)}
@@ -104,29 +103,27 @@ func RegItab(symPtr map[string]uintptr, name string, addr uintptr) {
104103
tname := bss[len(bss)-i-1]
105104
if tname[0] == '*' {
106105
obj := reflect.TypeOf(0)
107-
(*interfaceHeader)(unsafe.Pointer(&obj)).word = ptr
106+
(*emptyInterface)(unsafe.Pointer(&obj)).word = ptr
108107
obj = obj.(reflect.Type).Elem()
109-
symPtr[TYPE_PREFIX+tname[1:]] = uintptr((*interfaceHeader)(unsafe.Pointer(&obj)).word)
108+
symPtr[TYPE_PREFIX+tname[1:]] = uintptr((*emptyInterface)(unsafe.Pointer(&obj)).word)
110109
}
111110
symPtr[TYPE_PREFIX+tname] = uintptr(ptr)
112111
}
113112
}
114113

115-
func RegTLS(symPtr map[string]uintptr, offset int) {
116-
var ptr interface{} = RegSymbol
117-
slice := sliceHeader{*(*uintptr)((*interfaceHeader)(unsafe.Pointer(&ptr)).word), offset + 4, offset + 4}
118-
bytes := *(*[]byte)(unsafe.Pointer(&slice))
119-
symPtr[TLSNAME] = uintptr(binary.LittleEndian.Uint32(bytes[offset:]))
114+
func regTLS(symPtr map[string]uintptr, offset int) {
115+
//FUNCTION HEADER
116+
//asm: MOVQ (TLS), CX
117+
//bytes: 0x488b0c2500000000
118+
funcptr := getFunctionPtr(regTLS)
119+
tlsptr := *(*uint32)(adduintptr(funcptr, offset))
120+
symPtr[TLSNAME] = uintptr(tlsptr)
120121
}
121122

122-
func RegType(symPtr map[string]uintptr, name string, typ interface{}) {
123-
symPtr[name] = uintptr((*interfaceHeader)(unsafe.Pointer(&typ)).typ)
123+
func regFunc(symPtr map[string]uintptr, name string, function interface{}) {
124+
symPtr[name] = getFunctionPtr(function)
124125
}
125126

126-
func RegFunc(symPtr map[string]uintptr, name string, f interface{}) {
127-
symPtr[name] = getFuncPtr(f)
128-
}
129-
130-
func getFuncPtr(f interface{}) uintptr {
131-
return *(*uintptr)((*interfaceHeader)(unsafe.Pointer(&f)).word)
127+
func getFunctionPtr(function interface{}) uintptr {
128+
return *(*uintptr)((*emptyInterface)(unsafe.Pointer(&function)).word)
132129
}

Diff for: type.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,25 @@ func (t *_type) PkgPath() string {
6161
func RegTypes(symPtr map[string]uintptr, interfaces ...interface{}) {
6262
for _, inter := range interfaces {
6363
v := reflect.ValueOf(inter)
64-
registerTypeInfo(symPtr, v)
64+
regType(symPtr, v)
6565
if v.Kind() == reflect.Ptr {
66-
registerTypeInfo(symPtr, v.Elem())
66+
regType(symPtr, v.Elem())
6767
}
6868
}
6969
}
7070

71-
func registerTypeInfo(symPtr map[string]uintptr, v reflect.Value) {
71+
func regType(symPtr map[string]uintptr, v reflect.Value) {
7272
inter := v.Interface()
73-
header := (*interfaceHeader)(unsafe.Pointer(&inter))
74-
75-
if v.Kind() == reflect.Func && uintptr(header.word) != 0 {
76-
symPtr[runtime.FuncForPC(v.Pointer()).Name()] = *(*uintptr)(header.word)
73+
if v.Kind() == reflect.Func && getFunctionPtr(inter) != 0 {
74+
symPtr[runtime.FuncForPC(v.Pointer()).Name()] = getFunctionPtr(inter)
7775
} else {
7876
name := TYPE_PREFIX
7977
symname := v.Type().String()
8078
if v.Type().Kind() == reflect.Ptr {
8179
name += symname[:1]
8280
symname = symname[1:]
8381
}
82+
header := (*emptyInterface)(unsafe.Pointer(&inter))
8483
pkgPath := (*_type)(header.typ).PkgPath()
8584
lastSlash := strings.LastIndexByte(pkgPath, '/')
8685
if lastSlash > -1 {

Diff for: utils.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import (
88
//go:linkname add runtime.add
99
func add(p unsafe.Pointer, x uintptr) unsafe.Pointer
1010

11+
//go:linkname adduintptr runtime.add
12+
func adduintptr(p uintptr, x int) unsafe.Pointer
13+
1114
func putUint24(b []byte, v uint32) {
1215
_ = b[2] // early bounds check to guarantee safety of writes below
1316
b[0] = byte(v)
@@ -53,6 +56,7 @@ func copy2Slice(dst []byte, src uintptr, size int) {
5356

5457
//go:nosplit
5558
//go:noinline
56-
func Loadp(ptr unsafe.Pointer) unsafe.Pointer {
59+
//see runtime.internal.atomic.Loadp
60+
func loadp(ptr unsafe.Pointer) unsafe.Pointer {
5761
return *(*unsafe.Pointer)(ptr)
5862
}

0 commit comments

Comments
 (0)