bfd: aarch64: Avoid BTI stub for a PLT that has BTI
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Wed, 18 Oct 2023 15:12:56 +0000 (16:12 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Thu, 9 Nov 2023 14:44:37 +0000 (14:44 +0000)
commitfc48504c7abe8eb9d9723632b2d53504927f46ff
tree5bb639bd13167c7b5dbdb47174d776ff7f3472b9
parenta74ac8c41971682f687a8a5ce94f36a8054ecd0e
bfd: aarch64: Avoid BTI stub for a PLT that has BTI

We decide to emit BTI stubs based on the instruction at the target
location. But PLT code is generated later than the stubs so we always
read 0 which is not a valid BTI.

Fix the logic to special case the PLT section: this is code the linker
generates so we know when it will have BTI.

This avoids BTI stubs in large executables where the PLTs have them
already. An alternative is to never emit BTI stubs for PLTs, instead
use BTI in the PLT if a library gets too big, however that may be
more tricky given the ordering of PLT sizing and stub insertion.

Related to bug 30957.
bfd/elfnn-aarch64.c