Proposal Details
Joel Sing and I have been looking at and working on adding Branch Target Instruction (BTI) support to Golang. This would close an architectural feature gap in Go binaries and reduce the gadget space within Go binaries by marking valid call and jump entry points. This is a long standing goal of Fedora, where BTI and PAC were enabled in the default set of build options for C and C++ projects. Golang is becoming increasingly popular within packaged Fedora projects, and with governments urging the use of "safer" languages, the need to enable all of these features is growing.
Some further documentation on BTI: - https://newsroom.arm.com/blog/pac-bti - https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/enabling-pac-and-bti-on-aarch64
Comment From: gabyhelp
Related Issues
Related Code Changes
(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)
Comment From: ianlancetaylor
Thanks. Closing as a dup of #66054. I don't think this has to be a proposal, unless we want to make using BTI optional by adding something to the GOARM64
environment variable.
Comment From: billatarm
Thanks. Closing as a dup of #66054. I don't think this has to be a proposal, unless we want to make using BTI optional by adding something to the
GOARM64
environment variable.
I would prefer it on by default, but I could see how folks could argue the other way. FYI It's currently optional in gcc and clang.