about summary refs log tree commit diff
path: root/hesiod
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-03-12 13:21:19 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-03-19 14:53:30 -0300
commit64c7e344289ed085517c2227d8e3b06388242c13 (patch)
tree3978be8526aa1137ce5420c32d74b6f5ce656b32 /hesiod
parent968b0ca9440040a2b31248a572891f0e55c1ab10 (diff)
downloadglibc-64c7e344289ed085517c2227d8e3b06388242c13.tar.gz
glibc-64c7e344289ed085517c2227d8e3b06388242c13.tar.xz
glibc-64c7e344289ed085517c2227d8e3b06388242c13.zip
arm: Update _dl_tlsdesc_dynamic to preserve caller-saved registers (BZ 31372)
ARM _dl_tlsdesc_dynamic slow path has two issues:

  * The ip/r12 is defined by AAPCS as a scratch register, and gcc is
    used to save the stack pointer before on some function calls.  So it
    should also be saved/restored as well.  It fixes the tst-gnu2-tls2.

  * None of the possible VFP registers are saved/restored.  ARM has the
    additional complexity to have different VFP bank sizes (depending of
    VFP support by the chip).

The tst-gnu2-tls2 test is extended to check for VFP registers, although
only for hardfp builds.  Different than setcontext, _dl_tlsdesc_dynamic
does not have  HWCAP_ARM_IWMMXT (I don't have a way to properly test
it and it is almost a decade since newer hardware was released).

With this patch there is no need to mark tst-gnu2-tls2 as XFAIL.

Checked on arm-linux-gnueabihf.
Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'hesiod')
0 files changed, 0 insertions, 0 deletions