internal/core/read.go
func (p *Process) ReadAt(b []byte, a Address) {
	for {
		m := p.findMapping(a)
		if m == nil {
			panic(fmt.Errorf("address %x is not mapped in the core file", a))
		}
		n := copy(b, m.contents[a.Sub(m.min):])
		if n == len(b) {
			return
		}
		// Modify request to get data from the next mapping.
		b = b[n:]
		a = a.Add(int64(n))
	}
}
func (p *Process) ReadAt(b []byte, a Address) {
	for {
		m := p.findMapping(a)
		if m == nil {
			panic(fmt.Errorf("address %x is not mapped in the core file", a))
		}
		n := copy(b, m.contents[a.Sub(m.min):])
		if n == len(b) {
			return
		}
		// Modify request to get data from the next mapping.
		b = b[n:]
		a = a.Add(int64(n))
	}
}
// All the Read* functions below will panic if something goes wrong.
// ReadAt reads len(b) bytes at address a in the inferior
// and stores them in b.