case debugLogConstString:
len, ptr := int(r.uvarint()), uintptr(r.uvarint())
ptr += firstmoduledata.etext
- str := stringStruct{
- str: unsafe.Pointer(ptr),
- len: len,
- }
- s := *(*string)(unsafe.Pointer(&str))
+ s := unsafe.String((*byte)(unsafe.Pointer(ptr)), len)
print(s)
case debugLogStringOverflow:
import (
"os"
- "reflect"
"syscall"
"testing"
"unsafe"
defer syscall.Syscall(syscall.SYS_MUNMAP, base+off, 65536, 0)
}
- var s []byte
- sp := (*reflect.SliceHeader)(unsafe.Pointer(&s))
- sp.Data = base
- sp.Len, sp.Cap = 3<<30, 3<<30
-
+ s := unsafe.Slice((*byte)(unsafe.Pointer(base)), 3<<30)
n := copy(s[1:], s)
if n != 3<<30-1 {
t.Fatalf("copied %d bytes, expected %d", n, 3<<30-1)
for i := int32(0); i < n; i++ {
p := argv_index(argv, argc+1+i)
- s := *(*string)(unsafe.Pointer(&stringStruct{unsafe.Pointer(p), findnull(p)}))
+ s := unsafe.String(p, findnull(p))
if hasPrefix(s, prefix) {
env = gostring(p)[len(prefix):]