mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
Update.
2001-04-08 Hans-Peter Nilsson <hp@axis.com> * sysdeps/unix/sysv/linux/cris/Dist: New file. * sysdeps/unix/sysv/linux/cris/Makefile: New file. * sysdeps/unix/sysv/linux/cris/_G_config.h: New file. * sysdeps/unix/sysv/linux/cris/bits/fcntl.h: New file. * sysdeps/unix/sysv/linux/cris/bits/mman.h: New file. * sysdeps/unix/sysv/linux/cris/bits/resource.h: New file. * sysdeps/unix/sysv/linux/cris/brk.c: New file. * sysdeps/unix/sysv/linux/cris/chown.c: New file. * sysdeps/unix/sysv/linux/cris/clone.S: New file. * sysdeps/unix/sysv/linux/cris/fchown.c: New file. * sysdeps/unix/sysv/linux/cris/fcntl.c: New file. * sysdeps/unix/sysv/linux/cris/fxstat.c: New file. * sysdeps/unix/sysv/linux/cris/getegid.c: New file. * sysdeps/unix/sysv/linux/cris/geteuid.c: New file. * sysdeps/unix/sysv/linux/cris/getgid.c: New file. * sysdeps/unix/sysv/linux/cris/getgroups.c: New file. * sysdeps/unix/sysv/linux/cris/getresgid.c: New file. * sysdeps/unix/sysv/linux/cris/getresuid.c: New file. * sysdeps/unix/sysv/linux/cris/getrlimit.c: New file. * sysdeps/unix/sysv/linux/cris/getrlimit64.c: New file. * sysdeps/unix/sysv/linux/cris/getuid.c: New file. * sysdeps/unix/sysv/linux/cris/lchown.c: New file. * sysdeps/unix/sysv/linux/cris/lockf64.c: New file. * sysdeps/unix/sysv/linux/cris/lxstat.c: New file. * sysdeps/unix/sysv/linux/cris/mmap.S: New file. * sysdeps/unix/sysv/linux/cris/mmap64.S: New file. * sysdeps/unix/sysv/linux/cris/msgctl.c: New file. * sysdeps/unix/sysv/linux/cris/profil-counter.h: New file. * sysdeps/unix/sysv/linux/cris/register-dump.h: New file. * sysdeps/unix/sysv/linux/cris/semctl.c: New file. * sysdeps/unix/sysv/linux/cris/setegid.c: New file. * sysdeps/unix/sysv/linux/cris/seteuid.c: New file. * sysdeps/unix/sysv/linux/cris/setfsgid.c: New file. * sysdeps/unix/sysv/linux/cris/setfsuid.c: New file. * sysdeps/unix/sysv/linux/cris/setgid.c: New file. * sysdeps/unix/sysv/linux/cris/setgroups.c: New file. * sysdeps/unix/sysv/linux/cris/setregid.c: New file. * sysdeps/unix/sysv/linux/cris/setresgid.c: New file. * sysdeps/unix/sysv/linux/cris/setresuid.c: New file. * sysdeps/unix/sysv/linux/cris/setreuid.c: New file. * sysdeps/unix/sysv/linux/cris/setrlimit.c: New file. * sysdeps/unix/sysv/linux/cris/setuid.c: New file. * sysdeps/unix/sysv/linux/cris/shmctl.c: New file. * sysdeps/unix/sysv/linux/cris/socket.S: New file. * sysdeps/unix/sysv/linux/cris/sys/ucontext.h: New file. * sysdeps/unix/sysv/linux/cris/syscall.S: New file. * sysdeps/unix/sysv/linux/cris/sysdep.S: New file. * sysdeps/unix/sysv/linux/cris/sysdep.h: New file. * sysdeps/unix/sysv/linux/cris/vfork.S: New file. * sysdeps/unix/sysv/linux/cris/xstat.c: New file. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * sysdeps/cris/Dist: New file. * sysdeps/cris/Implies: New file. * sysdeps/cris/Makefile: New file. * sysdeps/cris/__longjmp.S: New file. * sysdeps/cris/_mcount.S: New file. * sysdeps/cris/bits/endian.h: New file. * sysdeps/cris/bits/setjmp.h: New file. * sysdeps/cris/bits/string.h: New file. * sysdeps/cris/dl-machine.h: New file. * sysdeps/cris/elf/start.S: New file. * sysdeps/cris/machine-gmon.h: New file. * sysdeps/cris/memcopy.h: New file. * sysdeps/cris/memusage.h: New file. * sysdeps/cris/setjmp.S: New file. * sysdeps/cris/sysdep.h: New file. * sysdeps/cris/wordcopy.c: New file. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * elf/elf.h: Add new relocations for CRIS. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * shlib-versions: Add cases for Linux on CRIS. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * configure.in (ASM_LINE_SEP tests): Handle CRIS assembly, with ';' for comments and '@' for line separator. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * sysdeps/unix/sysv/linux/hppa/sysdep.h (INLINE_SYSCALL): Fix typo; s/==/=/ for assignment. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * malloc/Makefile: Correct comment; mtrace is Perl, not AWK. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * iconv/gconv_simple.c (internal_ucs4_loop_unaligned): Check for empty input before checking full output. 2001-04-08 Hans-Peter Nilsson <hp@axis.com> * iconv/gconv.c (__gconv): Don't derefer parameter cd before checking if == -1L. 2001-04-08 Ulrich Drepper <drepper@redhat.com> * inet/rexec.c (rexec_af): Avoid calling perror with errno being set.
This commit is contained in:
parent
4c45055616
commit
eacde9d081
108
ChangeLog
108
ChangeLog
@ -1,3 +1,111 @@
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/cris/Dist: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/_G_config.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/bits/resource.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/chown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/fchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/fcntl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/geteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getgroups.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getresuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getrlimit64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/getuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/lchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/lockf64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/mmap.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/mmap64.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/msgctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/semctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/seteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setfsgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setfsuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setgroups.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setregid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setresuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setreuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/setuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/shmctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/socket.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/sysdep.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/cris/xstat.c: New file.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* sysdeps/cris/Dist: New file.
|
||||
* sysdeps/cris/Implies: New file.
|
||||
* sysdeps/cris/Makefile: New file.
|
||||
* sysdeps/cris/__longjmp.S: New file.
|
||||
* sysdeps/cris/_mcount.S: New file.
|
||||
* sysdeps/cris/bits/endian.h: New file.
|
||||
* sysdeps/cris/bits/setjmp.h: New file.
|
||||
* sysdeps/cris/bits/string.h: New file.
|
||||
* sysdeps/cris/dl-machine.h: New file.
|
||||
* sysdeps/cris/elf/start.S: New file.
|
||||
* sysdeps/cris/machine-gmon.h: New file.
|
||||
* sysdeps/cris/memcopy.h: New file.
|
||||
* sysdeps/cris/memusage.h: New file.
|
||||
* sysdeps/cris/setjmp.S: New file.
|
||||
* sysdeps/cris/sysdep.h: New file.
|
||||
* sysdeps/cris/wordcopy.c: New file.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* elf/elf.h: Add new relocations for CRIS.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* shlib-versions: Add cases for Linux on CRIS.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* configure.in (ASM_LINE_SEP tests): Handle CRIS assembly, with
|
||||
';' for comments and '@' for line separator.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/hppa/sysdep.h (INLINE_SYSCALL): Fix
|
||||
typo; s/==/=/ for assignment.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* malloc/Makefile: Correct comment; mtrace is Perl, not AWK.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* iconv/gconv_simple.c (internal_ucs4_loop_unaligned): Check for
|
||||
empty input before checking full output.
|
||||
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* iconv/gconv.c (__gconv): Don't derefer parameter cd before
|
||||
checking if == -1L.
|
||||
|
||||
2001-04-08 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* inet/rexec.c (rexec_af): Avoid calling perror with errno being set.
|
||||
|
||||
2001-04-07 Stephen L Moshier <moshier@mediaone.net>
|
||||
|
||||
* sysdeps/ieee754/ldbl-128/e_logl.c: Correct infinity and NaN
|
||||
|
1
FAQ
1
FAQ
@ -215,6 +215,7 @@ in the future, are:
|
||||
ia64-*-linux-gnu Linux-2.x on ia64
|
||||
s390-*-linux-gnu Linux-2.x on IBM S/390
|
||||
s390x-*-linux-gnu Linux-2.x on IBM S/390 64-bit
|
||||
cris-*-linux-gnu Linux-2.4+ on CRIS
|
||||
|
||||
Ports to other Linux platforms are in development, and may in fact work
|
||||
already, but no one has sent us success reports for them. Currently no
|
||||
|
1
FAQ.in
1
FAQ.in
@ -39,6 +39,7 @@ in the future, are:
|
||||
ia64-*-linux-gnu Linux-2.x on ia64
|
||||
s390-*-linux-gnu Linux-2.x on IBM S/390
|
||||
s390x-*-linux-gnu Linux-2.x on IBM S/390 64-bit
|
||||
cris-*-linux-gnu Linux-2.4+ on CRIS
|
||||
|
||||
Ports to other Linux platforms are in development, and may in fact work
|
||||
already, but no one has sent us success reports for them. Currently no
|
||||
|
2
NEWS
2
NEWS
@ -41,6 +41,8 @@ Version 2.2.3
|
||||
|
||||
* Ulrich Drepper <drepper@redhat.com> implemented the setcontext family
|
||||
of functions for Linux/x86.
|
||||
|
||||
* Port to Linux/CRIS contributed by Axis Communications.
|
||||
|
||||
Version 2.2.2
|
||||
|
||||
|
@ -19,6 +19,7 @@ configurations:
|
||||
ia64-*-linux-gnu Linux-2.x on ia64
|
||||
s390-*-linux-gnu Linux-2.x on IBM S/390
|
||||
s390x-*-linux-gnu Linux-2.x on IBM S/390 64-bit
|
||||
cris-*-linux-gnu Linux-2.4+ on CRIS
|
||||
|
||||
Former releases of this library (version 1.09.1 and perhaps earlier
|
||||
versions) used to run on the following configurations:
|
||||
|
233
configure
vendored
233
configure
vendored
@ -1046,7 +1046,7 @@ fi
|
||||
# This can take a while to compute.
|
||||
sysdep_dir=$srcdir/sysdeps
|
||||
echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
|
||||
echo "configure:1046: checking sysdep dirs" >&5
|
||||
echo "configure:1050: checking sysdep dirs" >&5
|
||||
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
|
||||
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
|
||||
|
||||
@ -1252,7 +1252,7 @@ echo "$ac_t""$default_sysnames" 1>&6
|
||||
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
||||
# ./install, which can be erroneously created by make from ./install.sh.
|
||||
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
||||
echo "configure:1252: checking for a BSD compatible install" >&5
|
||||
echo "configure:1256: checking for a BSD compatible install" >&5
|
||||
if test -z "$INSTALL"; then
|
||||
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
@ -1309,7 +1309,7 @@ if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
|
||||
INSTALL='\$(..)./scripts/install-sh -c'
|
||||
fi
|
||||
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
|
||||
echo "configure:1309: checking whether ln -s works" >&5
|
||||
echo "configure:1313: checking whether ln -s works" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1338,7 +1338,7 @@ fi
|
||||
# Extract the first word of "pwd", so it can be a program name with args.
|
||||
set dummy pwd; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1338: checking for $ac_word" >&5
|
||||
echo "configure:1342: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_PWD_P'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1377,7 +1377,7 @@ fi
|
||||
|
||||
# These programs are version sensitive.
|
||||
echo $ac_n "checking build system type""... $ac_c" 1>&6
|
||||
echo "configure:1377: checking build system type" >&5
|
||||
echo "configure:1381: checking build system type" >&5
|
||||
|
||||
build_alias=$build
|
||||
case "$build_alias" in
|
||||
@ -1405,7 +1405,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1405: checking for $ac_word" >&5
|
||||
echo "configure:1409: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1439,7 +1439,7 @@ if test -z "$CC"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $CC""... $ac_c" 1>&6
|
||||
echo "configure:1439: checking version of $CC" >&5
|
||||
echo "configure:1443: checking version of $CC" >&5
|
||||
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1459,7 +1459,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1459: checking for $ac_word" >&5
|
||||
echo "configure:1463: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1493,7 +1493,7 @@ if test -z "$MAKE"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6
|
||||
echo "configure:1493: checking version of $MAKE" >&5
|
||||
echo "configure:1497: checking version of $MAKE" >&5
|
||||
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1514,7 +1514,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1514: checking for $ac_word" >&5
|
||||
echo "configure:1518: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1548,7 +1548,7 @@ if test -z "$MSGFMT"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6
|
||||
echo "configure:1548: checking version of $MSGFMT" >&5
|
||||
echo "configure:1552: checking version of $MSGFMT" >&5
|
||||
ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1568,7 +1568,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1568: checking for $ac_word" >&5
|
||||
echo "configure:1572: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1602,7 +1602,7 @@ if test -z "$MAKEINFO"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6
|
||||
echo "configure:1602: checking version of $MAKEINFO" >&5
|
||||
echo "configure:1606: checking version of $MAKEINFO" >&5
|
||||
ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1622,7 +1622,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1622: checking for $ac_word" >&5
|
||||
echo "configure:1626: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_SED'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1656,7 +1656,7 @@ if test -z "$SED"; then
|
||||
else
|
||||
# Found it, now check the version.
|
||||
echo $ac_n "checking version of $SED""... $ac_c" 1>&6
|
||||
echo "configure:1656: checking version of $SED" >&5
|
||||
echo "configure:1660: checking version of $SED" >&5
|
||||
ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
@ -1674,7 +1674,7 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
|
||||
echo "configure:1674: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
|
||||
echo "configure:1678: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1688,12 +1688,12 @@ cross_compiling=$ac_cv_prog_cc_cross
|
||||
|
||||
cat > conftest.$ac_ext << EOF
|
||||
|
||||
#line 1688 "configure"
|
||||
#line 1692 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
main(){return(0);}
|
||||
EOF
|
||||
if { (eval echo configure:1693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:1697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
ac_cv_prog_cc_works=yes
|
||||
# If we can't run a trivial program, we are probably using a cross compiler.
|
||||
if (./conftest; exit) 2>/dev/null; then
|
||||
@ -1724,7 +1724,7 @@ else
|
||||
cross_linkable=yes
|
||||
fi
|
||||
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
|
||||
echo "configure:1724: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
echo "configure:1728: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1736,7 +1736,7 @@ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
|
||||
cross_compiling=$ac_cv_prog_cc_cross
|
||||
|
||||
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
||||
echo "configure:1736: checking whether we are using GNU C" >&5
|
||||
echo "configure:1740: checking whether we are using GNU C" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1745,7 +1745,7 @@ else
|
||||
yes;
|
||||
#endif
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
||||
ac_cv_prog_gcc=yes
|
||||
else
|
||||
ac_cv_prog_gcc=no
|
||||
@ -1758,7 +1758,7 @@ if test $ac_cv_prog_gcc != yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking build system type""... $ac_c" 1>&6
|
||||
echo "configure:1758: checking build system type" >&5
|
||||
echo "configure:1762: checking build system type" >&5
|
||||
|
||||
build_alias=$build
|
||||
case "$build_alias" in
|
||||
@ -1781,7 +1781,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1781: checking for $ac_word" >&5
|
||||
echo "configure:1785: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1813,7 +1813,7 @@ done
|
||||
fi
|
||||
|
||||
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
|
||||
echo "configure:1813: checking how to run the C preprocessor" >&5
|
||||
echo "configure:1817: checking how to run the C preprocessor" >&5
|
||||
# On Suns, sometimes $CPP names a directory.
|
||||
if test -n "$CPP" && test -d "$CPP"; then
|
||||
CPP=
|
||||
@ -1828,13 +1828,13 @@ else
|
||||
# On the NeXT, cc -E runs the code through the compiler's parser,
|
||||
# not just through cpp.
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1828 "configure"
|
||||
#line 1832 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1845,13 +1845,13 @@ else
|
||||
rm -rf conftest*
|
||||
CPP="${CC-cc} -E -traditional-cpp"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1845 "configure"
|
||||
#line 1849 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1862,13 +1862,13 @@ else
|
||||
rm -rf conftest*
|
||||
CPP="${CC-cc} -nologo -E"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 1862 "configure"
|
||||
#line 1866 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <assert.h>
|
||||
Syntax Error
|
||||
EOF
|
||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||
{ (eval echo configure:1868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
{ (eval echo configure:1872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
|
||||
if test -z "$ac_err"; then
|
||||
:
|
||||
@ -1911,7 +1911,7 @@ if test $RANLIB = ranlib; then
|
||||
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1911: checking for $ac_word" >&5
|
||||
echo "configure:1915: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1943,7 +1943,7 @@ if test -n "$ac_tool_prefix"; then
|
||||
# Extract the first word of "ranlib", so it can be a program name with args.
|
||||
set dummy ranlib; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:1943: checking for $ac_word" >&5
|
||||
echo "configure:1947: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1980,7 +1980,7 @@ fi
|
||||
|
||||
# Determine whether we are using GNU binutils.
|
||||
echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
|
||||
echo "configure:1980: checking whether $AS is GNU as" >&5
|
||||
echo "configure:1984: checking whether $AS is GNU as" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -1999,7 +1999,7 @@ rm -f a.out
|
||||
gnu_as=$libc_cv_prog_as_gnu
|
||||
|
||||
echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
|
||||
echo "configure:1999: checking whether $LD is GNU ld" >&5
|
||||
echo "configure:2003: checking whether $LD is GNU ld" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2019,7 +2019,7 @@ gnu_ld=$libc_cv_prog_ld_gnu
|
||||
# Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
|
||||
set dummy ${ac_tool_prefix}mig; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2019: checking for $ac_word" >&5
|
||||
echo "configure:2023: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2082,7 +2082,7 @@ fi
|
||||
|
||||
# check if ranlib is necessary
|
||||
echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6
|
||||
echo "configure:2082: checking whether ranlib is necessary" >&5
|
||||
echo "configure:2086: checking whether ranlib is necessary" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2116,7 +2116,7 @@ fi
|
||||
# - two terminals occur directly after each other
|
||||
# - the path contains an element with a dot in it
|
||||
echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6
|
||||
echo "configure:2116: checking LD_LIBRARY_PATH variable" >&5
|
||||
echo "configure:2120: checking LD_LIBRARY_PATH variable" >&5
|
||||
case ${LD_LIBRARY_PATH} in
|
||||
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
|
||||
ld_library_path_setting="contains current directory"
|
||||
@ -2136,7 +2136,7 @@ fi
|
||||
# Extract the first word of "bash", so it can be a program name with args.
|
||||
set dummy bash; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2136: checking for $ac_word" >&5
|
||||
echo "configure:2140: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2182,7 +2182,7 @@ if test "$BASH" = no; then
|
||||
# Extract the first word of "ksh", so it can be a program name with args.
|
||||
set dummy ksh; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2182: checking for $ac_word" >&5
|
||||
echo "configure:2186: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2232,7 +2232,7 @@ do
|
||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||
set dummy $ac_prog; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2232: checking for $ac_word" >&5
|
||||
echo "configure:2236: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2264,7 +2264,7 @@ done
|
||||
# Extract the first word of "perl", so it can be a program name with args.
|
||||
set dummy perl; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2264: checking for $ac_word" >&5
|
||||
echo "configure:2268: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2304,7 +2304,7 @@ fi
|
||||
# Extract the first word of "install-info", so it can be a program name with args.
|
||||
set dummy install-info; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2304: checking for $ac_word" >&5
|
||||
echo "configure:2308: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2339,7 +2339,7 @@ fi
|
||||
|
||||
if test "$INSTALL_INFO" != "no"; then
|
||||
echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6
|
||||
echo "configure:2339: checking for old Debian install-info" >&5
|
||||
echo "configure:2343: checking for old Debian install-info" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2374,7 +2374,7 @@ fi
|
||||
# Extract the first word of "bison", so it can be a program name with args.
|
||||
set dummy bison; ac_word=$2
|
||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||
echo "configure:2374: checking for $ac_word" >&5
|
||||
echo "configure:2378: checking for $ac_word" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_path_BISON'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2409,7 +2409,7 @@ fi
|
||||
|
||||
|
||||
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
|
||||
echo "configure:2409: checking for signed size_t type" >&5
|
||||
echo "configure:2413: checking for signed size_t type" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2433,12 +2433,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
|
||||
echo "configure:2433: checking for libc-friendly stddef.h" >&5
|
||||
echo "configure:2437: checking for libc-friendly stddef.h" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2438 "configure"
|
||||
#line 2442 "configure"
|
||||
#include "confdefs.h"
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
@ -2453,7 +2453,7 @@ size_t size; wchar_t wchar;
|
||||
if (&size == NULL || &wchar == NULL) abort ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_friendly_stddef=yes
|
||||
else
|
||||
@ -2472,7 +2472,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
|
||||
echo "configure:2472: checking whether we need to use -P to assemble .S files" >&5
|
||||
echo "configure:2476: checking whether we need to use -P to assemble .S files" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2495,7 +2495,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether .text pseudo-op must be used""... $ac_c" 1>&6
|
||||
echo "configure:2495: checking whether .text pseudo-op must be used" >&5
|
||||
echo "configure:2499: checking whether .text pseudo-op must be used" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_dot_text'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2516,7 +2516,7 @@ else
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
|
||||
echo "configure:2516: checking for assembler global-symbol directive" >&5
|
||||
echo "configure:2520: checking for assembler global-symbol directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2546,7 +2546,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2546: checking for .set assembler directive" >&5
|
||||
echo "configure:2550: checking for .set assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2589,7 +2589,7 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2589: checking for .symver assembler directive" >&5
|
||||
echo "configure:2593: checking for .symver assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2608,7 +2608,7 @@ fi
|
||||
|
||||
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
|
||||
echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
|
||||
echo "configure:2608: checking for ld --version-script" >&5
|
||||
echo "configure:2612: checking for ld --version-script" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2631,7 +2631,7 @@ EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
|
||||
-nostartfiles -nostdlib
|
||||
-Wl,--version-script,conftest.map
|
||||
1>&5'; { (eval echo configure:2631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
1>&5'; { (eval echo configure:2635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_ld_version_script_option=yes
|
||||
else
|
||||
@ -2670,7 +2670,7 @@ if test $shared != no && test $VERSIONING = no; then
|
||||
fi
|
||||
if test $elf = yes; then
|
||||
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2670: checking for .previous assembler directive" >&5
|
||||
echo "configure:2674: checking for .previous assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2678,7 +2678,7 @@ else
|
||||
.section foo_section
|
||||
.previous
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_previous_directive=yes
|
||||
else
|
||||
libc_cv_asm_previous_directive=no
|
||||
@ -2694,7 +2694,7 @@ EOF
|
||||
|
||||
else
|
||||
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2694: checking for .popsection assembler directive" >&5
|
||||
echo "configure:2698: checking for .popsection assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2702,7 +2702,7 @@ else
|
||||
.pushsection foo_section
|
||||
.popsection
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_popsection_directive=yes
|
||||
else
|
||||
libc_cv_asm_popsection_directive=no
|
||||
@ -2719,7 +2719,7 @@ EOF
|
||||
fi
|
||||
fi
|
||||
echo $ac_n "checking for .protected and .hidden assembler directive""... $ac_c" 1>&6
|
||||
echo "configure:2719: checking for .protected and .hidden assembler directive" >&5
|
||||
echo "configure:2723: checking for .protected and .hidden assembler directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_protected_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2729,7 +2729,7 @@ foo:
|
||||
.hidden bar
|
||||
bar:
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_protected_directive=yes
|
||||
else
|
||||
libc_cv_asm_protected_directive=no
|
||||
@ -2741,14 +2741,14 @@ echo "$ac_t""$libc_cv_asm_protected_directive" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z nodelete option""... $ac_c" 1>&6
|
||||
echo "configure:2741: checking for -z nodelete option" >&5
|
||||
echo "configure:2745: checking for -z nodelete option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_nodelete'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2748: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_nodelete=yes
|
||||
else
|
||||
@ -2761,14 +2761,14 @@ echo "$ac_t""$libc_cv_z_nodelete" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z nodlopen option""... $ac_c" 1>&6
|
||||
echo "configure:2761: checking for -z nodlopen option" >&5
|
||||
echo "configure:2765: checking for -z nodlopen option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_nodlopen'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_nodlopen=yes
|
||||
else
|
||||
@ -2781,14 +2781,14 @@ echo "$ac_t""$libc_cv_z_nodlopen" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -z initfirst option""... $ac_c" 1>&6
|
||||
echo "configure:2781: checking for -z initfirst option" >&5
|
||||
echo "configure:2785: checking for -z initfirst option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_z_initfirst'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&5'; { (eval echo configure:2792: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_z_initfirst=yes
|
||||
else
|
||||
@ -2801,14 +2801,14 @@ echo "$ac_t""$libc_cv_z_initfirst" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking for -Bgroup option""... $ac_c" 1>&6
|
||||
echo "configure:2801: checking for -Bgroup option" >&5
|
||||
echo "configure:2805: checking for -Bgroup option" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_Bgroup'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&5'; { (eval echo configure:2812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }
|
||||
then
|
||||
libc_cv_Bgroup=yes
|
||||
else
|
||||
@ -2823,12 +2823,12 @@ fi
|
||||
|
||||
if test $elf != yes; then
|
||||
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
|
||||
echo "configure:2823: checking for .init and .fini sections" >&5
|
||||
echo "configure:2827: checking for .init and .fini sections" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2828 "configure"
|
||||
#line 2832 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
int main() {
|
||||
@ -2837,7 +2837,7 @@ asm (".section .init");
|
||||
asm ("${libc_cv_dot_text}");
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2837: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_have_initfini=yes
|
||||
else
|
||||
@ -2860,7 +2860,7 @@ fi
|
||||
|
||||
if test $elf = yes -a $gnu_ld = yes; then
|
||||
echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6
|
||||
echo "configure:2860: checking whether cc puts quotes around section names" >&5
|
||||
echo "configure:2864: checking whether cc puts quotes around section names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2897,19 +2897,19 @@ if test $elf = yes; then
|
||||
else
|
||||
if test $ac_cv_prog_cc_works = yes; then
|
||||
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
|
||||
echo "configure:2897: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:2901: checking for _ prefix on C symbol names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2902 "configure"
|
||||
#line 2906 "configure"
|
||||
#include "confdefs.h"
|
||||
asm ("_glibc_foobar:");
|
||||
int main() {
|
||||
glibc_foobar ();
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:2909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:2913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
libc_cv_asm_underscores=yes
|
||||
else
|
||||
@ -2924,17 +2924,17 @@ fi
|
||||
echo "$ac_t""$libc_cv_asm_underscores" 1>&6
|
||||
else
|
||||
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
|
||||
echo "configure:2924: checking for _ prefix on C symbol names" >&5
|
||||
echo "configure:2928: checking for _ prefix on C symbol names" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 2929 "configure"
|
||||
#line 2933 "configure"
|
||||
#include "confdefs.h"
|
||||
void underscore_test(void) {
|
||||
return; }
|
||||
EOF
|
||||
if { (eval echo configure:2934: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:2938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if grep _underscore_test conftest* >/dev/null; then
|
||||
rm -f conftest*
|
||||
libc_cv_asm_underscores=yes
|
||||
@ -2966,7 +2966,7 @@ if test $elf = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
|
||||
echo "configure:2966: checking for assembler .weak directive" >&5
|
||||
echo "configure:2970: checking for assembler .weak directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -2989,7 +2989,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
|
||||
|
||||
if test $libc_cv_asm_weak_directive = no; then
|
||||
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
|
||||
echo "configure:2989: checking for assembler .weakext directive" >&5
|
||||
echo "configure:2993: checking for assembler .weakext directive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3027,16 +3027,23 @@ EOF
|
||||
fi
|
||||
|
||||
case "${host_cpu}-${host_os}" in
|
||||
cris*)
|
||||
libc_cv_asm_line_sep='@'
|
||||
cat >> confdefs.h <<EOF
|
||||
#define ASM_LINE_SEP $libc_cv_asm_line_sep
|
||||
EOF
|
||||
|
||||
;;
|
||||
hppa*linux*)
|
||||
echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6
|
||||
echo "configure:3029: checking for assembler line separator" >&5
|
||||
echo "configure:3040: checking for assembler line separator" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.s <<EOF
|
||||
nop ; is_old_puffin
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3047: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_asm_line_sep='!'
|
||||
else
|
||||
if test -z "$enable_hacker_mode"; then
|
||||
@ -3058,7 +3065,7 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
|
||||
echo "configure:3058: checking for ld --no-whole-archive" >&5
|
||||
echo "configure:3069: checking for ld --no-whole-archive" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3069,7 +3076,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -Wl,--no-whole-archive
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3069: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_ld_no_whole_archive=yes
|
||||
else
|
||||
libc_cv_ld_no_whole_archive=no
|
||||
@ -3083,7 +3090,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6
|
||||
echo "configure:3083: checking for gcc -fexceptions" >&5
|
||||
echo "configure:3094: checking for gcc -fexceptions" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3094,7 +3101,7 @@ __throw () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS
|
||||
-nostdlib -nostartfiles -fexceptions
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c 1>&5'; { (eval echo configure:3105: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_exceptions=yes
|
||||
else
|
||||
libc_cv_gcc_exceptions=no
|
||||
@ -3109,14 +3116,14 @@ fi
|
||||
|
||||
if test "$base_machine" = alpha ; then
|
||||
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
|
||||
echo "configure:3109: checking for function ..ng prefix" >&5
|
||||
echo "configure:3120: checking for function ..ng prefix" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<\EOF
|
||||
foo () { }
|
||||
EOF
|
||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3127: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
|
||||
then
|
||||
libc_cv_gcc_alpha_ng_prefix=yes
|
||||
else
|
||||
@ -3143,19 +3150,19 @@ if test "$host_cpu" = powerpc ; then
|
||||
# Check for a bug present in at least versions 2.8.x of GCC
|
||||
# and versions 1.0.x of EGCS.
|
||||
echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6
|
||||
echo "configure:3143: checking whether clobbering cr0 causes problems" >&5
|
||||
echo "configure:3154: checking whether clobbering cr0 causes problems" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3148 "configure"
|
||||
#line 3159 "configure"
|
||||
#include "confdefs.h"
|
||||
int tester(int x) { asm ("" : : : "cc"); return x & 123; }
|
||||
int main() {
|
||||
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
if { (eval echo configure:3166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||
rm -rf conftest*
|
||||
libc_cv_c_asmcr0_bug='no'
|
||||
else
|
||||
@ -3177,12 +3184,12 @@ fi
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
|
||||
echo "configure:3177: checking for DWARF2 unwind info support" >&5
|
||||
echo "configure:3188: checking for DWARF2 unwind info support" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 3182 "configure"
|
||||
#line 3193 "configure"
|
||||
static char __EH_FRAME_BEGIN__;
|
||||
_start ()
|
||||
{
|
||||
@ -3209,7 +3216,7 @@ __bzero () {}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
|
||||
-nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_dwarf2_unwind_info=static
|
||||
else
|
||||
libc_cv_gcc_dwarf2_unwind_info=no
|
||||
@ -3217,7 +3224,7 @@ fi
|
||||
if test $libc_cv_gcc_dwarf2_unwind_info = no; then
|
||||
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
|
||||
-nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_dwarf2_unwind_info=yes
|
||||
else
|
||||
libc_cv_gcc_dwarf2_unwind_info=no
|
||||
@ -3247,12 +3254,12 @@ EOF
|
||||
esac
|
||||
|
||||
echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6
|
||||
echo "configure:3247: checking for __builtin_expect" >&5
|
||||
echo "configure:3258: checking for __builtin_expect" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 3252 "configure"
|
||||
#line 3263 "configure"
|
||||
int foo (int a)
|
||||
{
|
||||
a = __builtin_expect (a, 10);
|
||||
@ -3260,7 +3267,7 @@ int foo (int a)
|
||||
}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3260: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_builtin_expect=yes
|
||||
else
|
||||
libc_cv_gcc_builtin_expect=no
|
||||
@ -3277,12 +3284,12 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6
|
||||
echo "configure:3277: checking for local label subtraction" >&5
|
||||
echo "configure:3288: checking for local label subtraction" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
cat > conftest.c <<EOF
|
||||
#line 3282 "configure"
|
||||
#line 3293 "configure"
|
||||
int foo (int a)
|
||||
{
|
||||
static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
|
||||
@ -3295,7 +3302,7 @@ int foo (int a)
|
||||
}
|
||||
EOF
|
||||
if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
-o conftest conftest.c -lgcc >&5'; { (eval echo configure:3306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
|
||||
libc_cv_gcc_subtract_local_labels=yes
|
||||
else
|
||||
libc_cv_gcc_subtract_local_labels=no
|
||||
@ -3312,7 +3319,7 @@ EOF
|
||||
fi
|
||||
|
||||
echo $ac_n "checking for libgd""... $ac_c" 1>&6
|
||||
echo "configure:3312: checking for libgd" >&5
|
||||
echo "configure:3323: checking for libgd" >&5
|
||||
if test "$with_gd" != "no"; then
|
||||
old_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $libgd_include"
|
||||
@ -3321,14 +3328,14 @@ if test "$with_gd" != "no"; then
|
||||
old_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lgd -lpng -lz -lm"
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3321 "configure"
|
||||
#line 3332 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <gd.h>
|
||||
int main() {
|
||||
gdImagePng (0, 0)
|
||||
; return 0; }
|
||||
EOF
|
||||
if { (eval echo configure:3328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
if { (eval echo configure:3339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
|
||||
rm -rf conftest*
|
||||
LIBGD=yes
|
||||
else
|
||||
@ -3348,7 +3355,7 @@ echo "$ac_t""$LIBGD" 1>&6
|
||||
|
||||
|
||||
echo $ac_n "checking size of long double""... $ac_c" 1>&6
|
||||
echo "configure:3348: checking size of long double" >&5
|
||||
echo "configure:3359: checking size of long double" >&5
|
||||
if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3356,7 +3363,7 @@ else
|
||||
ac_cv_sizeof_long_double=0
|
||||
else
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 3356 "configure"
|
||||
#line 3367 "configure"
|
||||
#include "confdefs.h"
|
||||
#include <stdio.h>
|
||||
main()
|
||||
@ -3367,7 +3374,7 @@ main()
|
||||
exit(0);
|
||||
}
|
||||
EOF
|
||||
if { (eval echo configure:3367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
if { (eval echo configure:3378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
|
||||
then
|
||||
ac_cv_sizeof_long_double=`cat conftestval`
|
||||
else
|
||||
@ -3435,7 +3442,7 @@ if test "$uname" = "sysdeps/generic"; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
|
||||
echo "configure:3435: checking OS release for uname" >&5
|
||||
echo "configure:3446: checking OS release for uname" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3457,7 +3464,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
|
||||
uname_release="$libc_cv_uname_release"
|
||||
|
||||
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
|
||||
echo "configure:3457: checking OS version for uname" >&5
|
||||
echo "configure:3468: checking OS version for uname" >&5
|
||||
if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
@ -3479,7 +3486,7 @@ else
|
||||
fi
|
||||
|
||||
echo $ac_n "checking stdio selection""... $ac_c" 1>&6
|
||||
echo "configure:3479: checking stdio selection" >&5
|
||||
echo "configure:3490: checking stdio selection" >&5
|
||||
|
||||
case $stdio in
|
||||
libio) cat >> confdefs.h <<\EOF
|
||||
@ -3493,7 +3500,7 @@ echo "$ac_t""$stdio" 1>&6
|
||||
# Test for old glibc 2.0.x headers so that they can be removed properly
|
||||
# Search only in includedir.
|
||||
echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6
|
||||
echo "configure:3493: checking for old glibc 2.0.x headers" >&5
|
||||
echo "configure:3504: checking for old glibc 2.0.x headers" >&5
|
||||
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
|
||||
then
|
||||
old_glibc_headers=yes
|
||||
@ -3548,7 +3555,7 @@ if test $shared = default; then
|
||||
fi
|
||||
|
||||
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
|
||||
echo "configure:3548: checking whether -fPIC is default" >&5
|
||||
echo "configure:3559: checking whether -fPIC is default" >&5
|
||||
if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
|
||||
echo $ac_n "(cached) $ac_c" 1>&6
|
||||
else
|
||||
|
@ -1141,8 +1141,13 @@ elif test $libc_cv_asm_weakext_directive = yes; then
|
||||
fi
|
||||
|
||||
dnl The standard hppa assembler uses `;' to start comments and `!'
|
||||
dnl as a line separator.
|
||||
dnl as a line separator. CRIS uses `;' to start comments and `@' for
|
||||
dnl line separator.
|
||||
case "${host_cpu}-${host_os}" in
|
||||
cris*)
|
||||
libc_cv_asm_line_sep='@'
|
||||
AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
|
||||
;;
|
||||
hppa*linux*)
|
||||
AC_CACHE_CHECK(for assembler line separator,
|
||||
libc_cv_asm_line_sep, [dnl
|
||||
|
24
elf/elf.h
24
elf/elf.h
@ -2042,6 +2042,30 @@ typedef Elf32_Addr Elf32_Conflict;
|
||||
/* Keep this the last entry. */
|
||||
#define R_390_NUM 19
|
||||
|
||||
/* CRIS relocations. */
|
||||
#define R_CRIS_NONE 0
|
||||
#define R_CRIS_8 1
|
||||
#define R_CRIS_16 2
|
||||
#define R_CRIS_32 3
|
||||
#define R_CRIS_8_PCREL 4
|
||||
#define R_CRIS_16_PCREL 5
|
||||
#define R_CRIS_32_PCREL 6
|
||||
#define R_CRIS_GNU_VTINHERIT 7
|
||||
#define R_CRIS_GNU_VTENTRY 8
|
||||
#define R_CRIS_COPY 9
|
||||
#define R_CRIS_GLOB_DAT 10
|
||||
#define R_CRIS_JUMP_SLOT 11
|
||||
#define R_CRIS_RELATIVE 12
|
||||
#define R_CRIS_16_GOT 13
|
||||
#define R_CRIS_32_GOT 14
|
||||
#define R_CRIS_16_GOTPLT 15
|
||||
#define R_CRIS_32_GOTPLT 16
|
||||
#define R_CRIS_32_GOTREL 17
|
||||
#define R_CRIS_32_PLT_GOTREL 18
|
||||
#define R_CRIS_32_PLT_PCREL 19
|
||||
|
||||
#define R_CRIS_NUM 20
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* elf.h */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Convert characters in input buffer using conversion descriptor to
|
||||
output buffer.
|
||||
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
|
||||
@ -31,12 +31,14 @@ __gconv (__gconv_t cd, const unsigned char **inbuf,
|
||||
const unsigned char *inbufend, unsigned char **outbuf,
|
||||
unsigned char *outbufend, size_t *irreversible)
|
||||
{
|
||||
size_t last_step = cd->__nsteps - 1;
|
||||
size_t last_step;
|
||||
int result;
|
||||
|
||||
if (cd == (__gconv_t) -1L)
|
||||
return __GCONV_ILLEGAL_DESCRIPTOR;
|
||||
|
||||
last_step = cd->__nsteps - 1;
|
||||
|
||||
assert (irreversible != NULL);
|
||||
*irreversible = 0;
|
||||
|
||||
|
@ -135,10 +135,10 @@ internal_ucs4_loop_unaligned (struct __gconv_step *step,
|
||||
# endif
|
||||
|
||||
/* Determine the status. */
|
||||
if (*outptrp + 4 > outend)
|
||||
result = __GCONV_FULL_OUTPUT;
|
||||
else if (*inptrp == inend)
|
||||
if (*inptrp == inend)
|
||||
result = __GCONV_EMPTY_INPUT;
|
||||
else if (*outptrp + 4 > outend)
|
||||
result = __GCONV_FULL_OUTPUT;
|
||||
else
|
||||
result = __GCONV_INCOMPLETE_INPUT;
|
||||
|
||||
|
@ -117,11 +117,14 @@ retry:
|
||||
}
|
||||
listen(s2, 1);
|
||||
sa2len = sizeof (sa2);
|
||||
if (getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0 ||
|
||||
sa2len != SA_LEN((struct sockaddr *)&sa2)) {
|
||||
if (getsockname(s2, (struct sockaddr *)&sa2, &sa2len) < 0) {
|
||||
perror("getsockname");
|
||||
(void) __close(s2);
|
||||
goto bad;
|
||||
} else if (sa2len != SA_LEN((struct sockaddr *)&sa2)) {
|
||||
__set_errno(EINVAL);
|
||||
(void) __close(s2);
|
||||
goto bad;
|
||||
}
|
||||
port = 0;
|
||||
if (!getnameinfo((struct sockaddr *)&sa2, sa2len,
|
||||
|
@ -1,3 +1,12 @@
|
||||
2001-04-08 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* sysdeps/cris/pt-machine.h: New file.
|
||||
* sysdeps/cris/pspinlock.c: New file.
|
||||
|
||||
2001-04-09 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* shlib-versions: Add case for Linux on CRIS.
|
||||
|
||||
2001-03-26 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* attr.c (pthread_getattr_np): Correct computation of stack size
|
||||
|
@ -5,4 +5,5 @@ sh.*-.*-linux.* libpthread=0 GLIBC_2.2
|
||||
ia64.*-.*-linux.* libpthread=0 GLIBC_2.2
|
||||
hppa.*-.*-linux.* libpthread=0 GLIBC_2.2
|
||||
s390x-.*-linux.* libpthread=0 GLIBC_2.2
|
||||
cris-.*-linux.* libpthread=0 GLIBC_2.2
|
||||
.*-.*-linux.* libpthread=0
|
||||
|
72
linuxthreads/sysdeps/cris/pspinlock.c
Normal file
72
linuxthreads/sysdeps/cris/pspinlock.c
Normal file
@ -0,0 +1,72 @@
|
||||
/* POSIX spinlock implementation. CRIS version.
|
||||
Copyright (C) 2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <pthread.h>
|
||||
#include "internals.h"
|
||||
|
||||
/* FIXME: These are just dummies. I don't know why or if they're needed;
|
||||
configury should default to these definitions. We just follow the
|
||||
crowd here. */
|
||||
|
||||
int
|
||||
__pthread_spin_lock (pthread_spinlock_t *lock)
|
||||
{
|
||||
while (testandset (lock) != 0)
|
||||
;
|
||||
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__pthread_spin_lock, pthread_spin_lock)
|
||||
|
||||
|
||||
int
|
||||
__pthread_spin_trylock (pthread_spinlock_t *lock)
|
||||
{
|
||||
return testandset (lock) != 0 ? EBUSY : 0;
|
||||
}
|
||||
weak_alias (__pthread_spin_trylock, pthread_spin_trylock)
|
||||
|
||||
|
||||
int
|
||||
__pthread_spin_unlock (pthread_spinlock_t *lock)
|
||||
{
|
||||
return *lock = 0;
|
||||
}
|
||||
weak_alias (__pthread_spin_unlock, pthread_spin_unlock)
|
||||
|
||||
|
||||
int
|
||||
__pthread_spin_init (pthread_spinlock_t *lock, int pshared)
|
||||
{
|
||||
/* We can ignore the `pshared' parameter. Since we are busy-waiting
|
||||
all processes which can access the memory location `lock' points
|
||||
to can use the spinlock. */
|
||||
return *lock = 0;
|
||||
}
|
||||
weak_alias (__pthread_spin_init, pthread_spin_init)
|
||||
|
||||
|
||||
int
|
||||
__pthread_spin_destroy (pthread_spinlock_t *lock)
|
||||
{
|
||||
/* Nothing to do. */
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__pthread_spin_destroy, pthread_spin_destroy)
|
50
linuxthreads/sysdeps/cris/pt-machine.h
Normal file
50
linuxthreads/sysdeps/cris/pt-machine.h
Normal file
@ -0,0 +1,50 @@
|
||||
/* Machine-dependent pthreads configuration and inline functions.
|
||||
CRIS version.
|
||||
Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef PT_EI
|
||||
# define PT_EI extern inline
|
||||
#endif
|
||||
|
||||
PT_EI long int
|
||||
testandset (int *spinlock)
|
||||
{
|
||||
register unsigned long int ret;
|
||||
|
||||
/* Note the use of a dummy output of *spinlock to expose the write. The
|
||||
memory barrier is to stop *other* writes being moved past this code. */
|
||||
__asm__ __volatile__("clearf\n"
|
||||
"0:\n\t"
|
||||
"movu.b [%2],%0\n\t"
|
||||
"ax\n\t"
|
||||
"move.b %3,[%2]\n\t"
|
||||
"bwf 0b\n\t"
|
||||
"clearf"
|
||||
: "=&r" (ret), "=m" (*spinlock)
|
||||
: "r" (spinlock), "r" ((int) 1)
|
||||
: "memory");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Get some notion of the current stack. Need not be exactly the top
|
||||
of the stack, just something somewhere in the current frame.
|
||||
I don't trust register variables, so let's do this the safe way. */
|
||||
#define CURRENT_STACK_FRAME \
|
||||
({ char *sp; __asm__ ("move.d $sp,%0" : "=rm" (sp)); sp; })
|
@ -55,7 +55,7 @@ aux := set-freeres
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
# The AWK script to analyze the output of the mtrace functions.
|
||||
# The Perl script to analyze the output of the mtrace functions.
|
||||
ifneq ($(PERL),no)
|
||||
install-bin = mtrace
|
||||
generated = mtrace
|
||||
|
99
manual/examples/swapcontext.c
Normal file
99
manual/examples/swapcontext.c
Normal file
@ -0,0 +1,99 @@
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ucontext.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
/* Set by the signal handler. */
|
||||
static volatile int expired;
|
||||
|
||||
/* The contexts. */
|
||||
static ucontext_t uc[3];
|
||||
|
||||
/* We do only a certain number of switches. */
|
||||
static int switches;
|
||||
|
||||
|
||||
/* This is the function doing the work. It is just a
|
||||
skeleton, real code has to be filled in. */
|
||||
static void
|
||||
f (int n)
|
||||
{
|
||||
int m = 0;
|
||||
while (1)
|
||||
{
|
||||
/* This is where the work would be done. */
|
||||
if (++m % 100 == 0)
|
||||
{
|
||||
putchar ('.');
|
||||
fflush (stdout);
|
||||
}
|
||||
|
||||
/* Regularly the @var{expire} variable must be checked. */
|
||||
if (expired)
|
||||
{
|
||||
/* We do not want the program to run forever. */
|
||||
if (++switches == 20)
|
||||
return;
|
||||
|
||||
printf ("\nswitching from %d to %d\n", n, 3 - n);
|
||||
expired = 0;
|
||||
/* Switch to the other context, saving the current one. */
|
||||
swapcontext (&uc[n], &uc[3 - n]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This is the signal handler which simply set the variable. */
|
||||
void
|
||||
handler (int signal)
|
||||
{
|
||||
expired = 1;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
struct sigaction sa;
|
||||
struct itimerval it;
|
||||
char st1[8192];
|
||||
char st2[8192];
|
||||
|
||||
/* Initialize the data structures for the interval timer. */
|
||||
sa.sa_flags = SA_RESTART;
|
||||
sigfillset (&sa.sa_mask);
|
||||
sa.sa_handler = handler;
|
||||
it.it_interval.tv_sec = 0;
|
||||
it.it_interval.tv_usec = 1;
|
||||
it.it_value = it.it_interval;
|
||||
|
||||
/* Install the timer and get the context we can manipulate. */
|
||||
if (sigaction (SIGPROF, &sa, NULL) < 0
|
||||
|| setitimer (ITIMER_PROF, &it, NULL) < 0
|
||||
|| getcontext (&uc[1]) == -1
|
||||
|| getcontext (&uc[2]) == -1)
|
||||
abort ();
|
||||
|
||||
/* Create a context with a separate stack which causes the
|
||||
function @code{f} to be call with the parameter @code{1}.
|
||||
Note that the @code{uc_link} points to the main context
|
||||
which will cause the program to terminate once the function
|
||||
return. */
|
||||
uc[1].uc_link = &uc[0];
|
||||
uc[1].uc_stack.ss_sp = st1;
|
||||
uc[1].uc_stack.ss_size = sizeof st1;
|
||||
makecontext (&uc[1], (void (*) (void)) f, 1, 1);
|
||||
|
||||
/* Similarly, but @code{2} is passed as the parameter to @code{f}. */
|
||||
uc[2].uc_link = &uc[0];
|
||||
uc[2].uc_stack.ss_sp = st2;
|
||||
uc[2].uc_stack.ss_size = sizeof st2;
|
||||
makecontext (&uc[2], (void (*) (void)) f, 1, 2);
|
||||
|
||||
/* Start running. */
|
||||
swapcontext (&uc[0], &uc[1]);
|
||||
putchar ('\n');
|
||||
|
||||
return 0;
|
||||
}
|
@ -1065,7 +1065,23 @@ purpose is to obtain information about the link. @code{link}, the
|
||||
function that makes a hard link, does too. It makes a hard link to the
|
||||
symbolic link, which one rarely wants.
|
||||
|
||||
Prototypes for the functions listed in this section are in
|
||||
Some systems have for some functions operating on files have a limit on
|
||||
how many symbolic links are followed when resolving a path name. The
|
||||
limit if it exists is published in the @file{sys/param.h} header file.
|
||||
|
||||
@comment sys/param.h
|
||||
@comment BSD
|
||||
@deftypevr Macro int MAXSYMLINKS
|
||||
|
||||
The macro @code{MAXSYMLINKS} specifies how many symlinks some function
|
||||
will follow before returning @code{ELOOP}. Not all functions behave the
|
||||
same and this value is not the same a that returned for
|
||||
@code{_SC_SYMLOOP} by @code{sysconf}. In fact, the @code{sysconf}
|
||||
result can indicate that there is no fixed limit although
|
||||
@code{MAXSYMLINKS} exists and has a finite value.
|
||||
@end deftypevr
|
||||
|
||||
Prototypes for most of the functions listed in this section are in
|
||||
@file{unistd.h}.
|
||||
@pindex unistd.h
|
||||
|
||||
@ -1153,6 +1169,73 @@ A hardware error occurred while reading or writing data on the disk.
|
||||
@c @end group
|
||||
@end deftypefun
|
||||
|
||||
In some situations it is desirable to resolve all the to get the real
|
||||
name of a file where no prefix names a symbolic link which is followed
|
||||
and no filename in the path is @code{.} or @code{..}. This is for
|
||||
instance desirable if files have to be compare in which case different
|
||||
names can refer to the same inode.
|
||||
|
||||
@comment stdlib.h
|
||||
@comment GNU
|
||||
@deftypefun {char *} canonicalize_file_name (const char *@var{name})
|
||||
|
||||
The @code{canonicalize_file_name} function returns the absolute name of
|
||||
the file named by @var{name} which contains no @code{.}, @code{..}
|
||||
components nor any repeated path separators (@code{/}) or symlinks. The
|
||||
result is passed back as the return value of the function in a block of
|
||||
memory allocated with @code{malloc}. If the result is not used anymore
|
||||
the memory should be freed with a call to @code{free}.
|
||||
|
||||
In any of the path components except the last one is missing the
|
||||
function returns a NULL pointer. This is also what is returned if the
|
||||
length of the path reaches or exceeds @code{PATH_MAX} characters. In
|
||||
any case @code{errno} is set accordingly.
|
||||
|
||||
@table @code
|
||||
@item ENAMETOOLONG
|
||||
The resulting path is too long. This error only occurs on systems which
|
||||
have a limit on the file name length.
|
||||
|
||||
@item EACCES
|
||||
At least one of the path components is not readable.
|
||||
|
||||
@item ENOENT
|
||||
The input file name is empty.
|
||||
|
||||
@item ENOENT
|
||||
At least one of the path components does not exist.
|
||||
|
||||
@item ELOOP
|
||||
More than @code{MAXSYMLINKS} many symlinks have been followed.
|
||||
@end table
|
||||
|
||||
This function is a GNU extension and is declared in @file{stdlib.h}.
|
||||
@end deftypefun
|
||||
|
||||
The Unix standard includes a similar function which differs from
|
||||
@code{canonicalize_file_name} in that the user has to provide the buffer
|
||||
where the result is placed in.
|
||||
|
||||
@comment stdlib.h
|
||||
@comment XPG
|
||||
@deftypefun {char *} realpath (const char *restrict @var{name}, char *restrict @var{resolved})
|
||||
|
||||
The @code{realpath} function behaves just like
|
||||
@code{canonicalize_file_name} but instead of allocating a buffer for the
|
||||
result it is placed in the buffer pointed to by @var{resolved}.
|
||||
|
||||
One other difference is that the buffer @var{resolved} will contain the
|
||||
part of the path component which does not exist or is not readable if
|
||||
the function returns @code{NULL} and @code{errno} is set to
|
||||
@code{EACCES} or @code{ENOENT}.
|
||||
|
||||
This function is declared in @file{stdlib.h}.
|
||||
@end deftypefun
|
||||
|
||||
The advantage of using this function is that it is more widely
|
||||
available. The drawback is that it reports failures for long path on
|
||||
systems which have no limits on the file name length.
|
||||
|
||||
@node Deleting Files
|
||||
@section Deleting Files
|
||||
@cindex deleting a file
|
||||
|
@ -424,6 +424,7 @@ following patterns:
|
||||
@smallexample
|
||||
alpha@var{*}-@var{*}-linux
|
||||
arm-@var{*}-linux
|
||||
cris-@var{*}-linux
|
||||
hppa-@var{*}-linux
|
||||
i@var{x}86-@var{*}-gnu
|
||||
i@var{x}86-@var{*}-linux
|
||||
|
@ -12,8 +12,9 @@ functions.
|
||||
|
||||
@menu
|
||||
* Intro: Non-Local Intro. When and how to use these facilities.
|
||||
* Details: Non-Local Details. Functions for non-local exits.
|
||||
* Details: Non-Local Details. Functions for non-local exits.
|
||||
* Non-Local Exits and Signals:: Portability issues.
|
||||
* System V contexts:: Complete context control a la System V.
|
||||
@end menu
|
||||
|
||||
@node Non-Local Intro, Non-Local Details, , Non-Local Exits
|
||||
@ -169,7 +170,7 @@ function containing the @code{setjmp} call that have been changed since
|
||||
the call to @code{setjmp} are indeterminate, unless you have declared
|
||||
them @code{volatile}.
|
||||
|
||||
@node Non-Local Exits and Signals,, Non-Local Details, Non-Local Exits
|
||||
@node Non-Local Exits and Signals, System V contexts, Non-Local Details, Non-Local Exits
|
||||
@section Non-Local Exits and Signals
|
||||
|
||||
In BSD Unix systems, @code{setjmp} and @code{longjmp} also save and
|
||||
@ -211,3 +212,237 @@ argument. If the @code{sigsetjmp} call that set this @var{state} used a
|
||||
nonzero @var{savesigs} flag, @code{siglongjmp} also restores the set of
|
||||
blocked signals.
|
||||
@end deftypefun
|
||||
|
||||
@node System V contexts,, Non-Local Exits and Signals, Non-Local Exits
|
||||
@section Complete Context Control
|
||||
|
||||
The Unix standard one more set of function to control the execution path
|
||||
and these functions are more powerful than those discussed in this
|
||||
chapter so far. These function were part of the original @w{System V}
|
||||
API and by this route were added to the Unix API. Beside on branded
|
||||
Unix implementations these interfaces are not widely available. Not all
|
||||
platforms and/or architectures the GNU C Library is available on provide
|
||||
this interface. Use @file{configure} to detect the availability.
|
||||
|
||||
Similar to the @code{jmp_buf} and @code{sigjmp_buf} types used for the
|
||||
variables to contain the state of the @code{longjmp} functions the
|
||||
interfaces of interest here have an appropriate type as well. Objects
|
||||
of this type are normally much larger since more information is
|
||||
contained. The type is also used in a few more places as we will see.
|
||||
The types and functions described in this section are all defined and
|
||||
declared respectively in the @file{ucontext.h} header file.
|
||||
|
||||
@comment ucontext.h
|
||||
@comment SVID
|
||||
@deftp {Data Type} ucontext_t
|
||||
|
||||
The @code{ucontext_t} type is defined as a structure with as least the
|
||||
following elements:
|
||||
|
||||
@table @code
|
||||
@item ucontext_t *uc_link
|
||||
This is a pointer to the next context structure which is used if the
|
||||
context described in the current structure returns.
|
||||
|
||||
@item sigset_t uc_sigmask
|
||||
Set of signals which are blocked when this context is used.
|
||||
|
||||
@item stack_t uc_stack
|
||||
Stack used for this context. The value need not be (and normally is
|
||||
not) the stack pointer. @xref{Signal Stack}.
|
||||
|
||||
@item mcontext_t uc_mcontext
|
||||
This element contains the actual state of the process. The
|
||||
@code{mcontext_t} type is also defined in this header but the definition
|
||||
should be treated as opaque. Any use of knowledge of the type makes
|
||||
applications less portable.
|
||||
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
Objects of this type have to be created by the user. The initialization
|
||||
and modification happens through one of the following functions:
|
||||
|
||||
@comment ucontext.h
|
||||
@comment SVID
|
||||
@deftypefun int getcontext (ucontext_t *@var{ucp})
|
||||
The @code{getcontext} function initializes the variable pointed to by
|
||||
@var{ucp} with the context of the calling thread. The context contains
|
||||
the content of the registers, the signal mask, and the current stack.
|
||||
Executing the contents would start at the point where the
|
||||
@code{getcontext} call just returned.
|
||||
|
||||
The function returns @code{0} if succesful. Otherwise it returns
|
||||
@code{-1} and sets @var{errno} accordingly.
|
||||
@end deftypefun
|
||||
|
||||
The @code{getcontext} function is similar to @code{setjmp} but it does
|
||||
not provide an indication of whether the function returns for the first
|
||||
time or whether the initialized context was used and the execution is
|
||||
resumed at just that point. If this is necessary the user has to take
|
||||
determine this herself. This must be done carefully since the context
|
||||
contains registers which might contain register variables. This is a
|
||||
good situation to define variables with @code{volatile}.
|
||||
|
||||
Once the context variable is initialized it can be used as is or it can
|
||||
be modified. The latter is normally done to implement co-routines or
|
||||
similar constructs. The @code{makecontext} function is what has to be
|
||||
used to do that.
|
||||
|
||||
@comment ucontext.h
|
||||
@comment SVID
|
||||
@deftypefun void makecontext (ucontext_t *@var{ucp}, void (*@var{func}) (void), int @var{argc}, @dots{})
|
||||
|
||||
The @var{ucp} parameter passed to the @code{makecontext} shall be
|
||||
initialized by a call to @code{getcontext}. The context will be
|
||||
modified to in a way so that if the context is resumed it will start by
|
||||
calling the function @code{func} which gets @var{argc} integer arguments
|
||||
passed. The integer arguments which are to be passed should follow the
|
||||
@var{argc} parameter in the call to @code{makecontext}.
|
||||
|
||||
Before the call to this function the @code{uc_stack} and @code{uc_link}
|
||||
element of the @var{ucp} structure should be initialized. The
|
||||
@code{uc_stack} element describes the stack which is used for this
|
||||
context. No two contexts which are used at the same time should use the
|
||||
same memory region for a stack.
|
||||
|
||||
The @code{uc_link} element of the object pointed to by @var{ucp} should
|
||||
be a pointer to the context to be executed when the function @var{func}
|
||||
returns or it should be a null pointer. See @code{setcontext} for more
|
||||
information about the exact use.
|
||||
@end deftypefun
|
||||
|
||||
While allocating the memory for the stack one has to be careful. Most
|
||||
modern processors keep track of whether a certain memory region is
|
||||
allowed to contain code which is executed or not. Data segments and
|
||||
heap memory is normally not tagged to allow this. The result is that
|
||||
programs would fail. Examples for such code include the calling
|
||||
sequences the GNU C compiler generates for calls to nested functions.
|
||||
Safe ways to allocate stacks correctly include using memory on the
|
||||
original threads stack or explicitly allocate memory tagged for
|
||||
execution using (@pxref{Memory-mapped I/O}).
|
||||
|
||||
@strong{Compatibility note}: The current Unix standard is very imprecise
|
||||
about the way the stack is allocated. All implementations seem to agree
|
||||
that the @code{uc_stack} element must be used but the values stored in
|
||||
the elements of the @code{stack_t} value are unclear. The GNU C library
|
||||
and most other Unix implementations require the @code{ss_sp} value of
|
||||
the @code{uc_stack} element to point to the base of the memory region
|
||||
allocated for the stack and the size of the memory region is stored in
|
||||
@code{ss_size}. There are implements out there which require
|
||||
@code{ss_sp} to be set to the value the stack pointer will have (which
|
||||
can depending on the direction the stack grows be different). This
|
||||
difference makes the @code{makecontext} function hard to use and it
|
||||
requires detection of the platform at compile time.
|
||||
|
||||
@comment ucontext.h
|
||||
@comment SVID
|
||||
@deftypefun int setcontext (const ucontext_t *@var{ucp})
|
||||
|
||||
The @code{setcontext} function restores the context described by
|
||||
@var{ucp}. The context is not modified and can be reused as often as
|
||||
wanted.
|
||||
|
||||
If the context was created by @code{getcontext} execution resumes with
|
||||
the registers filled with the same values and the same stack as if the
|
||||
@code{getcontext} call just returned.
|
||||
|
||||
If the context was modified with a call to @code{makecontext} execution
|
||||
continues with the function passed to @code{makecontext} which gets the
|
||||
specified parameters passed. If this function returns execution is
|
||||
resumed in the context which was referenced by the @code{uc_link}
|
||||
element of the context structure passed to @code{makecontext} at the
|
||||
time of the call. If @code{uc_link} was a null pointer the application
|
||||
terminates in this case.
|
||||
|
||||
Since the context contains information about the stack no two threads
|
||||
should use the same context at the same time. The result in most cases
|
||||
would be disastrous.
|
||||
|
||||
The @code{setcontext} function does not return unless an error occurred
|
||||
in which case it returns @code{-1}.
|
||||
@end deftypefun
|
||||
|
||||
The @code{setcontext} function simply replaces the current context with
|
||||
the one described by the @var{ucp} parameter. This is often useful but
|
||||
there are situations where the current context has to be preserved.
|
||||
|
||||
@comment ucontext.h
|
||||
@comment SVID
|
||||
@deftypefun int swapcontext (ucontext_t *restrict @var{oucp}, const ucontext_t *restrict @var{ucp})
|
||||
|
||||
The @code{swapcontext} function is similar to @code{setcontext} but
|
||||
instead of just replacing the current context the latter is first saved
|
||||
in the object pointed to by @var{oucp} as if this was a call to
|
||||
@code{getcontext}. The saved context would resume after the call to
|
||||
@code{swapcontext}.
|
||||
|
||||
Once the current context is saved the context described in @var{ucp} is
|
||||
installed and execution continues as described in this context.
|
||||
|
||||
If @code{swapcontext} succeeds the function does not return unless the
|
||||
context @var{oucp} is used without prior modification by
|
||||
@code{makecontext}. The return value in this case is @code{0}. If the
|
||||
function fails it returns @code{-1} and set @var{errno} accordingly.
|
||||
@end deftypefun
|
||||
|
||||
@heading Example for SVID Context Handling
|
||||
|
||||
The easiest way to use the context handling functions is as a
|
||||
replacement for @code{setjmp} and @code{longjmp}. The context contains
|
||||
on most platforms more information which might lead to less surprises
|
||||
but this also means using these functions is more expensive (beside
|
||||
being less portable).
|
||||
|
||||
@smallexample
|
||||
int
|
||||
random_search (int n, int (*fp) (int, ucontext_t *))
|
||||
@{
|
||||
volatile int cnt = 0;
|
||||
ucontext_t uc;
|
||||
|
||||
/* @r{Safe current context.} */
|
||||
if (getcontext (&uc) < 0)
|
||||
return -1;
|
||||
|
||||
/* @r{If we have not tried @var{n} times try again.} */
|
||||
if (cnt++ < n)
|
||||
/* @r{Call the function with a new random number}
|
||||
@r{and the context}. */
|
||||
if (fp (rand (), &uc) != 0)
|
||||
/* @r{We found what we were looking for.} */
|
||||
return 1;
|
||||
|
||||
/* @r{Not found.} */
|
||||
return 0;
|
||||
@}
|
||||
@end smallexample
|
||||
|
||||
Using contexts in such a way enables emulating exception handling. The
|
||||
search functions passed in the @var{fp} parameter could be very large,
|
||||
nested, and complex which would make it complicated (or at least would
|
||||
require a lot of code) to leave the function with an error value which
|
||||
has to be passed down to the caller. By using the context it is
|
||||
possible to leave the search function in one step and allow restarting
|
||||
the search which also has the nice side effect that it can be
|
||||
significantly faster.
|
||||
|
||||
Something which is harder to implement with @code{setjmp} and
|
||||
@code{longjmp} is to switch temporarily to a different execution path
|
||||
and then resume where execution was stopped.
|
||||
|
||||
@smallexample
|
||||
@include swapcontext.c.texi
|
||||
@end smallexample
|
||||
|
||||
This an example how the context functions can be used to implement
|
||||
co-routines or cooperative multi-threading. All that has to be done is
|
||||
to call every once in a while @code{swapcontext} to continue running a
|
||||
different context. It is not allowed to do the context switching from
|
||||
the signal handler directly since neither @code{setcontext} nor
|
||||
@code{swapcontext} are functions which can be called from a signal
|
||||
handler. But setting a variable in the signal handler and checking it
|
||||
in the body of the functions which are executed. Since
|
||||
@code{swapcontext} is saving the current context it is possible to have
|
||||
multiple different scheduling points in the code. Execution will always
|
||||
resume where it was left.
|
||||
|
@ -1171,7 +1171,7 @@ the signal. These are described in more detail in @ref{Flags for Sigaction}.
|
||||
|
||||
@comment signal.h
|
||||
@comment POSIX.1
|
||||
@deftypefun int sigaction (int @var{signum}, const struct sigaction *@var{action}, struct sigaction *@var{old-action})
|
||||
@deftypefun int sigaction (int @var{signum}, const struct sigaction *restrict @var{action}, struct sigaction *restrict @var{old-action})
|
||||
The @var{action} argument is used to set up a new action for the signal
|
||||
@var{signum}, while the @var{old-action} argument is used to return
|
||||
information about the action previously associated with this symbol.
|
||||
@ -2563,7 +2563,7 @@ The prototype for the @code{sigprocmask} function is in @file{signal.h}.
|
||||
|
||||
@comment signal.h
|
||||
@comment POSIX.1
|
||||
@deftypefun int sigprocmask (int @var{how}, const sigset_t *@var{set}, sigset_t *@var{oldset})
|
||||
@deftypefun int sigprocmask (int @var{how}, const sigset_t *restrict @var{set}, sigset_t *restrict @var{oldset})
|
||||
The @code{sigprocmask} function is used to examine or change the calling
|
||||
process's signal mask. The @var{how} argument determines how the signal
|
||||
mask is changed, and must be one of the following values:
|
||||
@ -3088,8 +3088,8 @@ not require your program to know which direction the stack grows, which
|
||||
depends on the specific machine and operating system.
|
||||
|
||||
@comment signal.h
|
||||
@comment BSD
|
||||
@deftp {Data Type} {struct sigaltstack}
|
||||
@comment XPG
|
||||
@deftp {Data Type} stack_t
|
||||
This structure describes a signal stack. It contains the following members:
|
||||
|
||||
@table @code
|
||||
@ -3136,8 +3136,8 @@ delivered on the normal user stack.
|
||||
@end deftp
|
||||
|
||||
@comment signal.h
|
||||
@comment BSD
|
||||
@deftypefun int sigaltstack (const struct sigaltstack *@var{stack}, struct sigaltstack *@var{oldstack})
|
||||
@comment XPG
|
||||
@deftypefun int sigaltstack (const stack_t *restrict @var{stack}, stack_t *restrict @var{oldstack})
|
||||
The @code{sigaltstack} function specifies an alternate stack for use
|
||||
during signal handling. When a signal is received by the process and
|
||||
its action indicates that the signal stack is used, the system arranges
|
||||
|
@ -24,6 +24,7 @@ ia64-.*-linux.* libm=6.1 GLIBC_2.2
|
||||
sh.*-.*-linux.* libm=6 GLIBC_2.2
|
||||
hppa.*-.*-.* libm=6 GLIBC_2.2
|
||||
s390x-.*-linux.* libm=6 GLIBC_2.2
|
||||
cris-.*-linux.* libm=6 GLIBC_2.2
|
||||
.*-.*-linux.* libm=6
|
||||
.*-.*-gnu-gnu.* libm=6
|
||||
|
||||
@ -36,6 +37,7 @@ sh.*-.*-linux.* libc=6 GLIBC_2.2
|
||||
sparc64-.*-linux.* libc=6 GLIBC_2.2
|
||||
hppa.*-.*-.* libc=6 GLIBC_2.2
|
||||
s390x-.*-linux.* libc=6 GLIBC_2.2
|
||||
cris-.*-linux.* libc=6 GLIBC_2.2
|
||||
.*-.*-linux.* libc=6
|
||||
|
||||
# libmachuser.so.1 corresponds to mach/*.defs as of Utah's UK22 release.
|
||||
@ -62,6 +64,7 @@ ia64-.*-linux.* ld=ld-linux-ia64.so.2 GLIBC_2.2
|
||||
mips.*-.*-linux.* ld=ld.so.1 GLIBC_2.0 GLIBC_2.2
|
||||
hppa.*-.*-.* ld=ld.so.1 GLIBC_2.2
|
||||
s390x-.*-linux.* ld=ld64.so.1 GLIBC_2.2
|
||||
cris-.*-linux.* ld=ld.so.1 GLIBC_2.2
|
||||
# We use the ELF ABI standard name for the default.
|
||||
.*-.*-.* ld=ld.so.1
|
||||
|
||||
@ -69,12 +72,14 @@ s390x-.*-linux.* ld=ld64.so.1 GLIBC_2.2
|
||||
alpha.*-.*-linux.* libdl=2.1
|
||||
mips.*-.*-linux.* libdl=2 GLIBC_2.0 GLIBC_2.2
|
||||
s390x-.*-linux.* libdl=2 GLIBC_2.2
|
||||
cris-.*-linux.* libdl=2 GLIBC_2.2
|
||||
.*-.*-.* libdl=2
|
||||
|
||||
# So far the -lutil interface is the same on all platforms, except for the
|
||||
# `struct utmp' format, which depends on libc.
|
||||
alpha.*-.*-linux.* libutil=1.1
|
||||
s390x-.*-linux.* libutil=1 GLIBC_2.2
|
||||
cris-.*-linux.* libutil=1 GLIBC_2.2
|
||||
.*-.*-.* libutil=1
|
||||
|
||||
# Version number 2 is used on other systems for the BIND 4.9.5 resolver
|
||||
@ -100,6 +105,13 @@ s390x-.*-linux.* libnss_nis=2 GLIBC_2.2
|
||||
s390x-.*-linux.* libnss_nisplus=2 GLIBC_2.2
|
||||
s390x-.*-linux.* libnss_ldap=2 GLIBC_2.2
|
||||
s390x-.*-linux.* libnss_hesiod=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_files=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_dns=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_compat=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_nis=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_nisplus=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_ldap=2 GLIBC_2.2
|
||||
cris-.*-linux.* libnss_hesiod=2 GLIBC_2.2
|
||||
.*-.*-.* libnss_files=2
|
||||
.*-.*-.* libnss_dns=2
|
||||
.*-.*-.* libnss_compat=2
|
||||
@ -112,11 +124,13 @@ s390x-.*-linux.* libnss_hesiod=2 GLIBC_2.2
|
||||
alpha.*-.*-linux.* libnsl=1.1
|
||||
mips.*-.*-linux.* libnsl=1 GLIBC_2.0 GLIBC_2.2
|
||||
s390x-.*-linux.* libnsl=1 GLIBC_2.2
|
||||
cris-.*-linux.* libnsl=1 GLIBC_2.2
|
||||
.*-.*-.* libnsl=1
|
||||
|
||||
# This defines the shared library version numbers we will install.
|
||||
alpha.*-.*-linux.* libcrypt=1.1
|
||||
s390x-.*-linux.* libcrypt=1 GLIBC_2.2
|
||||
cris-.*-linux.* libcrypt=1 GLIBC_2.2
|
||||
.*-.*-.* libcrypt=1
|
||||
|
||||
# The gross patch for programs assuming broken locale implementations.
|
||||
@ -126,11 +140,13 @@ sh.*-.*-.* libBrokenLocale=1 GLIBC_2.2
|
||||
sparc64-.*-.* libBrokenLocale=1 GLIBC_2.2
|
||||
hppa-.*-.* libBrokenLocale=1 GLIBC_2.2
|
||||
s390x-.*-linux.* libBrokenLocale=1 GLIBC_2.2
|
||||
cris-.*-linux.* libBrokenLocale=1 GLIBC_2.2
|
||||
.*-.*-.* libBrokenLocale=1
|
||||
|
||||
# The real-time library from POSIX.1b.
|
||||
mips.*-.*-linux.* librt=1 GLIBC_2.0 GLIBC_2.2
|
||||
s390x-.*-linux.* librt=1 GLIBC_2.2
|
||||
cris-.*-linux.* librt=1 GLIBC_2.2
|
||||
.*-.*-.* librt=1
|
||||
|
||||
# The asynchronous name lookup library.
|
||||
|
5
sysdeps/unix/sysv/linux/cris/Dist
Normal file
5
sysdeps/unix/sysv/linux/cris/Dist
Normal file
@ -0,0 +1,5 @@
|
||||
clone.S
|
||||
setresuid.c
|
||||
setresgid.c
|
||||
setfsuid.c
|
||||
setfsgid.c
|
8
sysdeps/unix/sysv/linux/cris/Makefile
Normal file
8
sysdeps/unix/sysv/linux/cris/Makefile
Normal file
@ -0,0 +1,8 @@
|
||||
ifeq ($(subdir),misc)
|
||||
sysdep_routines += setfsgid setfsuid setresgid setresuid
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),signal)
|
||||
sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait \
|
||||
rt_sigqueueinfo rt_sigaction rt_sigpending
|
||||
endif
|
105
sysdeps/unix/sysv/linux/cris/_G_config.h
Normal file
105
sysdeps/unix/sysv/linux/cris/_G_config.h
Normal file
@ -0,0 +1,105 @@
|
||||
/* This file is needed by libio to define various configuration parameters.
|
||||
These are always the same in the GNU C library. */
|
||||
|
||||
/* We have to keep a separate copy for CRIS, because we don't use thunks,
|
||||
and libstdc++-v2 (which we currently use) cares. The C++ ABI is
|
||||
changed totally with GCC 3.0, where we should not need a separate file. */
|
||||
|
||||
#ifndef _G_config_h
|
||||
#define _G_config_h 1
|
||||
|
||||
/* Define types for libio in terms of the standard internal type names. */
|
||||
|
||||
#include <bits/types.h>
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
#define __need_wint_t
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
#ifndef _WINT_T
|
||||
/* Integral type unchanged by default argument promotions that can
|
||||
hold any value corresponding to members of the extended character
|
||||
set, as well as at least one value that does not correspond to any
|
||||
member of the extended character set. */
|
||||
# define _WINT_T
|
||||
typedef unsigned int wint_t;
|
||||
#endif
|
||||
#define __need_mbstate_t
|
||||
#include <wchar.h>
|
||||
#define _G_size_t size_t
|
||||
typedef struct
|
||||
{
|
||||
__off_t __pos;
|
||||
__mbstate_t __state;
|
||||
} _G_fpos_t;
|
||||
typedef struct
|
||||
{
|
||||
__off64_t __pos;
|
||||
__mbstate_t __state;
|
||||
} _G_fpos64_t;
|
||||
#define _G_ssize_t __ssize_t
|
||||
#define _G_off_t __off_t
|
||||
#define _G_off64_t __off64_t
|
||||
#define _G_pid_t __pid_t
|
||||
#define _G_uid_t __uid_t
|
||||
#define _G_wchar_t wchar_t
|
||||
#define _G_wint_t wint_t
|
||||
#define _G_stat64 stat64
|
||||
#include <gconv.h>
|
||||
typedef union
|
||||
{
|
||||
struct __gconv_info __cd;
|
||||
struct
|
||||
{
|
||||
struct __gconv_info __cd;
|
||||
struct __gconv_step_data __data;
|
||||
} __combined;
|
||||
} _G_iconv_t;
|
||||
|
||||
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
|
||||
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
|
||||
|
||||
#define _G_HAVE_BOOL 1
|
||||
|
||||
|
||||
/* These library features are always available in the GNU C library. */
|
||||
#define _G_HAVE_ATEXIT 1
|
||||
#define _G_HAVE_SYS_CDEFS 1
|
||||
#define _G_HAVE_SYS_WAIT 1
|
||||
#define _G_NEED_STDARG_H 1
|
||||
#define _G_va_list __gnuc_va_list
|
||||
|
||||
#define _G_HAVE_PRINTF_FP 1
|
||||
#define _G_HAVE_MMAP 1
|
||||
#define _G_HAVE_LONG_DOUBLE_IO 1
|
||||
#define _G_HAVE_IO_FILE_OPEN 1
|
||||
#define _G_HAVE_IO_GETLINE_INFO 1
|
||||
|
||||
#define _G_IO_IO_FILE_VERSION 0x20001
|
||||
|
||||
#define _G_OPEN64 __open64
|
||||
#define _G_LSEEK64 __lseek64
|
||||
#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf)
|
||||
|
||||
/* This is defined by <bits/stat.h> if `st_blksize' exists. */
|
||||
#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
|
||||
|
||||
#define _G_BUFSIZ 8192
|
||||
|
||||
/* These are the vtbl details for ELF. */
|
||||
#define _G_NAMES_HAVE_UNDERSCORE 0
|
||||
#define _G_VTABLE_LABEL_HAS_LENGTH 1
|
||||
#undef _G_USING_THUNKS
|
||||
#define _G_VTABLE_LABEL_PREFIX "_vt."
|
||||
#define _G_VTABLE_LABEL_PREFIX_ID _vt.
|
||||
|
||||
|
||||
#if defined __cplusplus || defined __STDC__
|
||||
# define _G_ARGS(ARGLIST) ARGLIST
|
||||
#else
|
||||
# define _G_ARGS(ARGLIST) ()
|
||||
#endif
|
||||
|
||||
#endif /* _G_config.h */
|
179
sysdeps/unix/sysv/linux/cris/bits/fcntl.h
Normal file
179
sysdeps/unix/sysv/linux/cris/bits/fcntl.h
Normal file
@ -0,0 +1,179 @@
|
||||
/* O_*, F_*, FD_* bit values for Linux.
|
||||
Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _FCNTL_H
|
||||
# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
|
||||
located on an ext2 file system */
|
||||
#define O_ACCMODE 0003
|
||||
#define O_RDONLY 00
|
||||
#define O_WRONLY 01
|
||||
#define O_RDWR 02
|
||||
#define O_CREAT 0100 /* not fcntl */
|
||||
#define O_EXCL 0200 /* not fcntl */
|
||||
#define O_NOCTTY 0400 /* not fcntl */
|
||||
#define O_TRUNC 01000 /* not fcntl */
|
||||
#define O_APPEND 02000
|
||||
#define O_NONBLOCK 04000
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
#define O_SYNC 010000
|
||||
#define O_FSYNC O_SYNC
|
||||
#define O_ASYNC 020000
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define O_DIRECT 040000 /* Direct disk access. */
|
||||
# define O_DIRECTORY 0200000 /* Must be a directory. */
|
||||
# define O_NOFOLLOW 0400000 /* Do not follow links. */
|
||||
#endif
|
||||
|
||||
/* For now Linux has synchronisity options for data and read operations.
|
||||
We define the symbols here but let them do the same as O_SYNC since
|
||||
this is a superset. */
|
||||
#if defined __USE_POSIX199309 || defined __USE_UNIX98
|
||||
# define O_DSYNC O_SYNC /* Synchronize data. */
|
||||
# define O_RSYNC O_SYNC /* Synchronize read operations. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
# define O_LARGEFILE 0100000
|
||||
#endif
|
||||
|
||||
/* Values for the second argument to `fcntl'. */
|
||||
#define F_DUPFD 0 /* Duplicate file descriptor. */
|
||||
#define F_GETFD 1 /* Get file descriptor flags. */
|
||||
#define F_SETFD 2 /* Set file descriptor flags. */
|
||||
#define F_GETFL 3 /* Get file status flags. */
|
||||
#define F_SETFL 4 /* Set file status flags. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
# define F_GETLK 5 /* Get record locking info. */
|
||||
# define F_SETLK 6 /* Set record locking info (non-blocking). */
|
||||
# define F_SETLKW 7 /* Set record locking info (blocking). */
|
||||
#else
|
||||
# define F_GETLK F_GETLK64 /* Get record locking info. */
|
||||
# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
|
||||
# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
|
||||
#endif
|
||||
#define F_GETLK64 12 /* Get record locking info. */
|
||||
#define F_SETLK64 13 /* Set record locking info (non-blocking). */
|
||||
#define F_SETLKW64 14 /* Set record locking info (blocking). */
|
||||
|
||||
#if defined __USE_BSD || defined __USE_XOPEN2K
|
||||
# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
|
||||
# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define F_SETSIG 10 /* Set number of signal to be sent. */
|
||||
# define F_GETSIG 11 /* Get number of signal to be sent. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define F_SETLEASE 1024 /* Set a lease. */
|
||||
# define F_GETLEASE 1025 /* Enquire what lease is active. */
|
||||
# define F_NOTIFY 1026 /* Request notfications on a directory. */
|
||||
#endif
|
||||
|
||||
/* For F_[GET|SET]FL. */
|
||||
#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
|
||||
#define F_RDLCK 0 /* Read lock. */
|
||||
#define F_WRLCK 1 /* Write lock. */
|
||||
#define F_UNLCK 2 /* Remove lock. */
|
||||
|
||||
/* For old implementation of bsd flock(). */
|
||||
#define F_EXLCK 4 /* or 3 */
|
||||
#define F_SHLCK 8 /* or 4 */
|
||||
|
||||
#ifdef __USE_BSD
|
||||
/* Operations for bsd flock(), also used by the kernel implementation. */
|
||||
# define LOCK_SH 1 /* shared lock */
|
||||
# define LOCK_EX 2 /* exclusive lock */
|
||||
# define LOCK_NB 4 /* or'd with one of the above to prevent
|
||||
blocking */
|
||||
# define LOCK_UN 8 /* remove lock */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define LOCK_MAND 32 /* This is a mandatory flock: */
|
||||
# define LOCK_READ 64 /* ... which allows concurrent read operations. */
|
||||
# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
|
||||
# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Types of directory notifications that may be requested with F_NOTIFY. */
|
||||
# define DN_ACCESS 0x00000001 /* File accessed. */
|
||||
# define DN_MODIFY 0x00000002 /* File modified. */
|
||||
# define DN_CREATE 0x00000004 /* File created. */
|
||||
# define DN_DELETE 0x00000008 /* File removed. */
|
||||
# define DN_RENAME 0x00000010 /* File renamed. */
|
||||
# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
|
||||
# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
|
||||
#endif
|
||||
|
||||
struct flock
|
||||
{
|
||||
short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
|
||||
short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
__off_t l_start; /* Offset where the lock begins. */
|
||||
__off_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
#else
|
||||
__off64_t l_start; /* Offset where the lock begins. */
|
||||
__off64_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
#endif
|
||||
__pid_t l_pid; /* Process holding the lock. */
|
||||
};
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct flock64
|
||||
{
|
||||
short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
|
||||
short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
|
||||
__off64_t l_start; /* Offset where the lock begins. */
|
||||
__off64_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
__pid_t l_pid; /* Process holding the lock. */
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Define some more compatibility macros to be backward compatible with
|
||||
BSD systems which did not managed to hide these kernel macros. */
|
||||
#ifdef __USE_BSD
|
||||
# define FAPPEND O_APPEND
|
||||
# define FFSYNC O_FSYNC
|
||||
# define FASYNC O_ASYNC
|
||||
# define FNONBLOCK O_NONBLOCK
|
||||
# define FNDELAY O_NDELAY
|
||||
#endif /* Use BSD. */
|
||||
|
||||
/* Advise to `posix_fadvise'. */
|
||||
#ifdef __USE_XOPEN2K
|
||||
# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
|
||||
# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
|
||||
# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
|
||||
# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
|
||||
#endif
|
93
sysdeps/unix/sysv/linux/cris/bits/mman.h
Normal file
93
sysdeps/unix/sysv/linux/cris/bits/mman.h
Normal file
@ -0,0 +1,93 @@
|
||||
/* Definitions for POSIX memory map interface. Linux/CRIS version.
|
||||
Copyright (C) 1997, 2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _SYS_MMAN_H
|
||||
# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
|
||||
#endif
|
||||
|
||||
/* The following definitions basically come from the kernel headers.
|
||||
But the kernel header is not namespace clean. */
|
||||
|
||||
|
||||
/* Protections are chosen from these bits, OR'd together. The
|
||||
implementation does not necessarily support PROT_EXEC or PROT_WRITE
|
||||
without PROT_READ. The only guarantees are that no writing will be
|
||||
allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
|
||||
|
||||
#define PROT_READ 0x1 /* Page can be read. */
|
||||
#define PROT_WRITE 0x2 /* Page can be written. */
|
||||
#define PROT_EXEC 0x4 /* Page can be executed. */
|
||||
#define PROT_NONE 0x0 /* Page can not be accessed. */
|
||||
|
||||
/* Sharing types (must choose one and only one of these). */
|
||||
#define MAP_SHARED 0x01 /* Share changes. */
|
||||
#define MAP_PRIVATE 0x02 /* Changes are private. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_TYPE 0x0f /* Mask for type of mapping. */
|
||||
#endif
|
||||
|
||||
/* Other flags. */
|
||||
#define MAP_FIXED 0x10 /* Interpret addr exactly. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_FILE 0
|
||||
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
|
||||
# define MAP_ANON MAP_ANONYMOUS
|
||||
#endif
|
||||
|
||||
/* These are Linux-specific. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
|
||||
# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
||||
# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
|
||||
# define MAP_LOCKED 0x2000 /* Lock the mapping. */
|
||||
# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
|
||||
#endif
|
||||
|
||||
/* Flags to `msync'. */
|
||||
#define MS_ASYNC 1 /* Sync memory asynchronously. */
|
||||
#define MS_SYNC 4 /* Synchronous memory sync. */
|
||||
#define MS_INVALIDATE 2 /* Invalidate the caches. */
|
||||
|
||||
/* Flags for `mlockall'. */
|
||||
#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
|
||||
#define MCL_FUTURE 2 /* Lock all additions to address
|
||||
space. */
|
||||
|
||||
/* Flags for `mremap'. */
|
||||
#ifdef __USE_GNU
|
||||
# define MREMAP_MAYMOVE 1
|
||||
#endif
|
||||
|
||||
/* Advice to `madvise'. */
|
||||
#ifdef __USE_BSD
|
||||
# define MADV_NORMAL 0 /* No further special treatment. */
|
||||
# define MADV_RANDOM 1 /* Expect random page references. */
|
||||
# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define MADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define MADV_DONTNEED 4 /* Don't need these pages. */
|
||||
#endif
|
||||
|
||||
/* The POSIX people had to invent similar names for the same things. */
|
||||
#ifdef __USE_XOPEN2K
|
||||
# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
|
||||
# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
|
||||
# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
|
||||
#endif
|
209
sysdeps/unix/sysv/linux/cris/bits/resource.h
Normal file
209
sysdeps/unix/sysv/linux/cris/bits/resource.h
Normal file
@ -0,0 +1,209 @@
|
||||
/* Bit values & structures for resource limits. Linux/CRIS version.
|
||||
Copyright (C) 1994,1996,1997,1998,1999,2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _SYS_RESOURCE_H
|
||||
# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
|
||||
#endif
|
||||
|
||||
#include <bits/types.h>
|
||||
|
||||
/* Transmute defines to enumerations. The macro re-definitions are
|
||||
necessary because some programs want to test for operating system
|
||||
features with #ifdef RUSAGE_SELF. In ISO C the reflexive
|
||||
definition is a no-op. */
|
||||
|
||||
/* Kinds of resource limit. */
|
||||
enum __rlimit_resource
|
||||
{
|
||||
/* Per-process CPU limit, in seconds. */
|
||||
RLIMIT_CPU = 0,
|
||||
#define RLIMIT_CPU RLIMIT_CPU
|
||||
|
||||
/* Largest file that can be created, in bytes. */
|
||||
RLIMIT_FSIZE = 1,
|
||||
#define RLIMIT_FSIZE RLIMIT_FSIZE
|
||||
|
||||
/* Maximum size of data segment, in bytes. */
|
||||
RLIMIT_DATA = 2,
|
||||
#define RLIMIT_DATA RLIMIT_DATA
|
||||
|
||||
/* Maximum size of stack segment, in bytes. */
|
||||
RLIMIT_STACK = 3,
|
||||
#define RLIMIT_STACK RLIMIT_STACK
|
||||
|
||||
/* Largest core file that can be created, in bytes. */
|
||||
RLIMIT_CORE = 4,
|
||||
#define RLIMIT_CORE RLIMIT_CORE
|
||||
|
||||
/* Largest resident set size, in bytes.
|
||||
This affects swapping; processes that are exceeding their
|
||||
resident set size will be more likely to have physical memory
|
||||
taken from them. */
|
||||
RLIMIT_RSS = 5,
|
||||
#define RLIMIT_RSS RLIMIT_RSS
|
||||
|
||||
/* Number of open files. */
|
||||
RLIMIT_NOFILE = 7,
|
||||
RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
|
||||
#define RLIMIT_NOFILE RLIMIT_NOFILE
|
||||
#define RLIMIT_OFILE RLIMIT_OFILE
|
||||
|
||||
/* Address space limit. */
|
||||
RLIMIT_AS = 9,
|
||||
#define RLIMIT_AS RLIMIT_AS
|
||||
|
||||
/* Number of processes. */
|
||||
RLIMIT_NPROC = 6,
|
||||
#define RLIMIT_NPROC RLIMIT_NPROC
|
||||
|
||||
/* Locked-in-memory address space. */
|
||||
RLIMIT_MEMLOCK = 8,
|
||||
#define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
|
||||
|
||||
/* Maximum number of file locks. */
|
||||
RLIMIT_LOCKS = 10,
|
||||
#define RLIMIT_LOCKS RLIMIT_LOCKS
|
||||
|
||||
RLIMIT_NLIMITS = 11,
|
||||
RLIM_NLIMITS = RLIMIT_NLIMITS
|
||||
#define RLIMIT_NLIMITS RLIMIT_NLIMITS
|
||||
#define RLIM_NLIMITS RLIM_NLIMITS
|
||||
};
|
||||
|
||||
/* Value to indicate that there is no limit. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
# define RLIM_INFINITY ((unsigned long int)(~0UL))
|
||||
#else
|
||||
# define RLIM_INFINITY 0xffffffffffffffffuLL
|
||||
#endif
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
# define RLIM64_INFINITY 0xffffffffffffffffuLL
|
||||
#endif
|
||||
|
||||
/* We can represent all limits. */
|
||||
#define RLIM_SAVED_MAX RLIM_INFINITY
|
||||
#define RLIM_SAVED_CUR RLIM_INFINITY
|
||||
|
||||
|
||||
/* Type for resource quantity measurement. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
typedef __rlim_t rlim_t;
|
||||
#else
|
||||
typedef __rlim64_t rlim_t;
|
||||
#endif
|
||||
#ifdef __USE_LARGEFILE64
|
||||
typedef __rlim64_t rlim64_t;
|
||||
#endif
|
||||
|
||||
struct rlimit
|
||||
{
|
||||
/* The current (soft) limit. */
|
||||
rlim_t rlim_cur;
|
||||
/* The hard limit. */
|
||||
rlim_t rlim_max;
|
||||
};
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct rlimit64
|
||||
{
|
||||
/* The current (soft) limit. */
|
||||
rlim64_t rlim_cur;
|
||||
/* The hard limit. */
|
||||
rlim64_t rlim_max;
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Whose usage statistics do you want? */
|
||||
enum __rusage_who
|
||||
{
|
||||
/* The calling process. */
|
||||
RUSAGE_SELF = 0,
|
||||
#define RUSAGE_SELF RUSAGE_SELF
|
||||
|
||||
/* All of its terminated child processes. */
|
||||
RUSAGE_CHILDREN = -1,
|
||||
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
|
||||
|
||||
/* Both. */
|
||||
RUSAGE_BOTH = -2
|
||||
#define RUSAGE_BOTH RUSAGE_BOTH
|
||||
};
|
||||
|
||||
#define __need_timeval
|
||||
#include <bits/time.h> /* For `struct timeval'. */
|
||||
|
||||
/* Structure which says how much of each resource has been used. */
|
||||
struct rusage
|
||||
{
|
||||
/* Total amount of user time used. */
|
||||
struct timeval ru_utime;
|
||||
/* Total amount of system time used. */
|
||||
struct timeval ru_stime;
|
||||
/* Maximum resident set size (in kilobytes). */
|
||||
long int ru_maxrss;
|
||||
/* Amount of sharing of text segment memory
|
||||
with other processes (kilobyte-seconds). */
|
||||
long int ru_ixrss;
|
||||
/* Amount of data segment memory used (kilobyte-seconds). */
|
||||
long int ru_idrss;
|
||||
/* Amount of stack memory used (kilobyte-seconds). */
|
||||
long int ru_isrss;
|
||||
/* Number of soft page faults (i.e. those serviced by reclaiming
|
||||
a page from the list of pages awaiting reallocation. */
|
||||
long int ru_minflt;
|
||||
/* Number of hard page faults (i.e. those that required I/O). */
|
||||
long int ru_majflt;
|
||||
/* Number of times a process was swapped out of physical memory. */
|
||||
long int ru_nswap;
|
||||
/* Number of input operations via the file system. Note: This
|
||||
and `ru_oublock' do not include operations with the cache. */
|
||||
long int ru_inblock;
|
||||
/* Number of output operations via the file system. */
|
||||
long int ru_oublock;
|
||||
/* Number of IPC messages sent. */
|
||||
long int ru_msgsnd;
|
||||
/* Number of IPC messages received. */
|
||||
long int ru_msgrcv;
|
||||
/* Number of signals delivered. */
|
||||
long int ru_nsignals;
|
||||
/* Number of voluntary context switches, i.e. because the process
|
||||
gave up the process before it had to (usually to wait for some
|
||||
resource to be available). */
|
||||
long int ru_nvcsw;
|
||||
/* Number of involuntary context switches, i.e. a higher priority process
|
||||
became runnable or the current process used up its time slice. */
|
||||
long int ru_nivcsw;
|
||||
};
|
||||
|
||||
/* Priority limits. */
|
||||
#define PRIO_MIN -20 /* Minimum priority a process can have. */
|
||||
#define PRIO_MAX 20 /* Maximum priority a process can have. */
|
||||
|
||||
/* The type of the WHICH argument to `getpriority' and `setpriority',
|
||||
indicating what flavor of entity the WHO argument specifies. */
|
||||
enum __priority_which
|
||||
{
|
||||
PRIO_PROCESS = 0, /* WHO is a process ID. */
|
||||
#define PRIO_PROCESS PRIO_PROCESS
|
||||
PRIO_PGRP = 1, /* WHO is a process group ID. */
|
||||
#define PRIO_PGRP PRIO_PGRP
|
||||
PRIO_USER = 2 /* WHO is a user ID. */
|
||||
#define PRIO_USER PRIO_USER
|
||||
};
|
44
sysdeps/unix/sysv/linux/cris/brk.c
Normal file
44
sysdeps/unix/sysv/linux/cris/brk.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* brk system call for Linux/CRIS.
|
||||
Copyright (C) 1995, 1996, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sysdep.h>
|
||||
|
||||
/* This must be initialized data because commons can't have aliases. */
|
||||
void *__curbrk = 0;
|
||||
|
||||
int
|
||||
__brk (void *addr)
|
||||
{
|
||||
unsigned char *newbrk;
|
||||
|
||||
newbrk = (unsigned char *) INLINE_SYSCALL (brk, 1, addr);
|
||||
|
||||
__curbrk = newbrk;
|
||||
|
||||
if (newbrk < (unsigned char *) addr)
|
||||
{
|
||||
__set_errno (ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__brk, brk)
|
1
sysdeps/unix/sysv/linux/cris/chown.c
Normal file
1
sysdeps/unix/sysv/linux/cris/chown.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/m68k/chown.c>
|
88
sysdeps/unix/sysv/linux/cris/clone.S
Normal file
88
sysdeps/unix/sysv/linux/cris/clone.S
Normal file
@ -0,0 +1,88 @@
|
||||
/* Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
|
||||
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
.text
|
||||
ENTRY (__clone)
|
||||
/* Sanity check arguments: No NULL function pointers. Allow a NULL
|
||||
stack pointer though; it makes the kernel allocate stack. */
|
||||
test.d r10
|
||||
beq 1f
|
||||
nop
|
||||
|
||||
/* We need to muck with a few registers. */
|
||||
movem r1,[sp=sp-8]
|
||||
|
||||
/* Save the function pointer and argument. We can't save them
|
||||
onto the new stack since it can be NULL. */
|
||||
move.d r10,r0
|
||||
move.d r13,r1
|
||||
|
||||
/* Move the other arguments into place for the system call. */
|
||||
move.d r11,r10
|
||||
move.d r12,r11
|
||||
|
||||
/* Do the system call. */
|
||||
movu.w SYS_ify (clone),r9
|
||||
break 13
|
||||
test.d r10
|
||||
beq .Lthread_start
|
||||
nop
|
||||
|
||||
/* Jump to error handler if we get (unsigned) -4096 .. 0xffffffff. */
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
movem [sp+],r1
|
||||
|
||||
/* In parent, successful return. (Avoid using "ret" - it's a macro.) */
|
||||
Ret
|
||||
nop
|
||||
|
||||
.Lthread_start:
|
||||
/* Terminate frame pointers here. */
|
||||
moveq 0,r8
|
||||
|
||||
/* I've told you once. */
|
||||
move.d r1,r10
|
||||
jsr r0
|
||||
|
||||
SETUP_PIC
|
||||
PLTCALL (_exit)
|
||||
|
||||
/* Die horribly. */
|
||||
test.d [6809]
|
||||
|
||||
/* Stop the unstoppable. */
|
||||
9:
|
||||
ba 9b
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__clone)
|
||||
|
||||
weak_alias (__clone, clone)
|
1
sysdeps/unix/sysv/linux/cris/fchown.c
Normal file
1
sysdeps/unix/sysv/linux/cris/fchown.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fchown.c>
|
1
sysdeps/unix/sysv/linux/cris/fcntl.c
Normal file
1
sysdeps/unix/sysv/linux/cris/fcntl.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
|
1
sysdeps/unix/sysv/linux/cris/fxstat.c
Normal file
1
sysdeps/unix/sysv/linux/cris/fxstat.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fxstat.c>
|
1
sysdeps/unix/sysv/linux/cris/getegid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getegid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getegid.c>
|
1
sysdeps/unix/sysv/linux/cris/geteuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/geteuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/geteuid.c>
|
1
sysdeps/unix/sysv/linux/cris/getgid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getgid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getgid.c>
|
2
sysdeps/unix/sysv/linux/cris/getgroups.c
Normal file
2
sysdeps/unix/sysv/linux/cris/getgroups.c
Normal file
@ -0,0 +1,2 @@
|
||||
/* We also have to rewrite the kernel gid_t to the user land type. */
|
||||
#include <sysdeps/unix/sysv/linux/i386/getgroups.c>
|
1
sysdeps/unix/sysv/linux/cris/getresgid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getresgid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getresgid.c>
|
1
sysdeps/unix/sysv/linux/cris/getresuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getresuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getresuid.c>
|
1
sysdeps/unix/sysv/linux/cris/getrlimit.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getrlimit.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>
|
1
sysdeps/unix/sysv/linux/cris/getrlimit64.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getrlimit64.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
|
1
sysdeps/unix/sysv/linux/cris/getuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/getuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getuid.c>
|
1
sysdeps/unix/sysv/linux/cris/lchown.c
Normal file
1
sysdeps/unix/sysv/linux/cris/lchown.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lchown.c>
|
1
sysdeps/unix/sysv/linux/cris/lockf64.c
Normal file
1
sysdeps/unix/sysv/linux/cris/lockf64.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lockf64.c>
|
2
sysdeps/unix/sysv/linux/cris/lxstat.c
Normal file
2
sysdeps/unix/sysv/linux/cris/lxstat.c
Normal file
@ -0,0 +1,2 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lxstat.c>
|
||||
|
68
sysdeps/unix/sysv/linux/cris/mmap.S
Normal file
68
sysdeps/unix/sysv/linux/cris/mmap.S
Normal file
@ -0,0 +1,68 @@
|
||||
/* Copyright (C) 1995, 96, 97, 98, 99, 2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include "kernel-features.h"
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
/* Rather than dragging in yet another kernel file, <asm/page.h>, we
|
||||
define it here. Provide for easy override. */
|
||||
#ifndef PAGE_SHIFT
|
||||
#define PAGE_SHIFT 13
|
||||
#endif
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
/* This is __ptr_t
|
||||
__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) */
|
||||
|
||||
ENTRY (__mmap)
|
||||
|
||||
/* Only accept a offset (and address) being a multiple of PAGE_SIZE,
|
||||
since we only pass the page part in the system call. */
|
||||
move.d [sp+4],r9
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
btstq (PAGE_SHIFT - 1),r10
|
||||
|
||||
bne 1f
|
||||
lsrq PAGE_SHIFT,r9
|
||||
|
||||
move [sp],mof
|
||||
move srp,[sp]
|
||||
move r9,srp
|
||||
|
||||
movu.b SYS_ify (mmap2),r9
|
||||
break 13
|
||||
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
|
||||
Ret
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__mmap)
|
||||
|
||||
weak_alias (__mmap, mmap)
|
91
sysdeps/unix/sysv/linux/cris/mmap64.S
Normal file
91
sysdeps/unix/sysv/linux/cris/mmap64.S
Normal file
@ -0,0 +1,91 @@
|
||||
/* Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include "kernel-features.h"
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
/* Rather than dragging in yet another kernel file, <asm/page.h>, we
|
||||
define it here. Provide for easy override. */
|
||||
#ifndef PAGE_SHIFT
|
||||
#define PAGE_SHIFT 13
|
||||
#endif
|
||||
|
||||
/* This is: __ptr_t
|
||||
__mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd,
|
||||
off64_t offset); */
|
||||
|
||||
/* This was done in C, but the resulting code didn't look anywhere near
|
||||
nice, and mmap64 is important enough to have fast code. Rather than
|
||||
fixing (the generic bits in) gcc, we make sure not to depend on it by
|
||||
writing code that GCC cannot reasonably generate. */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
ENTRY (__mmap64)
|
||||
|
||||
move [sp],mof
|
||||
move.d [sp+4],r9
|
||||
|
||||
/* Only accept an offset being a multiple of PAGE_SIZE, ditto address. */
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
lsrq PAGE_SHIFT,r9
|
||||
|
||||
btstq (PAGE_SHIFT - 1),r10
|
||||
bne 1f
|
||||
move.d r9,[sp]
|
||||
|
||||
/* We have to store the adjusted part somewhere we can "or" from.
|
||||
No registers available, so let's re-use the incoming low-part
|
||||
parameter location. */
|
||||
move.d [sp+8],r9
|
||||
|
||||
swapwbr r9
|
||||
/* Check if the highest bits (now the lowest bits) are zero. They
|
||||
must be, since we're actually calling a system function
|
||||
specifying the size in *pages* in a single dword. Thus you can
|
||||
mmap64 PAGE_SIZE * 4 Gbyte. */
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
swapwbr r9
|
||||
|
||||
lslq (32 - PAGE_SHIFT),r9
|
||||
or.d [sp],r9
|
||||
move srp,[sp]
|
||||
move r9,srp
|
||||
|
||||
movu.b SYS_ify (mmap2),r9
|
||||
break 13
|
||||
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
|
||||
Ret
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__mmap64)
|
||||
|
||||
weak_alias (__mmap64, mmap64)
|
1
sysdeps/unix/sysv/linux/cris/msgctl.c
Normal file
1
sysdeps/unix/sysv/linux/cris/msgctl.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/msgctl.c>
|
26
sysdeps/unix/sysv/linux/cris/profil-counter.h
Normal file
26
sysdeps/unix/sysv/linux/cris/profil-counter.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* Low-level statistical profiling support function. Linux/CRIS version.
|
||||
Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
static void
|
||||
profil_counter (int signo, struct sigcontext *scp)
|
||||
{
|
||||
profil_count ((void *) scp->regs.irp);
|
||||
}
|
117
sysdeps/unix/sysv/linux/cris/register-dump.h
Normal file
117
sysdeps/unix/sysv/linux/cris/register-dump.h
Normal file
@ -0,0 +1,117 @@
|
||||
/* Dump registers.
|
||||
Copyright (C) 1998, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <stddef.h>
|
||||
#include <sys/uio.h>
|
||||
#include <stdio-common/_itoa.h>
|
||||
|
||||
/* We will print the register dump in this format:
|
||||
|
||||
R0: XXXXXXXX R1: XXXXXXXX R2: XXXXXXXX R3: XXXXXXXX
|
||||
R4: XXXXXXXX R5: XXXXXXXX R6: XXXXXXXX R7: XXXXXXXX
|
||||
R8: XXXXXXXX R9: XXXXXXXX R10: XXXXXXXX R11: XXXXXXXX
|
||||
R12: XXXXXXXX R13: XXXXXXXX SP: XXXXXXXX PC: XXXXXXXX
|
||||
DCCR: XXXXXXXX SRP: XXXXXXXX */
|
||||
|
||||
static void
|
||||
hexvalue (unsigned long int value, char *buf, size_t len)
|
||||
{
|
||||
char *cp = _itoa_word (value, buf + len, 16, 0);
|
||||
while (cp > buf)
|
||||
*--cp = '0';
|
||||
}
|
||||
|
||||
static void register_dump (int fd, struct sigcontext *ctx)
|
||||
{
|
||||
char regs[18][8];
|
||||
struct iovec iov[36], *next_iov = iov;
|
||||
struct pt_regs *rx = &ctx->regs;
|
||||
|
||||
#define ADD_STRING(str) \
|
||||
next_iov->iov_base = (char *) (str); \
|
||||
next_iov->iov_len = strlen (str); \
|
||||
++next_iov
|
||||
#define ADD_MEM(str, len) \
|
||||
next_iov->iov_base = (str); \
|
||||
next_iov->iov_len = (len); \
|
||||
++next_iov
|
||||
|
||||
/* Generate strings of register contents. */
|
||||
hexvalue (rx->r0, regs[0], 8);
|
||||
hexvalue (rx->r1, regs[1], 8);
|
||||
hexvalue (rx->r2, regs[2], 8);
|
||||
hexvalue (rx->r3, regs[3], 8);
|
||||
hexvalue (rx->r4, regs[4], 8);
|
||||
hexvalue (rx->r5, regs[5], 8);
|
||||
hexvalue (rx->r6, regs[6], 8);
|
||||
hexvalue (rx->r7, regs[7], 8);
|
||||
hexvalue (rx->r8, regs[8], 8);
|
||||
hexvalue (rx->r9, regs[9], 8);
|
||||
hexvalue (rx->r10, regs[10], 8);
|
||||
hexvalue (rx->r11, regs[11], 8);
|
||||
hexvalue (rx->r12, regs[12], 8);
|
||||
hexvalue (rx->r13, regs[13], 8);
|
||||
hexvalue (ctx->usp, regs[14], 8);
|
||||
hexvalue (rx->irp, regs[17], 8);
|
||||
hexvalue (rx->dccr, regs[15], 8);
|
||||
hexvalue (rx->srp, regs[16], 8);
|
||||
|
||||
/* Generate the output. */
|
||||
ADD_STRING ("Register dump:\n\n R0: ");
|
||||
ADD_MEM (regs[0], 8);
|
||||
ADD_STRING (" R1: ");
|
||||
ADD_MEM (regs[1], 8);
|
||||
ADD_STRING (" R2: ");
|
||||
ADD_MEM (regs[2], 8);
|
||||
ADD_STRING (" R3: ");
|
||||
ADD_MEM (regs[3], 8);
|
||||
ADD_STRING ("\n R4: ");
|
||||
ADD_MEM (regs[4], 8);
|
||||
ADD_STRING (" R5: ");
|
||||
ADD_MEM (regs[5], 8);
|
||||
ADD_STRING (" R6: ");
|
||||
ADD_MEM (regs[6], 8);
|
||||
ADD_STRING (" R7: ");
|
||||
ADD_MEM (regs[7], 8);
|
||||
ADD_STRING ("\n R8: ");
|
||||
ADD_MEM (regs[8], 8);
|
||||
ADD_STRING (" R9: ");
|
||||
ADD_MEM (regs[9], 8);
|
||||
ADD_STRING (" R10: ");
|
||||
ADD_MEM (regs[10], 8);
|
||||
ADD_STRING (" R11: ");
|
||||
ADD_MEM (regs[11], 8);
|
||||
ADD_STRING ("\n R12: ");
|
||||
ADD_MEM (regs[12], 8);
|
||||
ADD_STRING (" R13: ");
|
||||
ADD_MEM (regs[13], 8);
|
||||
ADD_STRING (" SP: ");
|
||||
ADD_MEM (regs[14], 8);
|
||||
ADD_STRING (" PC: ");
|
||||
ADD_MEM (regs[17], 8);
|
||||
ADD_STRING ("\nDCCR: ");
|
||||
ADD_MEM (regs[15], 8);
|
||||
ADD_STRING (" SRP: ");
|
||||
ADD_MEM (regs[16], 4);
|
||||
|
||||
/* Write the stuff out. */
|
||||
writev (fd, iov, next_iov - iov);
|
||||
}
|
||||
|
||||
#define REGISTER_DUMP register_dump (fd, ctx)
|
1
sysdeps/unix/sysv/linux/cris/semctl.c
Normal file
1
sysdeps/unix/sysv/linux/cris/semctl.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/semctl.c>
|
1
sysdeps/unix/sysv/linux/cris/setegid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setegid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setegid.c>
|
1
sysdeps/unix/sysv/linux/cris/seteuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/seteuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/seteuid.c>
|
1
sysdeps/unix/sysv/linux/cris/setfsgid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setfsgid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setfsgid.c>
|
1
sysdeps/unix/sysv/linux/cris/setfsuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setfsuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setfsuid.c>
|
1
sysdeps/unix/sysv/linux/cris/setgid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setgid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setgid.c>
|
2
sysdeps/unix/sysv/linux/cris/setgroups.c
Normal file
2
sysdeps/unix/sysv/linux/cris/setgroups.c
Normal file
@ -0,0 +1,2 @@
|
||||
/* We also have to rewrite the kernel gid_t to the user land type. */
|
||||
#include <sysdeps/unix/sysv/linux/i386/setgroups.c>
|
1
sysdeps/unix/sysv/linux/cris/setregid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setregid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setregid.c>
|
1
sysdeps/unix/sysv/linux/cris/setreuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setreuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setreuid.c>
|
1
sysdeps/unix/sysv/linux/cris/setrlimit.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setrlimit.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setrlimit.c>
|
1
sysdeps/unix/sysv/linux/cris/setuid.c
Normal file
1
sysdeps/unix/sysv/linux/cris/setuid.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setuid.c>
|
1
sysdeps/unix/sysv/linux/cris/shmctl.c
Normal file
1
sysdeps/unix/sysv/linux/cris/shmctl.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/shmctl.c>
|
96
sysdeps/unix/sysv/linux/cris/socket.S
Normal file
96
sysdeps/unix/sysv/linux/cris/socket.S
Normal file
@ -0,0 +1,96 @@
|
||||
/* Copyright (C) 1995, 1996, 1997, 1999, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <socketcall.h>
|
||||
|
||||
#define P(a, b) P2(a, b)
|
||||
#define P2(a, b) a##b
|
||||
|
||||
/* The socket-oriented system calls are handled unusally in Linux.
|
||||
They are all gated through the single `socketcall' system call number.
|
||||
`socketcall' takes two arguments: the first is the subcode, specifying
|
||||
which socket function is being called; and the second is a pointer to
|
||||
the arguments to the specific function.
|
||||
|
||||
The .S files for the other calls just #define socket and #include this.
|
||||
They also #define a 'number-of-arguments' word in NARGS, which
|
||||
defaults to 3. */
|
||||
|
||||
#ifndef NARGS
|
||||
#ifdef socket
|
||||
#error NARGS not defined
|
||||
#endif
|
||||
#define NARGS 3
|
||||
#endif
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
#ifndef __socket
|
||||
#define __socket P(__,socket)
|
||||
#endif
|
||||
|
||||
ENTRY(__socket)
|
||||
subq NARGS*4,sp
|
||||
|
||||
#if NARGS >= 2
|
||||
move.d sp,r9
|
||||
move.d r10,[r9+]
|
||||
#else
|
||||
move.d r10,[sp]
|
||||
#endif
|
||||
#if NARGS >= 2
|
||||
move.d r11,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 3
|
||||
move.d r12,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 4
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 5
|
||||
move.d [sp+NARGS*4],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 6
|
||||
move.d [sp+NARGS*4+4],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 7
|
||||
move.d [sp+NARGS*4+8],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 8
|
||||
move.d [sp+NARGS*4+12],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 9
|
||||
#error Too many arguments!
|
||||
#endif
|
||||
moveq P(SOCKOP_,socket),r10
|
||||
move.d sp,r11
|
||||
movu.w SYS_ify(socketcall),r9
|
||||
break 13
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
addq NARGS*4,sp
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (__socket)
|
||||
|
||||
weak_alias (__socket, socket)
|
56
sysdeps/unix/sysv/linux/cris/sys/ucontext.h
Normal file
56
sysdeps/unix/sysv/linux/cris/sys/ucontext.h
Normal file
@ -0,0 +1,56 @@
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#ifndef _SYS_UCONTEXT_H
|
||||
#define _SYS_UCONTEXT_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <bits/sigcontext.h>
|
||||
|
||||
|
||||
/* Type for general register. */
|
||||
typedef long int greg_t;
|
||||
|
||||
/* Number of general registers. */
|
||||
#define NGREG 20
|
||||
|
||||
/* Container for all general registers. */
|
||||
typedef greg_t gregset_t[NGREG];
|
||||
|
||||
/* A placeholder type for floating-point register. */
|
||||
typedef long int fpreg_t;
|
||||
|
||||
/* A placeholder; CRIS does not have any fp regs. */
|
||||
typedef unsigned long fpregset_t;
|
||||
|
||||
/* A machine context is exactly a sigcontext. */
|
||||
typedef struct sigcontext mcontext_t;
|
||||
|
||||
/* Userlevel context. */
|
||||
typedef struct ucontext
|
||||
{
|
||||
unsigned long int uc_flags;
|
||||
struct ucontext *uc_link;
|
||||
stack_t uc_stack;
|
||||
mcontext_t uc_mcontext;
|
||||
__sigset_t uc_sigmask;
|
||||
} ucontext_t;
|
||||
|
||||
#endif /* sys/ucontext.h */
|
40
sysdeps/unix/sysv/linux/cris/syscall.S
Normal file
40
sysdeps/unix/sysv/linux/cris/syscall.S
Normal file
@ -0,0 +1,40 @@
|
||||
/* Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
/* Make syscall (callno, ...) into a system call. */
|
||||
|
||||
ENTRY (syscall)
|
||||
move.d r10,r9
|
||||
move.d r11,r10
|
||||
move.d r12,r11
|
||||
move.d r13,r12
|
||||
move.d [sp],r13
|
||||
move srp,[sp]
|
||||
move [sp+4],mof
|
||||
move [sp+8],srp
|
||||
break 13
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (syscall)
|
74
sysdeps/unix/sysv/linux/cris/sysdep.S
Normal file
74
sysdeps/unix/sysv/linux/cris/sysdep.S
Normal file
@ -0,0 +1,74 @@
|
||||
/* Copyright (C) 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
/* Make space for the errno variable. */
|
||||
|
||||
.globl C_SYMBOL_NAME(errno)
|
||||
.type C_SYMBOL_NAME(errno),@object
|
||||
.lcomm C_SYMBOL_NAME(errno),4
|
||||
|
||||
weak_alias (errno, _errno)
|
||||
|
||||
/* The syscall stubs jump here when they detect an error, bot for PIC and
|
||||
non-PIC. */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
ENTRY (__syscall_error)
|
||||
neg.d r10,r10
|
||||
|
||||
#ifdef _LIBC_REENTRANT
|
||||
push r10
|
||||
push srp
|
||||
|
||||
/* Note that __syscall_error is only visible within this library,
|
||||
and no-one passes it on as a pointer, so can assume that R0 (GOT
|
||||
pointer) is correctly set up. */
|
||||
PLTCALL (__errno_location)
|
||||
|
||||
pop srp
|
||||
pop r11
|
||||
move.d r11,[r10]
|
||||
|
||||
#else /* not _LIBC_REENTRANT */
|
||||
# ifdef __PIC__
|
||||
move.d [r0+C_SYMBOL_NAME(errno:GOT)],r9
|
||||
move.d r10,[r9]
|
||||
# else
|
||||
move.d r10,[C_SYMBOL_NAME(errno)]
|
||||
# endif
|
||||
#endif /* _LIBC_REENTRANT */
|
||||
|
||||
#ifdef __PIC__
|
||||
/* PIC callers are supposed to have R0 on stack, ready for us to restore.
|
||||
Callers are only allowed from within this DSO, so the GOT in r0 is the
|
||||
one we want to use.
|
||||
|
||||
(Don't use "ret" - it's a macro). */
|
||||
|
||||
moveq -1,r10
|
||||
Ret
|
||||
pop r0
|
||||
#else
|
||||
Ret
|
||||
moveq -1,r10
|
||||
#endif
|
||||
|
||||
END (__syscall_error)
|
214
sysdeps/unix/sysv/linux/cris/sysdep.h
Normal file
214
sysdeps/unix/sysv/linux/cris/sysdep.h
Normal file
@ -0,0 +1,214 @@
|
||||
/* Assembler macros for CRIS.
|
||||
Copyright (C) 1999, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <asm/unistd.h>
|
||||
#include <sysdeps/cris/sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include "config.h"
|
||||
|
||||
#undef SYS_ify
|
||||
#define SYS_ify(syscall_name) (__NR_##syscall_name)
|
||||
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
/* For Linux we can use the system call table in the header file
|
||||
/usr/include/asm/unistd.h
|
||||
of the kernel. But these symbols do not follow the SYS_* syntax
|
||||
so we have to redefine the `SYS_ify' macro here. */
|
||||
#undef SYS_ify
|
||||
#define SYS_ify(syscall_name) __NR_##syscall_name
|
||||
|
||||
/* ELF-like local names start with `.L'. */
|
||||
#undef L
|
||||
#define L(name) .L##name
|
||||
|
||||
/* Linux uses a negative return value to indicate syscall errors,
|
||||
unlike most Unices, which use the condition codes' carry flag.
|
||||
|
||||
Since version 2.1 the return value of a system call might be
|
||||
negative even if the call succeeded. E.g., the `lseek' system call
|
||||
might return a large offset. Therefore we must not anymore test
|
||||
for < 0, but test for a real error by making sure the value in %eax
|
||||
is a real error number. Linus said he will make sure the no syscall
|
||||
returns a value in -1 .. -4095 as a valid result so we can safely
|
||||
test with -4095. */
|
||||
|
||||
/* Syscall wrappers consist of
|
||||
#include <sysdep.h>
|
||||
PSEUDO (...)
|
||||
ret
|
||||
PSEUDO_END (...)
|
||||
|
||||
which expand to the following. */
|
||||
|
||||
/* Linux takes system call arguments in registers:
|
||||
syscall number R9
|
||||
arg 1 R10
|
||||
arg 2 R11
|
||||
arg 3 R12
|
||||
arg 4 R13
|
||||
arg 5 MOF
|
||||
arg 6 SRP
|
||||
|
||||
The compiler calls us by the C convention:
|
||||
syscall number in the DO_CALL macro
|
||||
arg 1 R10
|
||||
arg 2 R11
|
||||
arg 3 R12
|
||||
arg 4 R13
|
||||
arg 5 [SP]
|
||||
arg 6 [SP + 4]
|
||||
*/
|
||||
|
||||
/* Note that we use "bhs", since we want to match
|
||||
(unsigned) -4096 .. 0xffffffff. Using "ble" would match
|
||||
-4096 .. -2**31. */
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
ENTRY (name) @ \
|
||||
DOARGS_##args @ \
|
||||
movu.w SYS_ify (syscall_name),$r9 @ \
|
||||
break 13 @ \
|
||||
cmps.w -4096,$r10 @ \
|
||||
bhs 0f @ \
|
||||
nop @ \
|
||||
UNDOARGS_return_##args
|
||||
|
||||
/* Ouch! We have to remember not to use "ret" in assembly-code.
|
||||
("Luckily", mnemonics are case-insensitive.)
|
||||
Note that we assume usage is exactly:
|
||||
PSEUDO (...)
|
||||
ret
|
||||
PSEUDO_END (...)
|
||||
so we can put all payload into PSEUDO (except for error handling). */
|
||||
|
||||
#define ret
|
||||
|
||||
#define PSEUDO_END(name) \
|
||||
0: @ \
|
||||
SETUP_PIC @ \
|
||||
PLTJUMP (syscall_error) @ \
|
||||
END (name)
|
||||
|
||||
#define DOARGS_0
|
||||
#define DOARGS_1
|
||||
#define DOARGS_2
|
||||
#define DOARGS_3
|
||||
#define DOARGS_4
|
||||
#define DOARGS_5 \
|
||||
move [$sp],$mof
|
||||
|
||||
/* To avoid allocating stack-space, we re-use the arg 5 (MOF) entry by
|
||||
storing SRP into it. If called with too-few arguments, we will crash,
|
||||
but that will happen in the general case too. */
|
||||
#define DOARGS_6 \
|
||||
DOARGS_5 @ \
|
||||
move $srp,[$sp] @ \
|
||||
move [$sp+4],$srp
|
||||
|
||||
#define UNDOARGS_return_0 \
|
||||
Ret @ \
|
||||
nop
|
||||
|
||||
#define UNDOARGS_return_1 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_2 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_3 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_4 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_5 UNDOARGS_return_0
|
||||
|
||||
/* We assume the following code will be "ret" and "PSEUDO_END". */
|
||||
#define UNDOARGS_return_return_6 \
|
||||
jump [$sp]
|
||||
|
||||
#else /* not __ASSEMBLER__ */
|
||||
|
||||
#undef INLINE_SYSCALL
|
||||
#define INLINE_SYSCALL(name, nr, args...) \
|
||||
({ \
|
||||
unsigned long __sys_res; \
|
||||
register unsigned long __res asm ("r10"); \
|
||||
LOAD_ARGS_c_##nr (args) \
|
||||
register unsigned long __callno asm ("r9") \
|
||||
= SYS_ify (name); \
|
||||
asm volatile (LOAD_ARGS_asm_##nr (args) \
|
||||
"break 13" \
|
||||
: "=r" (__res) \
|
||||
: ASM_ARGS_##nr (args) \
|
||||
: ASM_CLOBBER_##nr); \
|
||||
__sys_res = __res; \
|
||||
\
|
||||
if (__sys_res >= (unsigned long) -4096) \
|
||||
{ \
|
||||
__set_errno (- __sys_res); \
|
||||
__sys_res = (unsigned long) -1; \
|
||||
} \
|
||||
__sys_res; \
|
||||
})
|
||||
|
||||
#define LOAD_ARGS_c_0()
|
||||
#define LOAD_ARGS_asm_0()
|
||||
#define ASM_CLOBBER_0 "memory"
|
||||
#define ASM_ARGS_0() "r" (__callno)
|
||||
|
||||
#define LOAD_ARGS_c_1(r10) \
|
||||
LOAD_ARGS_c_0() \
|
||||
register unsigned long __r10 __asm__ ("r10") = (unsigned long) (r10);
|
||||
#define LOAD_ARGS_asm_1(r10) LOAD_ARGS_asm_0 ()
|
||||
#define ASM_CLOBBER_1 ASM_CLOBBER_0
|
||||
#define ASM_ARGS_1(r10) ASM_ARGS_0 (), "0" (__r10)
|
||||
|
||||
#define LOAD_ARGS_c_2(r10, r11) \
|
||||
LOAD_ARGS_c_1(r10) \
|
||||
register unsigned long __r11 __asm__ ("r11") = (unsigned long) (r11);
|
||||
#define LOAD_ARGS_asm_2(r10, r11) LOAD_ARGS_asm_1 (r10)
|
||||
#define ASM_CLOBBER_2 ASM_CLOBBER_1
|
||||
#define ASM_ARGS_2(r10, r11) ASM_ARGS_1 (r10), "r" (__r11)
|
||||
|
||||
#define LOAD_ARGS_c_3(r10, r11, r12) \
|
||||
LOAD_ARGS_c_2(r10, r11) \
|
||||
register unsigned long __r12 __asm__ ("r12") = (unsigned long) (r12);
|
||||
#define LOAD_ARGS_asm_3(r10, r11, r12) LOAD_ARGS_asm_2 (r10, r11)
|
||||
#define ASM_CLOBBER_3 ASM_CLOBBER_2
|
||||
#define ASM_ARGS_3(r10, r11, r12) ASM_ARGS_2 (r10, r11), "r" (__r12)
|
||||
|
||||
#define LOAD_ARGS_c_4(r10, r11, r12, r13) \
|
||||
LOAD_ARGS_c_3(r10, r11, r12) \
|
||||
register unsigned long __r13 __asm__ ("r13") = (unsigned long) (r13);
|
||||
#define LOAD_ARGS_asm_4(r10, r11, r12, r13) LOAD_ARGS_asm_3 (r10, r11, r12)
|
||||
#define ASM_CLOBBER_4 ASM_CLOBBER_3
|
||||
#define ASM_ARGS_4(r10, r11, r12, r13) ASM_ARGS_3 (r10, r11, r12), "r" (__r13)
|
||||
|
||||
#define LOAD_ARGS_c_5(r10, r11, r12, r13, mof) \
|
||||
LOAD_ARGS_c_4(r10, r11, r12, r13)
|
||||
#define LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
|
||||
LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %5,$mof\n\t"
|
||||
#define ASM_CLOBBER_5 ASM_CLOBBER_4
|
||||
#define ASM_ARGS_5(r10, r11, r12, r13, mof) \
|
||||
ASM_ARGS_4 (r10, r11, r12, r13), "g" (mof)
|
||||
|
||||
#define LOAD_ARGS_c_6(r10, r11, r12, r13, mof, srp) \
|
||||
LOAD_ARGS_c_5(r10, r11, r12, r13, mof)
|
||||
#define LOAD_ARGS_asm_6(r10, r11, r12, r13, mof, srp) \
|
||||
LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
|
||||
"move %6,$srp\n\t"
|
||||
#define ASM_CLOBBER_6 ASM_CLOBBER_5, "srp"
|
||||
#define ASM_ARGS_6(r10, r11, r12, r13, mof, srp) \
|
||||
ASM_ARGS_5 (r10, r11, r12, r13, mof), "g" (srp)
|
||||
|
||||
#endif /* not __ASSEMBLER__ */
|
26
sysdeps/unix/sysv/linux/cris/vfork.S
Normal file
26
sysdeps/unix/sysv/linux/cris/vfork.S
Normal file
@ -0,0 +1,26 @@
|
||||
/* Copyright (C) 1999, 2001 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
PSEUDO (__vfork, vfork, 0)
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (__vfork)
|
||||
|
||||
weak_alias (__vfork, vfork)
|
1
sysdeps/unix/sysv/linux/cris/xstat.c
Normal file
1
sysdeps/unix/sysv/linux/cris/xstat.c
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/xstat.c>
|
@ -1,5 +1,5 @@
|
||||
/* Assembler macros for PA-RISC.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
|
||||
Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
|
||||
@ -206,7 +206,7 @@
|
||||
} \
|
||||
if (__sys_res >= (unsigned long)-4095) { \
|
||||
__set_errno(-__sys_res); \
|
||||
__sys_res == (unsigned long)-1; \
|
||||
__sys_res = (unsigned long)-1; \
|
||||
} \
|
||||
__sys_res; \
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user