summaryrefslogtreecommitdiff
path: root/sysdeps/loongarch
diff options
context:
space:
mode:
authorcaiyinyu <caiyinyu@loongson.cn>2023-07-11 11:57:12 +0800
committercaiyinyu <caiyinyu@loongson.cn>2023-07-11 11:57:12 +0800
commit0e1324e655f3ba9fd3f8ad24678b93b35eee2618 (patch)
tree144bc5aeb56aca632d8d3fa4d88e8f3953426862 /sysdeps/loongarch
parent7f079fdc16e88ebb8020e17b2fd900e8924da29a (diff)
downloadglibc-0e1324e655f3ba9fd3f8ad24678b93b35eee2618.tar
glibc-0e1324e655f3ba9fd3f8ad24678b93b35eee2618.tar.gz
glibc-0e1324e655f3ba9fd3f8ad24678b93b35eee2618.tar.bz2
glibc-0e1324e655f3ba9fd3f8ad24678b93b35eee2618.zip
LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx}
Diffstat (limited to 'sysdeps/loongarch')
-rw-r--r--sysdeps/loongarch/dl-machine.h4
-rw-r--r--sysdeps/loongarch/dl-trampoline.S2
-rw-r--r--sysdeps/loongarch/dl-trampoline.h14
3 files changed, 9 insertions, 11 deletions
diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h
index 02ce17852c..51ce9af84b 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 2a561b7136..f6ba5e443c 100644
--- a/sysdeps/loongarch/dl-trampoline.S
+++ b/sysdeps/loongarch/dl-trampoline.S
@@ -19,7 +19,7 @@
#include <sysdep.h>
#include <sys/asm.h>
-#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 f60634a55a..02375286f8 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