fix(asm): add cross-package GOOBJ resolution for riscv64, loong64, arm64

Assisted-by: MiMo V2.5 Pro
This commit is contained in:
2026-08-21 00:35:21 +02:00
parent cc50035375
commit ae550cc05a
4 changed files with 58 additions and 9 deletions
+6 -3
View File
@@ -24,14 +24,17 @@ func (img *Image) GOObjectAARCH64(pkgPath, srcPath string) ([]byte, error) {
return nil, err
}
return img.emitGOObject(pkgPath, srcPath, pre, 4, func(r Reloc) (uint16, uint8) {
if r.Kind == RelArm64Branch {
return relocArm64Branch, 4
}
return relocArm64Addr, 4
})
}
// arm64 relocation types (cmd/internal/objabi). R_ADDRARM64 resolves an
// ADRP+ADD/LDR/STR pair to a symbol's address.
// arm64 relocation types (cmd/internal/objabi).
const (
relocArm64Addr = 9 // R_ADDRARM64
relocArm64Addr = 3 // R_ADDRARM64 — ADRP+ADD/LDR/STR pair
relocArm64Branch = 9 // R_CALLARM64 — BL instruction
)
// toolchainObjectPreambleAARCH64 returns the "go object ...\n!\n" header