LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx}

This commit is contained in:
caiyinyu 2023-07-11 11:57:12 +08:00
parent 7f079fdc16
commit 0e1324e655
3 changed files with 9 additions and 11 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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