cmd/link: trailing padding after "Go" in ELF note name

6vl6ewon  于 5个月前  发布在  Go
关注(0)|答案(7)|浏览(61)

根据您提供的链接,它指出了在name字段中,第一个namesz字节包含了条目的所有者或发起者的以空字符表示的字符表示。没有避免名称冲突的正式机制。按照惯例,供应商使用自己的名称作为标识符,例如XYZ计算机公司。如果没有名称,则namesz包含0。如果需要,会添加填充以确保描述符(取决于文件是64位还是32位对象)为8或4字节对齐。这种填充不包括在namesz

看起来我们在"NetBSD"标签上做得正确,我们将一个空终止字符包含在名称(按namesz测量)内,但然后添加了一个额外的用于对齐的零字节填充。
然而,对于"Go"标签,我们在名称本身中包含了一个额外的空终止符。第二个空终止符实际上应该是填充。
这是OpenBSD的Mark Kettenis提出的。

3npbholx

3npbholx1#

你好!我已经创建了一个名为this的小提交,我认为这可能是修复。由于我对ELF定义不是很熟悉,你介意帮我检查一下吗?如果我的方向正确,我会打开一个CL。

czq61nw1

czq61nw12#

看起来没问题。我认为你不需要ELF_NOTE_GO_NAMESZ

ff29svar

ff29svar3#

https://golang.org/cl/217857提到了这个问题:cmd/link : add trailing padding after Go ELF note

ggazkfy8

ggazkfy84#

嘿,伊恩,在CL中我们改变了对提议修复的信心。你建议将这个问题移到下一个里程碑,还是我们应该通过Go1.15来解决它?谢谢。

qq24tv8q

qq24tv8q5#

嘿,@odeke-em。从我这边来看,我尝试调试这个问题,但是在本地工具链已经正确构建,所有测试都通过了;我不知道如何调试Try-Bots,所以我不知道修复这个错误有多容易/困难。
./all.bashGOOS=darwin GOARCH=amd64 ./bootstrap.bash 似乎都能正常工作。我会重新提交并再次发送提交以防万一。

g6ll5ycj

g6ll5ycj6#

这似乎不紧急,所以将里程碑更改为Backlog。

ewm0tg9j

ewm0tg9j7#

https://go.dev/cl/477235提到了这个问题:cmd/link: add trailing padding after Go ELF note

相关问题