chai2010 / advanced-go-programming-book

:books: 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)
https://chai2010.cn/advanced-go-programming-book/
BSD 2-Clause "Simplified" License
19.32k stars 3.21k forks source link

getg build error: relocation target runtime.convT2E not defined #585

Closed qshuai closed 2 years ago

qshuai commented 2 years ago

go version go1.19 darwin/amd64

cch123 commented 2 years ago

这本书写作的时候应该是 1.12 左右,后来汇编相关的官方又改了一些东西,1.17 还有新的调用规约,跑不过也正常。。。

qshuai commented 2 years ago

找到一个解决方案,就是自己实现convT2E的函数:

package xxx

func convT2E(v interface) interface{} {
    return v
}

// 汇编中如下调用
CALL xxx·convT2E(SB)

如果package xxx和汇编代码不在一个package时,需要将convT2E函数变成可导出的