mirror of git://sourceware.org/git/glibc.git
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`
|
atomic=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep '#define __riscv_atomic' | cut -d' ' -f2`
|
||||||
|
|
||||||
case "$xlen" in
|
case "$xlen" in
|
||||||
32)
|
64 | 32)
|
||||||
echo "glibc does not yet support 32-bit systems" >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
64)
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unable to determine XLEN" >&2
|
echo "Unable to determine XLEN" >&2
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
wordsize-32
|
|
@ -0,0 +1,3 @@
|
||||||
|
riscv/rv32/rvf
|
||||||
|
riscv/rvd
|
||||||
|
riscv/rvf
|
|
@ -0,0 +1 @@
|
||||||
|
riscv/rvf
|
|
@ -7,11 +7,13 @@ ifeq ($(subdir),stdlib)
|
||||||
gen-as-const-headers += ucontext_i.sym
|
gen-as-const-headers += ucontext_i.sym
|
||||||
endif
|
endif
|
||||||
|
|
||||||
abi-variants := lp64 lp64d
|
abi-variants := ilp32 ilp32d lp64 lp64d
|
||||||
|
|
||||||
ifeq (,$(filter $(default-abi),$(abi-variants)))
|
ifeq (,$(filter $(default-abi),$(abi-variants)))
|
||||||
$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
|
$(error Unknown ABI $(default-abi), must be one of $(abi-variants))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
abi-lp64-condition := defined __LP64__ && defined __riscv_float_abi_soft
|
abi-ilp32-condition := __WORDSIZE == 32 && defined __riscv_float_abi_soft
|
||||||
abi-lp64d-condition := defined __LP64__ && defined __riscv_float_abi_double
|
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
|
||||||
|
|
|
@ -147,6 +147,17 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
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
|
if test $libc_cv_riscv_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
|
||||||
|
@ -218,6 +229,34 @@ case "$prefix" in
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
esac
|
||||||
|
|
||||||
ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed
|
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
|
libc_cv_riscv_int_abi=no
|
||||||
AC_EGREP_CPP(4 8 8, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
|
AC_EGREP_CPP(4 8 8, [__SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
|
||||||
], libc_cv_riscv_int_abi=lp64)
|
], 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
|
if test $libc_cv_riscv_int_abi = no; then
|
||||||
AC_MSG_ERROR([Unable to determine integer ABI])
|
AC_MSG_ERROR([Unable to determine integer ABI])
|
||||||
fi
|
fi
|
||||||
|
@ -37,6 +39,12 @@ lp64-riscv/rv64/*)
|
||||||
lp64d-riscv/rv64/*)
|
lp64d-riscv/rv64/*)
|
||||||
LIBC_SLIBDIR_RTLDDIR([lib64/lp64d], [lib])
|
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
|
esac
|
||||||
|
|
||||||
ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed
|
ldd_rewrite_script=sysdeps/unix/sysv/linux/riscv/ldd-rewrite.sed
|
||||||
|
|
|
@ -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
|
%if RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 64
|
||||||
|
DEFAULT GLIBC_2.27
|
||||||
ld=ld-linux-riscv64-lp64d.so.1
|
ld=ld-linux-riscv64-lp64d.so.1
|
||||||
%elif RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 0
|
%elif RISCV_ABI_XLEN == 64 && RISCV_ABI_FLEN == 0
|
||||||
|
DEFAULT GLIBC_2.27
|
||||||
ld=ld-linux-riscv64-lp64.so.1
|
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
|
%else
|
||||||
%error cannot determine ABI
|
%error cannot determine ABI
|
||||||
%endif
|
%endif
|
||||||
|
|
Loading…
Reference in New Issue