diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2024-03-12 13:21:19 -0300 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2024-04-01 11:16:27 -0700 |
commit | a8ba52bde58c69f2b31da62ad2311f119adf6cb9 (patch) | |
tree | 8a7e5c1406a1b848b798c18a1b0cda15521b210d /config.h.in | |
parent | 15aebdbada54098787715448c94701f17033fc92 (diff) | |
download | glibc-a8ba52bde58c69f2b31da62ad2311f119adf6cb9.zip glibc-a8ba52bde58c69f2b31da62ad2311f119adf6cb9.tar.gz glibc-a8ba52bde58c69f2b31da62ad2311f119adf6cb9.tar.bz2 |
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>
(cherry picked from commit 64c7e344289ed085517c2227d8e3b06388242c13)
Diffstat (limited to 'config.h.in')
-rw-r--r-- | config.h.in | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/config.h.in b/config.h.in index 44a3407..4d33c63 100644 --- a/config.h.in +++ b/config.h.in @@ -141,6 +141,9 @@ /* LOONGARCH floating-point ABI for ld.so. */ #undef LOONGARCH_ABI_FRLEN +/* Define whether ARM used hard-float and support VFPvX-D32. */ +#undef HAVE_ARM_PCS_VFP_D32 + /* Linux specific: minimum supported kernel version. */ #undef __LINUX_KERNEL_VERSION |