// automatically generated by stateify.

package loader

import (
	"gvisor.dev/gvisor/pkg/state"
)

func (x *VDSO) beforeSave() {}
func (x *VDSO) save(m state.Map) {
	x.beforeSave()
	var phdrs []elfProgHeader = x.savePhdrs()
	m.SaveValue("phdrs", phdrs)
	m.Save("ParamPage", &x.ParamPage)
	m.Save("vdso", &x.vdso)
	m.Save("os", &x.os)
	m.Save("arch", &x.arch)
}

func (x *VDSO) afterLoad() {}
func (x *VDSO) load(m state.Map) {
	m.Load("ParamPage", &x.ParamPage)
	m.Load("vdso", &x.vdso)
	m.Load("os", &x.os)
	m.Load("arch", &x.arch)
	m.LoadValue("phdrs", new([]elfProgHeader), func(y interface{}) { x.loadPhdrs(y.([]elfProgHeader)) })
}

func (x *elfProgHeader) beforeSave() {}
func (x *elfProgHeader) save(m state.Map) {
	x.beforeSave()
	m.Save("Type", &x.Type)
	m.Save("Flags", &x.Flags)
	m.Save("Off", &x.Off)
	m.Save("Vaddr", &x.Vaddr)
	m.Save("Paddr", &x.Paddr)
	m.Save("Filesz", &x.Filesz)
	m.Save("Memsz", &x.Memsz)
	m.Save("Align", &x.Align)
}

func (x *elfProgHeader) afterLoad() {}
func (x *elfProgHeader) load(m state.Map) {
	m.Load("Type", &x.Type)
	m.Load("Flags", &x.Flags)
	m.Load("Off", &x.Off)
	m.Load("Vaddr", &x.Vaddr)
	m.Load("Paddr", &x.Paddr)
	m.Load("Filesz", &x.Filesz)
	m.Load("Memsz", &x.Memsz)
	m.Load("Align", &x.Align)
}

func init() {
	state.Register("pkg/sentry/loader.VDSO", (*VDSO)(nil), state.Fns{Save: (*VDSO).save, Load: (*VDSO).load})
	state.Register("pkg/sentry/loader.elfProgHeader", (*elfProgHeader)(nil), state.Fns{Save: (*elfProgHeader).save, Load: (*elfProgHeader).load})
}