Merge release-20201208.0-92-gd302c0570 (automated)

This commit is contained in:
gVisor bot 2020-12-30 01:46:31 +00:00
commit 7698cd15cd
5 changed files with 2910 additions and 2910 deletions

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,183 @@ var _ marshal.Marshallable = (*Uint32)(nil)
var _ marshal.Marshallable = (*Uint64)(nil)
var _ marshal.Marshallable = (*Uint8)(nil)
// SizeBytes implements marshal.Marshallable.SizeBytes.
//go:nosplit
func (i *Int8) SizeBytes() int {
return 1
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (i *Int8) MarshalBytes(dst []byte) {
dst[0] = byte(*i)
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (i *Int8) UnmarshalBytes(src []byte) {
*i = Int8(int8(src[0]))
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (i *Int8) Packed() bool {
// Scalar newtypes are always packed.
return true
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (i *Int8) MarshalUnsafe(dst []byte) {
safecopy.CopyIn(dst, unsafe.Pointer(i))
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (i *Int8) UnmarshalUnsafe(src []byte) {
safecopy.CopyOut(unsafe.Pointer(i), src)
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (i *Int8) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (i *Int8) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return i.CopyOutN(cc, addr, i.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (i *Int8) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (i *Int8) WriteTo(w io.Writer) (int64, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := w.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return int64(length), err
}
// CopyInt8SliceIn copies in a slice of int8 objects from the task's memory.
//go:nosplit
func CopyInt8SliceIn(cc marshal.CopyContext, addr usermem.Addr, dst []int8) (int, error) {
count := len(dst)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&dst)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(val)
hdr.Len = size * count
hdr.Cap = size * count
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that dst
// must live until the use above.
runtime.KeepAlive(dst) // escapes: replaced by intrinsic.
return length, err
}
// CopyInt8SliceOut copies a slice of int8 objects to the task's memory.
//go:nosplit
func CopyInt8SliceOut(cc marshal.CopyContext, addr usermem.Addr, src []int8) (int, error) {
count := len(src)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&src)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(val)
hdr.Len = size * count
hdr.Cap = size * count
length, err := cc.CopyOutBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that src
// must live until the use above.
runtime.KeepAlive(src) // escapes: replaced by intrinsic.
return length, err
}
// MarshalUnsafeInt8Slice is like Int8.MarshalUnsafe, but for a []Int8.
func MarshalUnsafeInt8Slice(src []Int8, dst []byte) (int, error) {
count := len(src)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&src)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
length, err := safecopy.CopyIn(dst[:(size*count)], val)
// Since we bypassed the compiler's escape analysis, indicate that src
// must live until the use above.
runtime.KeepAlive(src) // escapes: replaced by intrinsic.
return length, err
}
// UnmarshalUnsafeInt8Slice is like Int8.UnmarshalUnsafe, but for a []Int8.
func UnmarshalUnsafeInt8Slice(dst []Int8, src []byte) (int, error) {
count := len(dst)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&dst)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
length, err := safecopy.CopyOut(val, src[:(size*count)])
// Since we bypassed the compiler's escape analysis, indicate that dst
// must live until the use above.
runtime.KeepAlive(dst) // escapes: replaced by intrinsic.
return length, err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
//go:nosplit
func (u *Uint8) SizeBytes() int {
@ -1262,180 +1439,3 @@ func UnmarshalUnsafeUint64Slice(dst []Uint64, src []byte) (int, error) {
return length, err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
//go:nosplit
func (i *Int8) SizeBytes() int {
return 1
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (i *Int8) MarshalBytes(dst []byte) {
dst[0] = byte(*i)
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (i *Int8) UnmarshalBytes(src []byte) {
*i = Int8(int8(src[0]))
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (i *Int8) Packed() bool {
// Scalar newtypes are always packed.
return true
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (i *Int8) MarshalUnsafe(dst []byte) {
safecopy.CopyIn(dst, unsafe.Pointer(i))
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (i *Int8) UnmarshalUnsafe(src []byte) {
safecopy.CopyOut(unsafe.Pointer(i), src)
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (i *Int8) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (i *Int8) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return i.CopyOutN(cc, addr, i.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (i *Int8) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (i *Int8) WriteTo(w io.Writer) (int64, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(i)))
hdr.Len = i.SizeBytes()
hdr.Cap = i.SizeBytes()
length, err := w.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that i
// must live until the use above.
runtime.KeepAlive(i) // escapes: replaced by intrinsic.
return int64(length), err
}
// CopyInt8SliceIn copies in a slice of int8 objects from the task's memory.
//go:nosplit
func CopyInt8SliceIn(cc marshal.CopyContext, addr usermem.Addr, dst []int8) (int, error) {
count := len(dst)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&dst)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(val)
hdr.Len = size * count
hdr.Cap = size * count
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that dst
// must live until the use above.
runtime.KeepAlive(dst) // escapes: replaced by intrinsic.
return length, err
}
// CopyInt8SliceOut copies a slice of int8 objects to the task's memory.
//go:nosplit
func CopyInt8SliceOut(cc marshal.CopyContext, addr usermem.Addr, src []int8) (int, error) {
count := len(src)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&src)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(val)
hdr.Len = size * count
hdr.Cap = size * count
length, err := cc.CopyOutBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that src
// must live until the use above.
runtime.KeepAlive(src) // escapes: replaced by intrinsic.
return length, err
}
// MarshalUnsafeInt8Slice is like Int8.MarshalUnsafe, but for a []Int8.
func MarshalUnsafeInt8Slice(src []Int8, dst []byte) (int, error) {
count := len(src)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&src)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
length, err := safecopy.CopyIn(dst[:(size*count)], val)
// Since we bypassed the compiler's escape analysis, indicate that src
// must live until the use above.
runtime.KeepAlive(src) // escapes: replaced by intrinsic.
return length, err
}
// UnmarshalUnsafeInt8Slice is like Int8.UnmarshalUnsafe, but for a []Int8.
func UnmarshalUnsafeInt8Slice(dst []Int8, src []byte) (int, error) {
count := len(dst)
if count == 0 {
return 0, nil
}
size := (*Int8)(nil).SizeBytes()
ptr := unsafe.Pointer(&dst)
val := gohacks.Noescape(unsafe.Pointer((*reflect.SliceHeader)(ptr).Data))
length, err := safecopy.CopyOut(val, src[:(size*count)])
// Since we bypassed the compiler's escape analysis, indicate that dst
// must live until the use above.
runtime.KeepAlive(dst) // escapes: replaced by intrinsic.
return length, err
}

View File

@ -22,116 +22,6 @@ var _ marshal.Marshallable = (*SignalInfo)(nil)
var _ marshal.Marshallable = (*SignalStack)(nil)
var _ marshal.Marshallable = (*linux.SignalSet)(nil)
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (s *SignalInfo) SizeBytes() int {
return 16 +
1*(128-16)
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (s *SignalInfo) MarshalBytes(dst []byte) {
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Signo))
dst = dst[4:]
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Errno))
dst = dst[4:]
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Code))
dst = dst[4:]
// Padding: dst[:sizeof(uint32)] ~= uint32(0)
dst = dst[4:]
for idx := 0; idx < (128-16); idx++ {
dst[0] = byte(s.Fields[idx])
dst = dst[1:]
}
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (s *SignalInfo) UnmarshalBytes(src []byte) {
s.Signo = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
s.Errno = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
s.Code = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
// Padding: var _ uint32 ~= src[:sizeof(uint32)]
src = src[4:]
for idx := 0; idx < (128-16); idx++ {
s.Fields[idx] = src[0]
src = src[1:]
}
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (s *SignalInfo) Packed() bool {
return true
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (s *SignalInfo) MarshalUnsafe(dst []byte) {
safecopy.CopyIn(dst, unsafe.Pointer(s))
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (s *SignalInfo) UnmarshalUnsafe(src []byte) {
safecopy.CopyOut(unsafe.Pointer(s), src)
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (s *SignalInfo) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (s *SignalInfo) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return s.CopyOutN(cc, addr, s.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (s *SignalInfo) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (s *SignalInfo) WriteTo(writer io.Writer) (int64, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := writer.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return int64(length), err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (s *SignalAct) SizeBytes() int {
return 24 +
@ -370,3 +260,113 @@ func (s *SignalStack) WriteTo(writer io.Writer) (int64, error) {
return int64(length), err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (s *SignalInfo) SizeBytes() int {
return 16 +
1*(128-16)
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (s *SignalInfo) MarshalBytes(dst []byte) {
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Signo))
dst = dst[4:]
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Errno))
dst = dst[4:]
usermem.ByteOrder.PutUint32(dst[:4], uint32(s.Code))
dst = dst[4:]
// Padding: dst[:sizeof(uint32)] ~= uint32(0)
dst = dst[4:]
for idx := 0; idx < (128-16); idx++ {
dst[0] = byte(s.Fields[idx])
dst = dst[1:]
}
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (s *SignalInfo) UnmarshalBytes(src []byte) {
s.Signo = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
s.Errno = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
s.Code = int32(usermem.ByteOrder.Uint32(src[:4]))
src = src[4:]
// Padding: var _ uint32 ~= src[:sizeof(uint32)]
src = src[4:]
for idx := 0; idx < (128-16); idx++ {
s.Fields[idx] = src[0]
src = src[1:]
}
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (s *SignalInfo) Packed() bool {
return true
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (s *SignalInfo) MarshalUnsafe(dst []byte) {
safecopy.CopyIn(dst, unsafe.Pointer(s))
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (s *SignalInfo) UnmarshalUnsafe(src []byte) {
safecopy.CopyOut(unsafe.Pointer(s), src)
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (s *SignalInfo) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (s *SignalInfo) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return s.CopyOutN(cc, addr, s.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (s *SignalInfo) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (s *SignalInfo) WriteTo(writer io.Writer) (int64, error) {
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(s)))
hdr.Len = s.SizeBytes()
hdr.Cap = s.SizeBytes()
length, err := writer.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that s
// must live until the use above.
runtime.KeepAlive(s) // escapes: replaced by intrinsic.
return int64(length), err
}

View File

@ -24,149 +24,6 @@ var _ marshal.Marshallable = (*SignalStack)(nil)
var _ marshal.Marshallable = (*UContext64)(nil)
var _ marshal.Marshallable = (*linux.SignalSet)(nil)
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (u *UContext64) SizeBytes() int {
return 16 +
(*SignalStack)(nil).SizeBytes() +
(*SignalContext64)(nil).SizeBytes() +
(*linux.SignalSet)(nil).SizeBytes()
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (u *UContext64) MarshalBytes(dst []byte) {
usermem.ByteOrder.PutUint64(dst[:8], uint64(u.Flags))
dst = dst[8:]
usermem.ByteOrder.PutUint64(dst[:8], uint64(u.Link))
dst = dst[8:]
u.Stack.MarshalBytes(dst[:u.Stack.SizeBytes()])
dst = dst[u.Stack.SizeBytes():]
u.MContext.MarshalBytes(dst[:u.MContext.SizeBytes()])
dst = dst[u.MContext.SizeBytes():]
u.Sigset.MarshalBytes(dst[:u.Sigset.SizeBytes()])
dst = dst[u.Sigset.SizeBytes():]
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (u *UContext64) UnmarshalBytes(src []byte) {
u.Flags = uint64(usermem.ByteOrder.Uint64(src[:8]))
src = src[8:]
u.Link = uint64(usermem.ByteOrder.Uint64(src[:8]))
src = src[8:]
u.Stack.UnmarshalBytes(src[:u.Stack.SizeBytes()])
src = src[u.Stack.SizeBytes():]
u.MContext.UnmarshalBytes(src[:u.MContext.SizeBytes()])
src = src[u.MContext.SizeBytes():]
u.Sigset.UnmarshalBytes(src[:u.Sigset.SizeBytes()])
src = src[u.Sigset.SizeBytes():]
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (u *UContext64) Packed() bool {
return u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed()
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (u *UContext64) MarshalUnsafe(dst []byte) {
if u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
safecopy.CopyIn(dst, unsafe.Pointer(u))
} else {
// Type UContext64 doesn't have a packed layout in memory, fallback to MarshalBytes.
u.MarshalBytes(dst)
}
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (u *UContext64) UnmarshalUnsafe(src []byte) {
if u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
safecopy.CopyOut(unsafe.Pointer(u), src)
} else {
// Type UContext64 doesn't have a packed layout in memory, fallback to UnmarshalBytes.
u.UnmarshalBytes(src)
}
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (u *UContext64) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := cc.CopyScratchBuffer(u.SizeBytes()) // escapes: okay.
u.MarshalBytes(buf) // escapes: fallback.
return cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (u *UContext64) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return u.CopyOutN(cc, addr, u.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (u *UContext64) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to UnmarshalBytes.
buf := cc.CopyScratchBuffer(u.SizeBytes()) // escapes: okay.
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Unmarshal unconditionally. If we had a short copy-in, this results in a
// partially unmarshalled struct.
u.UnmarshalBytes(buf) // escapes: fallback.
return length, err
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (u *UContext64) WriteTo(writer io.Writer) (int64, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := make([]byte, u.SizeBytes())
u.MarshalBytes(buf)
length, err := writer.Write(buf)
return int64(length), err
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := writer.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return int64(length), err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (s *SignalContext64) SizeBytes() int {
return 184 +
@ -405,3 +262,146 @@ func (s *SignalContext64) WriteTo(writer io.Writer) (int64, error) {
return int64(length), err
}
// SizeBytes implements marshal.Marshallable.SizeBytes.
func (u *UContext64) SizeBytes() int {
return 16 +
(*SignalStack)(nil).SizeBytes() +
(*SignalContext64)(nil).SizeBytes() +
(*linux.SignalSet)(nil).SizeBytes()
}
// MarshalBytes implements marshal.Marshallable.MarshalBytes.
func (u *UContext64) MarshalBytes(dst []byte) {
usermem.ByteOrder.PutUint64(dst[:8], uint64(u.Flags))
dst = dst[8:]
usermem.ByteOrder.PutUint64(dst[:8], uint64(u.Link))
dst = dst[8:]
u.Stack.MarshalBytes(dst[:u.Stack.SizeBytes()])
dst = dst[u.Stack.SizeBytes():]
u.MContext.MarshalBytes(dst[:u.MContext.SizeBytes()])
dst = dst[u.MContext.SizeBytes():]
u.Sigset.MarshalBytes(dst[:u.Sigset.SizeBytes()])
dst = dst[u.Sigset.SizeBytes():]
}
// UnmarshalBytes implements marshal.Marshallable.UnmarshalBytes.
func (u *UContext64) UnmarshalBytes(src []byte) {
u.Flags = uint64(usermem.ByteOrder.Uint64(src[:8]))
src = src[8:]
u.Link = uint64(usermem.ByteOrder.Uint64(src[:8]))
src = src[8:]
u.Stack.UnmarshalBytes(src[:u.Stack.SizeBytes()])
src = src[u.Stack.SizeBytes():]
u.MContext.UnmarshalBytes(src[:u.MContext.SizeBytes()])
src = src[u.MContext.SizeBytes():]
u.Sigset.UnmarshalBytes(src[:u.Sigset.SizeBytes()])
src = src[u.Sigset.SizeBytes():]
}
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (u *UContext64) Packed() bool {
return u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed()
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (u *UContext64) MarshalUnsafe(dst []byte) {
if u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
safecopy.CopyIn(dst, unsafe.Pointer(u))
} else {
// Type UContext64 doesn't have a packed layout in memory, fallback to MarshalBytes.
u.MarshalBytes(dst)
}
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (u *UContext64) UnmarshalUnsafe(src []byte) {
if u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
safecopy.CopyOut(unsafe.Pointer(u), src)
} else {
// Type UContext64 doesn't have a packed layout in memory, fallback to UnmarshalBytes.
u.UnmarshalBytes(src)
}
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (u *UContext64) CopyOutN(cc marshal.CopyContext, addr usermem.Addr, limit int) (int, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := cc.CopyScratchBuffer(u.SizeBytes()) // escapes: okay.
u.MarshalBytes(buf) // escapes: fallback.
return cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return length, err
}
// CopyOut implements marshal.Marshallable.CopyOut.
//go:nosplit
func (u *UContext64) CopyOut(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
return u.CopyOutN(cc, addr, u.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
//go:nosplit
func (u *UContext64) CopyIn(cc marshal.CopyContext, addr usermem.Addr) (int, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to UnmarshalBytes.
buf := cc.CopyScratchBuffer(u.SizeBytes()) // escapes: okay.
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Unmarshal unconditionally. If we had a short copy-in, this results in a
// partially unmarshalled struct.
u.UnmarshalBytes(buf) // escapes: fallback.
return length, err
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (u *UContext64) WriteTo(writer io.Writer) (int64, error) {
if !u.MContext.Packed() && u.Sigset.Packed() && u.Stack.Packed() {
// Type UContext64 doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := make([]byte, u.SizeBytes())
u.MarshalBytes(buf)
length, err := writer.Write(buf)
return int64(length), err
}
// Construct a slice backed by dst's underlying memory.
var buf []byte
hdr := (*reflect.SliceHeader)(unsafe.Pointer(&buf))
hdr.Data = uintptr(gohacks.Noescape(unsafe.Pointer(u)))
hdr.Len = u.SizeBytes()
hdr.Cap = u.SizeBytes()
length, err := writer.Write(buf)
// Since we bypassed the compiler's escape analysis, indicate that u
// must live until the use above.
runtime.KeepAlive(u) // escapes: replaced by intrinsic.
return int64(length), err
}

View File

@ -3,95 +3,95 @@ package injector
// This file was generated using openssl by the gencerts.sh script.
var caKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----`)
var caCert = []byte(`-----BEGIN CERTIFICATE-----
MIICqzCCAZMCFHgGjzg1vWf8n63+HsgXPcjwXRUWMA0GCSqGSIb3DQEBCwUAMBEx
DzANBgNVBAMMBmUyZV9jYTAgFw0yMDEyMzAwMDMwMjJaGA8yMjk0MTAxNTAwMzAy
MlowETEPMA0GA1UEAwwGZTJlX2NhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAoUexaE6JbSu7O1Drvsj2Lt0fGtk/exJhdoKlsVQ414dUZ9JSYJKjkET9
h5iWQUKd/t4hZRFQyH6tzfbntiMwzM+eryPNwIQBryhU0EqKB2NvywL6ozcsfuPI
738IdOUGNHuFySFwyWYuHZMj8GuJ2XjqtElpqhtH/Hrbf0/qOnDf3v4trMORT5D/
pRGzrZtxphRJ8rWmTz7Ce81TA7PkLy8Et8UtO9cXc8g9d/lCSe9x0BdnsWYm1bdB
935i3ZBoasfHPRs+6VjQ6pfzrJ0+QLXkgxMzhfbBHgSGHe6I6uIDBimW4qtyL1kp
vqBJbtlkInjf0oXdM1WCCFZLhlnyNQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAt
4bxA9LhlGmsB6mxL/Qmh5WDe3eT/6Ar8KfwYf/bQShnn338Rb0nP1L7NZuyJWKei
gClRmZkZSwspzYr9POaqtysxzC/HV1/BLHlvWOKd4fvDcjLbqiQB8afNwT6BJaxQ
2C8damKB1cl5F0SR1Bc683mV+fbbSs2jftX92ZoKJr55X+BCRfyEKowFjw8o98K7
A8MokfwqRfWOUd1nU9KRXfal6y3KyuK+lKaQtveyqMNBty/Y7epjAMJTxDtauAqz
gWOOm3Fi1LqCmMzmEblMKsRPYXvJQ3CMKb3qX0ajw5MG9PUBp1AATJ6a+VZNp94x
lX44o4bU0e4m/I6DZmnF
MIICqzCCAZMCFHOPDPhe8VHPQBU9eZ4k3biL33tvMA0GCSqGSIb3DQEBCwUAMBEx
DzANBgNVBAMMBmUyZV9jYTAgFw0yMDEyMzAwMTQ1NTlaGA8yMjk0MTAxNTAxNDU1
OVowETEPMA0GA1UEAwwGZTJlX2NhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAtUYj/tDPDDHTlSJpZLIjZ5dUZ4MD3IdwBJLUwTXdDr0TWVhYMX7FSJVe
KW+hGpx1xZ1R+TdCwzSyfoFFCzttcqnKJ1Kl+FYDBMsIDFZw4BiAAPVKsviCMYVt
gR+YU4Z1WzudCX8RUbxK5ueifXSf8GbRteu6mCv2uMuDrA+XfZnNWyr+6sgU1kzT
AUgUMt6VKR069ayClv8P42VRDb9Rw2Hma5x4AnMCF2WaxBN8kLRpqHRdit80d5oi
dY6xpxcBPOismo76U4RpIXtCEBvgvZInhW3qz2rxFYG0PJnw0ovOvCdPfcz5sktr
erreet3sDiTwU6TM1KSJX+uGmnetnwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAm
52DD59yJDsbzK2dTTnBYgUtXkYeEvnQmcQ9nY2209MAP3u8nFk/SbeRiRND4ZH44
QluVyAB64sLEDgL09+Ag5oKo0HaMfbFRFl9zqu/9e5ew6CyIwCsAOSGe0UMn6Wwk
xmnoCs7N/rMllPSfVQY2Se7VDwD/2qJZwAARlfhMUGDrYNFuEYg9LWCTmIljmmjw
uKeRvG0goezmkkDKbuFiEM2uT/R0FpTiEn2qaYvDNXKVGLK9JhUeScbThL42jV9m
Jq86HNWl0lQvmq3UElmal8EAW+fupyFcNWamlNaRLNIEg0BYyS+Bc14cGQ4e20hP
ANxAnoVTDxatLx6IgF+l
-----END CERTIFICATE-----`)
var serverKey = []byte(`-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----`)
var serverCert = []byte(`-----BEGIN CERTIFICATE-----
MIIDDzCCAfegAwIBAgIUUY1N7piEKpg2L6XCKttKq2ZE8LYwDQYJKoZIhvcNAQEL
BQAwETEPMA0GA1UEAwwGZTJlX2NhMCAXDTIwMTIzMDAwMzAyMloYDzIyOTQxMDE1
MDAzMDIyWjA1MTMwMQYDVQQDDCpndmlzb3ItaW5qZWN0aW9uLWFkbWlzc2lvbi13
ZWJob29rLmUyZS5zdmMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ
clJjRwmgWJWZXsayt3p23hzCIfQUcL5t65FSb/y4G5j07ElL7FYxHY5xsm0rRLNj
XQSlbVSRSLP+oTPAFwS42rAJpU7ZWXcqNUptGvbEjtoXkVgFo4flhJZXZOtuqcbS
CMD1RHIwDg0eCuuuI3Zv9LZYdvAvpIhfpj6coBz/4p7/NY0i3npV3ZuAqhlLL0Fs
RqNIu3+6u3k0FMIgT5wfZo2qMeW9kxdIO6xtjVT40b5QBr+xmS9nCit0UKM8/H2z
Ut46E2+WIHQihIsCiaxDUIXEBsI2zG9a8SGuO7pttS0MFk7oUmVAlzfseBMT9xZj
lqD3bo0+hTvSSkPMV1NXAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXg
MIIDDzCCAfegAwIBAgIUYw+kvxKk5J0Q1nAtF7WFIUNuxvQwDQYJKoZIhvcNAQEL
BQAwETEPMA0GA1UEAwwGZTJlX2NhMCAXDTIwMTIzMDAxNDYwMFoYDzIyOTQxMDE1
MDE0NjAwWjA1MTMwMQYDVQQDDCpndmlzb3ItaW5qZWN0aW9uLWFkbWlzc2lvbi13
ZWJob29rLmUyZS5zdmMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+
PJbTqDbwDUlquKfk5IbjBHS69S14Tf5lOBrB7Mm92LhPhFbNzPVMq+AcGDjMjbRK
qMtLybzl8hauYvTGdFh5BH1wrlL0MW+NtJtiYf3z9Z4OxUWJjcbg2ecBkNv0d6Bd
1ktaIBcATriZWEIU/DWhuxFg9VM35ls2ndQQsHkcLZissJFdc8uHlgRE+k8KY7X0
VEIprK6wfPRi4AZ/35bujPaBKaeWDKYmg7aYOqA3HDW4zbTaiAHT5BXamGkZAa9W
HpmyKXAswUTB20AmfffUSayWRtd3FE53WDfwREU/S2wByVMy465+FoVTs+QfKB0K
BSXGYes48a3ezBVduYE7AgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXg
MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOC
AQEAFg24NLJzPx+p7Cmh+u4aJPpLT1uVfU2bTesyxiqWzax98rBdN6ghoOiYOjuI
9wUtMzDhcIENk88MdR5KlwW+2I7swkFIrdNcmy4WCCBXGNiQwvdasD0xCWNAk08Y
XbaixJ9LdAWDGoYQyXs/vQrixzNpKMM8nQC5sv89CL2uaEYMgYfLP3G3ZwMxYHM5
0IU5ohuJipXGY6LurZrtiwzquDlR8bN8a/lxWG7U5ErTEry064Hn3MomJHj8hLNR
yAYsZXoi4F0g9zokz9HTYVwVS+qB+cw1Rvxa36ZXXawF6k7XVxYPIm5yLWL6BujC
6NA/HG/K1p0OQu33417MGWMZeg==
AQEAerR4SLGytdufaftX8wXhp5/8TN5uwsrfifYbYYD7eP1uGxbGHEmsDNmQuPxh
PAs8emeTlxDDV6oJI8BtjXT0MW4YYDEFVnPynrG9Mu29Qju7lqX+wWUTb37dLmPo
ISZBi9CvF3a6dCMytOwx7UX2lHn7PuhhN6P1x3IDO3798ED/c42p9m0s+GDHifxS
NSD27id1LTx3peqJinacRAr1HMHgeoH6Si/HWoKOaapI7rVjpeiK5legQzcfq68r
Sq3c+NsxCRVrhsj3oyUuPFDuE340NG5qGY4SCSAd/4J4LNScL/uvP4SYmAdrp+nC
HEP3jklV4cN/EZwyjhQX/lHV/w==
-----END CERTIFICATE-----`)