mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
RISC-V: Build infrastructure for 32-bit port
This patch lays out the top-level organisation of the RISC-V 32-bit port. It provides all the Implies files as well as various other fragments of the build infrastructure. Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
This commit is contained in:
parent
30b963c143
commit
72dfddeffc
@ -6,11 +6,7 @@ riscv*)
|
||||
atomic=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep '#define __riscv_atomic' | cut -d' ' -f2`
|
||||
|
||||
case "$xlen" in
|
||||
32)
|
||||
echo "glibc does not yet support 32-bit systems" >&2
|
||||
exit 1
|
||||
;;
|
||||
64)
|
||||
64 | 32)
|
||||
;;
|
||||
*)
|
||||
echo "Unable to determine XLEN" >&2
|
||||
|
1
sysdeps/riscv/rv32/Implies-after
Normal file
1
sysdeps/riscv/rv32/Implies-after
Normal file
@ -0,0 +1 @@
|
||||
wordsize-32
|
3
sysdeps/riscv/rv32/rvd/Implies
Normal file
3
sysdeps/riscv/rv32/rvd/Implies
Normal file
@ -0,0 +1,3 @@
|
||||
riscv/rv32/rvf
|
||||
riscv/rvd
|
||||
riscv/rvf
|
1
sysdeps/riscv/rv32/rvf/Implies
Normal file
1
sysdeps/riscv/rv32/rvf/Implies
Normal file
@ -0,0 +1 @@
|
||||
riscv/rvf
|
@ -7,11 +7,13 @@ ifeq ($(subdir),stdlib)
|
||||
gen-as-const-headers += ucontext_i.sym
|
||||
endif
|
||||
|
||||
abi-variants := lp64 lp64d
|
||||
abi-variants := ilp32 ilp32d lp64 lp64d
|
||||
|
||||
ifeq (,$(filter $(default-abi),$(abi-variants)))
|
||||
$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
|
||||
endif
|
||||
|
||||
abi-lp64-condition := defined __LP64__ && defined __riscv_float_abi_soft
|
||||
abi-lp64d-condition := defined __LP64__ && defined __riscv_float_abi_double
|
||||
abi-ilp32-condition := __WORDSIZE == 32 && defined __riscv_float_abi_soft
|
||||
abi-ilp32d-condition := __WORDSIZE == 32 && defined __riscv_float_abi_double
|
||||
abi-lp64-condition := __WORDSIZE == 64 && defined __riscv_float_abi_soft
|
||||
abi-lp64d-condition := __WORDSIZE == 64 && defined __riscv_float_abi_double
|
||||
|
39
sysdeps/unix/sysv/linux/riscv/configure
vendored
39
sysdeps/unix/sysv/linux/riscv/configure
vendored
@ -147,6 +147,17 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
|
||||
|
||||
_ACEOF
|
||||
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||
$EGREP "4 4 4" >/dev/null 2>&1; then :
|
||||
libc_cv_riscv_int_abi=ilp32
|
||||
fi
|
||||
rm -f conftest*
|
||||
|
||||
if test $libc_cv_riscv_int_abi = no; then
|
||||
as_fn_error $? "Unable to determine integer ABI" "$LINENO" 5
|
||||
fi
|
||||
@ -218,6 +229,34 @@ case "$prefix" in
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ilp32-riscv/rv32/*)
|
||||
test -n "$libc_cv_slibdir" ||
|
||||
case "$prefix" in
|
||||
/usr | /usr/)
|
||||
libc_cv_slibdir='/lib32/ilp32'
|
||||
libc_cv_rtlddir='/lib'
|
||||
if test "$libdir" = '${exec_prefix}/lib'; then
|
||||
libdir='${exec_prefix}/lib32/ilp32';
|
||||
# Locale data can be shared between 32-bit and 64-bit libraries.
|
||||
libc_cv_complocaledir='${exec_prefix}/lib/locale'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ilp32d-riscv/rv32/*)
|
||||
test -n "$libc_cv_slibdir" ||
|
||||
case "$prefix" in
|
||||
/usr | /usr/)
|
||||
libc_cv_slibdir='/lib32/ilp32d'
|
||||
libc_cv_rtlddir='/lib'
|
||||
if test "$libdir" = '${exec_prefix}/lib'; then
|
||||
libdir='${exec_prefix}/lib32/ilp32d';
|
||||
# Locale data can be shared between 32-bit and 64-bit libraries.
|
||||
libc_cv_complocaledir='${exec_prefix}/lib/locale'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed
|
||||
|
@ -7,6 +7,8 @@ arch_minimum_kernel=4.15.0
|
||||
libc_cv_riscv_int_abi=no
|
||||
AC_EGREP_CPP(4 8 8, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
|
||||
], libc_cv_riscv_int_abi=lp64)
|
||||
AC_EGREP_CPP(4 4 4, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
|
||||
], libc_cv_riscv_int_abi=ilp32)
|
||||
if test $libc_cv_riscv_int_abi = no; then
|
||||
AC_MSG_ERROR([Unable to determine integer ABI])
|
||||
fi
|
||||
@ -37,6 +39,12 @@ lp64-riscv/rv64/*)
|
||||
lp64d-riscv/rv64/*)
|
||||
LIBC_SLIBDIR_RTLDDIR([lib64/lp64d], [lib])
|
||||
;;
|
||||
ilp32-riscv/rv32/*)
|
||||
LIBC_SLIBDIR_RTLDDIR([lib32/ilp32], [lib])
|
||||
;;
|
||||
ilp32d-riscv/rv32/*)
|
||||
LIBC_SLIBDIR_RTLDDIR([lib32/ilp32d], [lib])
|
||||
;;
|
||||
esac
|
||||
|
||||
ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed
|
||||
|
3
sysdeps/unix/sysv/linux/riscv/rv32/Implies
Normal file
3
sysdeps/unix/sysv/linux/riscv/rv32/Implies
Normal file
@ -0,0 +1,3 @@
|
||||
unix/sysv/linux/riscv
|
||||
unix/sysv/linux/generic/wordsize-32
|
||||
unix/sysv/linux/generic
|
@ -1,9 +1,15 @@
|
||||
DEFAULT GLIBC_2.27
|
||||
|
||||
%if RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 64
|
||||
DEFAULT GLIBC_2.27
|
||||
ld=ld-linux-riscv64-lp64d.so.1
|
||||
%elif RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 0
|
||||
DEFAULT GLIBC_2.27
|
||||
ld=ld-linux-riscv64-lp64.so.1
|
||||
%elif RISCV_ABI_XLEN == 32 && RISCV_ABI_FLEN == 64
|
||||
DEFAULT GLIBC_2.33
|
||||
ld=ld-linux-riscv32-ilp32d.so.1
|
||||
%elif RISCV_ABI_XLEN == 32 && RISCV_ABI_FLEN == 0
|
||||
DEFAULT GLIBC_2.33
|
||||
ld=ld-linux-riscv32-ilp32.so.1
|
||||
%else
|
||||
%error cannot determine ABI
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user