From: caiyinyu Date: Tue, 11 Jul 2023 03:57:12 +0000 (+0800) Subject: LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx} X-Git-Tag: glibc-2.38~53 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e1324e655f3ba9fd3f8ad24678b93b35eee2618;p=thirdparty%2Fglibc.git LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx} --- diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h index 02ce17852c2..51ce9af84b0 100644 --- a/sysdeps/loongarch/dl-machine.h +++ b/sysdeps/loongarch/dl-machine.h @@ -270,7 +270,7 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[], /* If using PLTs, fill in the first two entries of .got.plt. */ if (l->l_info[DT_JMPREL]) { -#if HAVE_LOONGARCH_VEC_ASM +#if HAVE_LOONGARCH_VEC_ASM && !defined __loongarch_soft_float extern void _dl_runtime_resolve_lasx (void) attribute_hidden; extern void _dl_runtime_resolve_lsx (void) attribute_hidden; #endif @@ -300,7 +300,7 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[], /* This function will get called to fix up the GOT entry indicated by the offset on the stack, and then jump to the resolved address. */ -#if HAVE_LOONGARCH_VEC_ASM +#if HAVE_LOONGARCH_VEC_ASM && !defined __loongarch_soft_float if (SUPPORT_LASX) gotplt[0] = (ElfW(Addr)) &_dl_runtime_resolve_lasx; else if (SUPPORT_LSX) diff --git a/sysdeps/loongarch/dl-trampoline.S b/sysdeps/loongarch/dl-trampoline.S index 2a561b71361..f6ba5e443c9 100644 --- a/sysdeps/loongarch/dl-trampoline.S +++ b/sysdeps/loongarch/dl-trampoline.S @@ -19,7 +19,7 @@ #include #include -#if HAVE_LOONGARCH_VEC_ASM +#if HAVE_LOONGARCH_VEC_ASM && !defined __loongarch_soft_float #define USE_LASX #define _dl_runtime_resolve _dl_runtime_resolve_lasx #include "dl-trampoline.h" diff --git a/sysdeps/loongarch/dl-trampoline.h b/sysdeps/loongarch/dl-trampoline.h index f60634a55a8..02375286f8d 100644 --- a/sysdeps/loongarch/dl-trampoline.h +++ b/sysdeps/loongarch/dl-trampoline.h @@ -18,14 +18,12 @@ /* Assembler veneer called from the PLT header code for lazy loading. The PLT header passes its own args in t0-t2. */ -#ifndef __loongarch_soft_float -# ifdef USE_LASX -# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG - 8 * SZXREG) & ALMASK)) -# elif defined USE_LSX -# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG - 8 * SZVREG) & ALMASK)) -# else -# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG) & ALMASK)) -# endif +#ifdef USE_LASX +# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG - 8 * SZXREG) & ALMASK)) +#elif defined USE_LSX +# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG - 8 * SZVREG) & ALMASK)) +#elif !defined __loongarch_soft_float +# define FRAME_SIZE (-((-9 * SZREG - 8 * SZFREG) & ALMASK)) #else # define FRAME_SIZE (-((-9 * SZREG) & ALMASK)) #endif