mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
LoongArch: Add soft float support.
This commit is contained in:
parent
1e903124ce
commit
930993921f
@ -222,6 +222,10 @@ class Context(object):
|
|||||||
os_name='linux-gnu',
|
os_name='linux-gnu',
|
||||||
variant='lp64d',
|
variant='lp64d',
|
||||||
gcc_cfg=['--with-abi=lp64d','--disable-multilib'])
|
gcc_cfg=['--with-abi=lp64d','--disable-multilib'])
|
||||||
|
self.add_config(arch='loongarch64',
|
||||||
|
os_name='linux-gnu',
|
||||||
|
variant='lp64s',
|
||||||
|
gcc_cfg=['--with-abi=lp64s','--disable-multilib'])
|
||||||
self.add_config(arch='m68k',
|
self.add_config(arch='m68k',
|
||||||
os_name='linux-gnu',
|
os_name='linux-gnu',
|
||||||
gcc_cfg=['--disable-multilib'])
|
gcc_cfg=['--disable-multilib'])
|
||||||
|
@ -5,11 +5,3 @@ endif
|
|||||||
# LoongArch's assembler also needs to know about PIC as it changes the
|
# LoongArch's assembler also needs to know about PIC as it changes the
|
||||||
# definition of some assembler macros.
|
# definition of some assembler macros.
|
||||||
ASFLAGS-.os += $(pic-ccflag)
|
ASFLAGS-.os += $(pic-ccflag)
|
||||||
|
|
||||||
abi-variants := lp64
|
|
||||||
|
|
||||||
ifeq (,$(filter $(default-abi),$(abi-variants)))
|
|
||||||
$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
|
|
||||||
endif
|
|
||||||
|
|
||||||
abi-lp64-condition := defined __loongarch_lp64
|
|
||||||
|
@ -41,6 +41,7 @@ ENTRY (__longjmp)
|
|||||||
REG_L s7, a0, 11*SZREG
|
REG_L s7, a0, 11*SZREG
|
||||||
REG_L s8, a0, 12*SZREG
|
REG_L s8, a0, 12*SZREG
|
||||||
|
|
||||||
|
#ifndef __loongarch_soft_float
|
||||||
FREG_L $f24, a0, 13*SZREG + 0*SZFREG
|
FREG_L $f24, a0, 13*SZREG + 0*SZFREG
|
||||||
FREG_L $f25, a0, 13*SZREG + 1*SZFREG
|
FREG_L $f25, a0, 13*SZREG + 1*SZFREG
|
||||||
FREG_L $f26, a0, 13*SZREG + 2*SZFREG
|
FREG_L $f26, a0, 13*SZREG + 2*SZFREG
|
||||||
@ -49,6 +50,7 @@ ENTRY (__longjmp)
|
|||||||
FREG_L $f29, a0, 13*SZREG + 5*SZFREG
|
FREG_L $f29, a0, 13*SZREG + 5*SZFREG
|
||||||
FREG_L $f30, a0, 13*SZREG + 6*SZFREG
|
FREG_L $f30, a0, 13*SZREG + 6*SZFREG
|
||||||
FREG_L $f31, a0, 13*SZREG + 7*SZFREG
|
FREG_L $f31, a0, 13*SZREG + 7*SZFREG
|
||||||
|
#endif
|
||||||
|
|
||||||
sltui a0,a1,1
|
sltui a0,a1,1
|
||||||
ADD a0, a0, a1 # a0 = (a1 == 0) ? 1 : a1
|
ADD a0, a0, a1 # a0 = (a1 == 0) ? 1 : a1
|
||||||
|
@ -31,8 +31,11 @@ typedef struct __jmp_buf_internal_tag
|
|||||||
long int __fp;
|
long int __fp;
|
||||||
/* Callee-saved registers. */
|
/* Callee-saved registers. */
|
||||||
long int __regs[9];
|
long int __regs[9];
|
||||||
|
|
||||||
|
#ifndef __loongarch_soft_float
|
||||||
/* Callee-saved floating point registers. */
|
/* Callee-saved floating point registers. */
|
||||||
double __fpregs[8];
|
double __fpregs[8];
|
||||||
|
#endif
|
||||||
|
|
||||||
} __jmp_buf[1];
|
} __jmp_buf[1];
|
||||||
|
|
||||||
|
@ -21,8 +21,11 @@
|
|||||||
|
|
||||||
/* Assembler veneer called from the PLT header code for lazy loading.
|
/* Assembler veneer called from the PLT header code for lazy loading.
|
||||||
The PLT header passes its own args in t0-t2. */
|
The PLT header passes its own args in t0-t2. */
|
||||||
|
#ifdef __loongarch_soft_float
|
||||||
# define FRAME_SIZE (-((-10 * SZREG - 8 * SZFREG) & ALMASK))
|
#define FRAME_SIZE (-((-10 * SZREG) & ALMASK))
|
||||||
|
#else
|
||||||
|
#define FRAME_SIZE (-((-10 * SZREG - 8 * SZFREG) & ALMASK))
|
||||||
|
#endif
|
||||||
|
|
||||||
ENTRY (_dl_runtime_resolve)
|
ENTRY (_dl_runtime_resolve)
|
||||||
|
|
||||||
@ -39,6 +42,7 @@ ENTRY (_dl_runtime_resolve)
|
|||||||
REG_S a6, sp, 7*SZREG
|
REG_S a6, sp, 7*SZREG
|
||||||
REG_S a7, sp, 8*SZREG
|
REG_S a7, sp, 8*SZREG
|
||||||
|
|
||||||
|
#ifndef __loongarch_soft_float
|
||||||
FREG_S fa0, sp, 10*SZREG + 0*SZFREG
|
FREG_S fa0, sp, 10*SZREG + 0*SZFREG
|
||||||
FREG_S fa1, sp, 10*SZREG + 1*SZFREG
|
FREG_S fa1, sp, 10*SZREG + 1*SZFREG
|
||||||
FREG_S fa2, sp, 10*SZREG + 2*SZFREG
|
FREG_S fa2, sp, 10*SZREG + 2*SZFREG
|
||||||
@ -47,6 +51,7 @@ ENTRY (_dl_runtime_resolve)
|
|||||||
FREG_S fa5, sp, 10*SZREG + 5*SZFREG
|
FREG_S fa5, sp, 10*SZREG + 5*SZFREG
|
||||||
FREG_S fa6, sp, 10*SZREG + 6*SZFREG
|
FREG_S fa6, sp, 10*SZREG + 6*SZFREG
|
||||||
FREG_S fa7, sp, 10*SZREG + 7*SZFREG
|
FREG_S fa7, sp, 10*SZREG + 7*SZFREG
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Update .got.plt and obtain runtime address of callee */
|
/* Update .got.plt and obtain runtime address of callee */
|
||||||
SLLI a1, t1, 1
|
SLLI a1, t1, 1
|
||||||
@ -67,6 +72,7 @@ ENTRY (_dl_runtime_resolve)
|
|||||||
REG_L a6, sp, 7*SZREG
|
REG_L a6, sp, 7*SZREG
|
||||||
REG_L a7, sp, 8*SZREG
|
REG_L a7, sp, 8*SZREG
|
||||||
|
|
||||||
|
#ifndef __loongarch_soft_float
|
||||||
FREG_L fa0, sp, 10*SZREG + 0*SZFREG
|
FREG_L fa0, sp, 10*SZREG + 0*SZFREG
|
||||||
FREG_L fa1, sp, 10*SZREG + 1*SZFREG
|
FREG_L fa1, sp, 10*SZREG + 1*SZFREG
|
||||||
FREG_L fa2, sp, 10*SZREG + 2*SZFREG
|
FREG_L fa2, sp, 10*SZREG + 2*SZFREG
|
||||||
@ -75,6 +81,7 @@ ENTRY (_dl_runtime_resolve)
|
|||||||
FREG_L fa5, sp, 10*SZREG + 5*SZFREG
|
FREG_L fa5, sp, 10*SZREG + 5*SZFREG
|
||||||
FREG_L fa6, sp, 10*SZREG + 6*SZFREG
|
FREG_L fa6, sp, 10*SZREG + 6*SZFREG
|
||||||
FREG_L fa7, sp, 10*SZREG + 7*SZFREG
|
FREG_L fa7, sp, 10*SZREG + 7*SZFREG
|
||||||
|
#endif
|
||||||
|
|
||||||
ADDI sp, sp, FRAME_SIZE
|
ADDI sp, sp, FRAME_SIZE
|
||||||
|
|
||||||
|
@ -51,6 +51,17 @@
|
|||||||
|
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
|
||||||
|
#ifdef __loongarch_soft_float
|
||||||
|
|
||||||
|
#define _FPU_RESERVED 0xffffffff
|
||||||
|
#define _FPU_DEFAULT 0x00000000
|
||||||
|
typedef unsigned int fpu_control_t;
|
||||||
|
#define _FPU_GETCW(cw) (cw) = 0
|
||||||
|
#define _FPU_SETCW(cw) (void) (cw)
|
||||||
|
extern fpu_control_t __fpu_control;
|
||||||
|
|
||||||
|
#else /* __loongarch_soft_float */
|
||||||
|
|
||||||
/* Masks for interrupts. */
|
/* Masks for interrupts. */
|
||||||
#define _FPU_MASK_V 0x10 /* Invalid operation */
|
#define _FPU_MASK_V 0x10 /* Invalid operation */
|
||||||
#define _FPU_MASK_Z 0x08 /* Division by zero */
|
#define _FPU_MASK_Z 0x08 /* Division by zero */
|
||||||
@ -86,4 +97,6 @@ extern void __loongarch_fpu_setcw (fpu_control_t) __THROW;
|
|||||||
/* Default control word set at startup. */
|
/* Default control word set at startup. */
|
||||||
extern fpu_control_t __fpu_control;
|
extern fpu_control_t __fpu_control;
|
||||||
|
|
||||||
|
#endif /* __loongarch_soft_float */
|
||||||
|
|
||||||
#endif /* fpu_control.h */
|
#endif /* fpu_control.h */
|
||||||
|
1
sysdeps/loongarch/nofpu/Implies
Normal file
1
sysdeps/loongarch/nofpu/Implies
Normal file
@ -0,0 +1 @@
|
|||||||
|
ieee754/soft-fp
|
28
sysdeps/loongarch/nofpu/math-tests-exceptions.h
Normal file
28
sysdeps/loongarch/nofpu/math-tests-exceptions.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* Configuration for math tests: support for exceptions.
|
||||||
|
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef LOONGARCH_NOFPU_MATH_TESTS_EXCEPTIONS_H
|
||||||
|
#define LOONGARCH_NOFPU_MATH_TESTS_EXCEPTIONS_H 1
|
||||||
|
|
||||||
|
/* We support setting floating-point exception flags on hard-float
|
||||||
|
targets. These are not supported on soft-float targets. */
|
||||||
|
#define EXCEPTION_TESTS_float 0
|
||||||
|
#define EXCEPTION_TESTS_double 0
|
||||||
|
#define EXCEPTION_TESTS_long_double 0
|
||||||
|
|
||||||
|
#endif /* math-tests-exceptions.h. */
|
27
sysdeps/loongarch/nofpu/math-tests-rounding.h
Normal file
27
sysdeps/loongarch/nofpu/math-tests-rounding.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Configuration for math tests: rounding mode support.
|
||||||
|
Copyright (C) 2022 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<https://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifndef LOONGARCH_NOFPU_MATH_TESTS_ROUNDING_H
|
||||||
|
#define LOONGARCH_NOFPU_MATH_TESTS_ROUNDING_H 1
|
||||||
|
|
||||||
|
/* On soft-float targets we only support the "to nearest" rounding mode. */
|
||||||
|
#define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
|
||||||
|
#define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
|
||||||
|
#define ROUNDING_TESTS_long_double(MODE) ((MODE) == FE_TONEAREST)
|
||||||
|
|
||||||
|
#endif /* math-tests-rounding.h. */
|
@ -12,7 +12,6 @@ loongarch*)
|
|||||||
case "$float_abi" in
|
case "$float_abi" in
|
||||||
soft)
|
soft)
|
||||||
abi_flen=0
|
abi_flen=0
|
||||||
as_fn_error 1 "loongarch does not yet support soft floating-point ABI!!" "$LINENO" 5
|
|
||||||
;;
|
;;
|
||||||
single)
|
single)
|
||||||
as_fn_error 1 "glibc does not yet support the single floating-point ABI!!" "$LINENO" 5
|
as_fn_error 1 "glibc does not yet support the single floating-point ABI!!" "$LINENO" 5
|
||||||
|
@ -12,7 +12,6 @@ loongarch*)
|
|||||||
case "$float_abi" in
|
case "$float_abi" in
|
||||||
soft)
|
soft)
|
||||||
abi_flen=0
|
abi_flen=0
|
||||||
AC_MSG_ERROR([loongarch does not yet support soft floating-point ABI!!], 1)
|
|
||||||
;;
|
;;
|
||||||
single)
|
single)
|
||||||
AC_MSG_ERROR([glibc does not yet support the single floating-point ABI!!], 1)
|
AC_MSG_ERROR([glibc does not yet support the single floating-point ABI!!], 1)
|
||||||
|
@ -50,6 +50,7 @@ ENTRY (__sigsetjmp)
|
|||||||
REG_S s7, a0, 11*SZREG
|
REG_S s7, a0, 11*SZREG
|
||||||
REG_S s8, a0, 12*SZREG
|
REG_S s8, a0, 12*SZREG
|
||||||
|
|
||||||
|
#ifndef __loongarch_soft_float
|
||||||
FREG_S $f24, a0, 13*SZREG + 0*SZFREG
|
FREG_S $f24, a0, 13*SZREG + 0*SZFREG
|
||||||
FREG_S $f25, a0, 13*SZREG + 1*SZFREG
|
FREG_S $f25, a0, 13*SZREG + 1*SZFREG
|
||||||
FREG_S $f26, a0, 13*SZREG + 2*SZFREG
|
FREG_S $f26, a0, 13*SZREG + 2*SZFREG
|
||||||
@ -58,6 +59,7 @@ ENTRY (__sigsetjmp)
|
|||||||
FREG_S $f29, a0, 13*SZREG + 5*SZFREG
|
FREG_S $f29, a0, 13*SZREG + 5*SZFREG
|
||||||
FREG_S $f30, a0, 13*SZREG + 6*SZFREG
|
FREG_S $f30, a0, 13*SZREG + 6*SZFREG
|
||||||
FREG_S $f31, a0, 13*SZREG + 7*SZFREG
|
FREG_S $f31, a0, 13*SZREG + 7*SZFREG
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !IS_IN (libc) && IS_IN(rtld)
|
#if !IS_IN (libc) && IS_IN(rtld)
|
||||||
li.w v0, 0
|
li.w v0, 0
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
ifeq ($(subdir),stdlib)
|
ifeq ($(subdir),stdlib)
|
||||||
gen-as-const-headers += ucontext_i.sym
|
gen-as-const-headers += ucontext_i.sym
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
abi-variants := lp64s lp64d
|
||||||
|
|
||||||
|
ifeq (,$(filter $(default-abi),$(abi-variants)))
|
||||||
|
$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
|
||||||
|
endif
|
||||||
|
|
||||||
|
abi-lp64s-condition := __WORDSIZE == 64 && defined __loongarch_soft_float
|
||||||
|
abi-lp64d-condition := __WORDSIZE == 64 && defined __loongarch_double_float
|
||||||
|
53
sysdeps/unix/sysv/linux/loongarch/configure
vendored
53
sysdeps/unix/sysv/linux/loongarch/configure
vendored
@ -151,11 +151,56 @@ if test $libc_cv_loongarch_int_abi = no; then
|
|||||||
as_fn_error $? "Unable to determine integer ABI" "$LINENO" 5
|
as_fn_error $? "Unable to determine integer ABI" "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
|
||||||
config_vars="$config_vars
|
libc_cv_loongarch_float_abi=no
|
||||||
default-abi = $libc_cv_loongarch_int_abi"
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#ifdef __loongarch_double_float
|
||||||
|
yes
|
||||||
|
#endif
|
||||||
|
|
||||||
case $libc_cv_loongarch_int_abi in
|
_ACEOF
|
||||||
lp64)
|
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||||
|
$EGREP "yes" >/dev/null 2>&1; then :
|
||||||
|
libc_cv_loongarch_float_abi=d
|
||||||
|
fi
|
||||||
|
rm -f conftest*
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#ifdef __loongarch_soft_float
|
||||||
|
yes
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_ACEOF
|
||||||
|
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||||
|
$EGREP "yes" >/dev/null 2>&1; then :
|
||||||
|
libc_cv_loongarch_float_abi=s
|
||||||
|
fi
|
||||||
|
rm -f conftest*
|
||||||
|
|
||||||
|
if test "$libc_cv_loongarch_float_abi" = no; then
|
||||||
|
as_fn_error $? "Unable to determine floating-point ABI" "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
config_vars="$config_vars
|
||||||
|
default-abi = $libc_cv_loongarch_int_abi$libc_cv_loongarch_float_abi"
|
||||||
|
|
||||||
|
case $libc_cv_loongarch_int_abi$libc_cv_loongarch_float_abi in
|
||||||
|
lp64s)
|
||||||
|
test -n "$libc_cv_slibdir" ||
|
||||||
|
case "$prefix" in
|
||||||
|
/usr | /usr/)
|
||||||
|
libc_cv_slibdir='/lib64/sf'
|
||||||
|
libc_cv_rtlddir='/lib64'
|
||||||
|
if test "$libdir" = '${exec_prefix}/lib'; then
|
||||||
|
libdir='${exec_prefix}/lib64/sf';
|
||||||
|
# Locale data can be shared between 32-bit and 64-bit libraries.
|
||||||
|
libc_cv_complocaledir='${exec_prefix}/lib/locale'
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
lp64d)
|
||||||
test -n "$libc_cv_slibdir" ||
|
test -n "$libc_cv_slibdir" ||
|
||||||
case "$prefix" in
|
case "$prefix" in
|
||||||
/usr | /usr/)
|
/usr | /usr/)
|
||||||
|
@ -11,10 +11,26 @@ if test $libc_cv_loongarch_int_abi = no; then
|
|||||||
AC_MSG_ERROR([Unable to determine integer ABI])
|
AC_MSG_ERROR([Unable to determine integer ABI])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LIBC_CONFIG_VAR([default-abi], [$libc_cv_loongarch_int_abi])
|
libc_cv_loongarch_float_abi=no
|
||||||
|
AC_EGREP_CPP(yes, [#ifdef __loongarch_double_float
|
||||||
|
yes
|
||||||
|
#endif
|
||||||
|
],libc_cv_loongarch_float_abi=d)
|
||||||
|
AC_EGREP_CPP(yes, [#ifdef __loongarch_soft_float
|
||||||
|
yes
|
||||||
|
#endif
|
||||||
|
],libc_cv_loongarch_float_abi=s)
|
||||||
|
if test "$libc_cv_loongarch_float_abi" = no; then
|
||||||
|
AC_MSG_ERROR([Unable to determine floating-point ABI])
|
||||||
|
fi
|
||||||
|
|
||||||
case $libc_cv_loongarch_int_abi in
|
LIBC_CONFIG_VAR([default-abi], [$libc_cv_loongarch_int_abi$libc_cv_loongarch_float_abi])
|
||||||
lp64)
|
|
||||||
|
case $libc_cv_loongarch_int_abi$libc_cv_loongarch_float_abi in
|
||||||
|
lp64s)
|
||||||
|
LIBC_SLIBDIR_RTLDDIR([lib64/sf], [lib64])
|
||||||
|
;;
|
||||||
|
lp64d)
|
||||||
LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
|
LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1 +1 @@
|
|||||||
s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|32\)\(/[^/]*\)\(-loongarch\)\(64\|32\)\(\.so\.[0-9.]*\)[[:blank:]]*$_\1"\2\4\7 \264\4-loongarch64\7 \232\4-loongarch32\7"_
|
s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|32\)\(/ld-linux-loongarch-\)\(lp\|ilp\)\(64\|32\)\(d\|s\)\(\.so\.[0-9.]*\)[[:blank:]]*$_\1"\264\4lp64d\8 \264\4lp64s\8"_
|
||||||
|
@ -2,6 +2,8 @@ DEFAULT GLIBC_2.36
|
|||||||
|
|
||||||
%if LOONGARCH_ABI_GRLEN == 64 && LOONGARCH_ABI_FRLEN == 64
|
%if LOONGARCH_ABI_GRLEN == 64 && LOONGARCH_ABI_FRLEN == 64
|
||||||
ld=ld-linux-loongarch-lp64d.so.1
|
ld=ld-linux-loongarch-lp64d.so.1
|
||||||
|
%elif LOONGARCH_ABI_GRLEN == 64 && LOONGARCH_ABI_FRLEN == 0
|
||||||
|
ld=ld-linux-loongarch-lp64s.so.1
|
||||||
%else
|
%else
|
||||||
%error cannot determine ABI
|
%error cannot determine ABI
|
||||||
%endif
|
%endif
|
||||||
|
Loading…
Reference in New Issue
Block a user