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:
Ulrich Drepper 2001-04-09 04:55:59 +00:00
parent 4c45055616
commit eacde9d081
71 changed files with 2425 additions and 133 deletions

108
ChangeLog
View File

@ -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
View File

@ -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
View File

@ -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
View File

@ -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

View File

@ -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
View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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;

View File

@ -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;

View File

@ -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,

View File

@ -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

View File

@ -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

View 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)

View 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; })

View File

@ -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

View 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;
}

View File

@ -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

View 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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -0,0 +1,5 @@
clone.S
setresuid.c
setresgid.c
setfsuid.c
setfsgid.c

View 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

View 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 */

View 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

View 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

View 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
};

View 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)

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/m68k/chown.c>

View 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)

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/fchown.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/fcntl.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/fxstat.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getegid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/geteuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getgid.c>

View 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>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getresgid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getresuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/getuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/lchown.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/lockf64.c>

View File

@ -0,0 +1,2 @@
#include <sysdeps/unix/sysv/linux/i386/lxstat.c>

View 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)

View 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)

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/msgctl.c>

View 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);
}

View 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)

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/semctl.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setegid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/seteuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setfsgid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setfsuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setgid.c>

View 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>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setregid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setreuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setrlimit.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/setuid.c>

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/shmctl.c>

View 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)

View 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 */

View 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)

View 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)

View 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__ */

View 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)

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/i386/xstat.c>

View File

@ -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; \
})