returnnil,fmt.Errorf("invalid PT_LOAD program segment %d, file size (%d) > mem size (%d)",i,prog.Filesz,prog.Memsz)
}
}else{
returnnil,fmt.Errorf("program segment %d has different file size (%d) than mem size (%d): filling for non PT_LOAD segments is not supported",i,prog.Filesz,prog.Memsz)
}
}
ifprog.Vaddr+prog.Memsz>=uint64(1<<32){
returnnil,fmt.Errorf("program %d out of 32-bit mem range: %x - %x (size: %x)",i,prog.Vaddr,prog.Vaddr+prog.Memsz,prog.Memsz)
returnfmt.Errorf("failed to patch Go runtime.gcenable: %w",err)
}
case"runtime.MemProfileRate":
iferr:=st.SetMemRange(uint32(s.Value),bytes.NewReader(make([]byte,4)));err!=nil{// disable mem profiling, to avoid a lot of unnecessary floating point ops