Разработчики из гуголя решили поломать runtime.pcHeader в Golang, обнулив в нем textStart, при этом magic остался от 1.20:
type pcHeader struct {
magic abi.PCLnTabMagic // abi.Go1NNPcLnTabMagic
pad1, pad2 uint8 // 0,0
minLC uint8 // min instruction size
ptrSize uint8 // size of a ptr in bytes
nfunc int // number of functions in the module
nfiles uint // number of entries in the file tab
// The next field used to be textStart. This is no longer stored
// as it requires a relocation. Code should use the moduledata text
// field instead. This unused field can be removed in coordination
// with Delve.
_ uintptr
funcnameOffset uintptr // offset to the funcnametab variable from pcHeader
cuOffset uintptr // offset to the cutab variable from pcHeader
filetabOffset uintptr // offset to the filetab variable from pcHeader
pctabOffset uintptr // offset to the pctab variable from pcHeader
pclnOffset uintptr // offset to the pclntab variable from pcHeader
}
Теперь для полноценного разбора Go-ных структур за textStart нужно ползать в moduledata и брать оттуда “text”:
type moduledata struct {
sys.NotInHeap // Only in static data
pcHeader *pcHeader
funcnametab []byte
cutab []uint32
filetab []byte
pctab []byte
pclntable []byte
ftab []functab
findfunctab uintptr
minpc, maxpc uintptr
text, etext uintptr
...
Зачем, почему? Никто не знает. Раз уж вы и так поломали все к херам - ну объедините тогда pcHeader и moduledata в одну структуру, зачем весь этот зоопарк со ссылками на “огрызок”, часть которого УЖЕ убежала в вышестоящую структуру?
Впрочем вопрос риторический. Жираф гуголь большой - ему видней (почти Цэ)