Indirect branch tracking

Indirect branch tracking (IBT), also known as branch target identification (BTI), is a control flow integrity mechanism implemented on some Intel x86-64 and ARM-64 processors.

IBT is designed to protect against computer security exploits that use indirect branch instructions to jump into code in unintended ways, such as return-oriented programming.

It creates a special "branch target" instructions that have no function other than to mark a location as a valid indirect branch target, with the processor capable of being put into a mode where it will raise an exception if an indirect branch is made to a location without a branch target instruction.

[1][2] IBT is part of the Intel Control-Flow Enforcement Technology first released in the Tiger Lake generation of processors.

[3] The similar technology on ARM-64 processors is called Branch Target Identification (BTI), with the instruction, also called BTI, having three variants that make it check only for jumps, or function calls, or for both.