根据您提供的链接,它指出了在name
字段中,第一个namesz
字节包含了条目的所有者或发起者的以空字符表示的字符表示。没有避免名称冲突的正式机制。按照惯例,供应商使用自己的名称作为标识符,例如XYZ计算机公司。如果没有名称,则namesz
包含0。如果需要,会添加填充以确保描述符(取决于文件是64位还是32位对象)为8或4字节对齐。这种填充不包括在namesz
中。
看起来我们在"NetBSD"标签上做得正确,我们将一个空终止字符包含在名称(按namesz
测量)内,但然后添加了一个额外的用于对齐的零字节填充。
然而,对于"Go"标签,我们在名称本身中包含了一个额外的空终止符。第二个空终止符实际上应该是填充。
这是OpenBSD的Mark Kettenis提出的。
7条答案
按热度按时间3npbholx1#
你好!我已经创建了一个名为this的小提交,我认为这可能是修复。由于我对ELF定义不是很熟悉,你介意帮我检查一下吗?如果我的方向正确,我会打开一个CL。
czq61nw12#
看起来没问题。我认为你不需要
ELF_NOTE_GO_NAMESZ
。ff29svar3#
https://golang.org/cl/217857提到了这个问题:
cmd/link : add trailing padding after Go ELF note
ggazkfy84#
嘿,伊恩,在CL中我们改变了对提议修复的信心。你建议将这个问题移到下一个里程碑,还是我们应该通过Go1.15来解决它?谢谢。
qq24tv8q5#
嘿,@odeke-em。从我这边来看,我尝试调试这个问题,但是在本地工具链已经正确构建,所有测试都通过了;我不知道如何调试Try-Bots,所以我不知道修复这个错误有多容易/困难。
./all.bash
和GOOS=darwin GOARCH=amd64 ./bootstrap.bash
似乎都能正常工作。我会重新提交并再次发送提交以防万一。g6ll5ycj6#
这似乎不紧急,所以将里程碑更改为Backlog。
ewm0tg9j7#
https://go.dev/cl/477235提到了这个问题:
cmd/link: add trailing padding after Go ELF note