diff options
Diffstat (limited to 'sysdeps/loongarch/dl-machine.h')
-rw-r--r-- | sysdeps/loongarch/dl-machine.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h index e217d37..02ce178 100644 --- a/sysdeps/loongarch/dl-machine.h +++ b/sysdeps/loongarch/dl-machine.h @@ -270,6 +270,10 @@ 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 + extern void _dl_runtime_resolve_lasx (void) attribute_hidden; + extern void _dl_runtime_resolve_lsx (void) attribute_hidden; +#endif extern void _dl_runtime_resolve (void) attribute_hidden; extern void _dl_runtime_profile (void) attribute_hidden; @@ -296,7 +300,14 @@ 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. */ - gotplt[0] = (ElfW (Addr)) & _dl_runtime_resolve; +#if HAVE_LOONGARCH_VEC_ASM + if (SUPPORT_LASX) + gotplt[0] = (ElfW(Addr)) &_dl_runtime_resolve_lasx; + else if (SUPPORT_LSX) + gotplt[0] = (ElfW(Addr)) &_dl_runtime_resolve_lsx; + else +#endif + gotplt[0] = (ElfW(Addr)) &_dl_runtime_resolve; } gotplt[1] = (ElfW (Addr)) l; } |