Golang 1.26

Разработчики из гуголя решили поломать 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 в одну структуру, зачем весь этот зоопарк со ссылками на “огрызок”, часть которого УЖЕ убежала в вышестоящую структуру?

Впрочем вопрос риторический. Жираф гуголь большой - ему видней (почти Цэ)