ARMv8.5 Branch Target Identification Support Lands In GCC 9 Compiler
Back in November saw initial ARMv8.5 commits for GCC9 while merging yesterday were more of the ARMv8.5 changes for squaring away this minor 64-bit ARM revision. The main addition yesterday was introducing Branch Target Identification (BTI). ARMv8.5's BTI has already been supported in LLVM/Clang and is part of ARM's Spectre Variant Two mitigations. Branch Target Identification when enabled marks valid targets of indirect branches and the CPU will trap an instruction in a protected page that is trying to perform an indirect branch to an instruction other than a marked BTI.
Over the course of a few patches on Wednesday, that code is now in place for ARMv8 BTI with GCC 9.
There is also a patch enabling the new switches around Speculation Barrier Instruction (SB), Memory Tagging Extension (MEMTAG), and Random Number Generation (RNG).