]> git.ipfire.org Git - thirdparty/glibc.git/commit
aarch64: Fix DT_AARCH64_VARIANT_PCS handling [BZ #26798]
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Thu, 22 Oct 2020 16:55:01 +0000 (17:55 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Wed, 4 Nov 2020 12:23:43 +0000 (12:23 +0000)
commit61e8ae9b660d98d3a139d3dd617dea16de798f88
treec5ee82a8a68419444dc84468f622161805f7db1f
parent24c0d6881503d00d06b4f9141678df2925c0b5a8
aarch64: Fix DT_AARCH64_VARIANT_PCS handling [BZ #26798]

The variant PCS support was ineffective because in the common case
linkmap->l_mach.plt == 0 but then the symbol table flags were ignored
and normal lazy binding was used instead of resolving the relocs early.
(This was a misunderstanding about how GOT[1] is setup by the linker.)

In practice this mainly affects SVE calls when the vector length is
more than 128 bits, then the top bits of the argument registers get
clobbered during lazy binding.

Fixes bug 26798.

(cherry picked from commit 558251bd8785760ad40fcbfeaaee5d27fa5b0fe4)
sysdeps/aarch64/dl-machine.h