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.