Merged in a bunch of patches that I got as reaction to the 3.99 release.

See the ChangeLog for details
This commit is contained in:
Wichert Akkerman 1999-05-09 00:29:58 +00:00
parent 022c52fda1
commit 2e2553a534
21 changed files with 404 additions and 214 deletions

View File

@ -1,3 +1,21 @@
Sun May 9 02:18:30 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
* Merge in patches from Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+ some layout and other minor fixes
+ add some m68k-specific things to linux/syscallent.h. Note that m68k
is similar enough to i386 to not need it's own subdirectory
+ add support for sendfile and mremap syscalls for Linux
* Merge in patches from Sascha Schumann <sascha@schumann.2ns.de>
+ ioctls.h vs sys/ioctl.h on Alpha platform
+ pointer was casted to an int in stream.c
+ strsignal() needs -D_GNU_SOURCE in CFLAGS
+ several other casts changed
+ correct ARM/POWERPC architecture defines in acconfig.h
* Merge in patches from Morten Welinder <terra@diku.dk>
+ add some autoconf-tests for includefiles
+ handle solaris version of sigcontext struct (actually I hacked this
up again, but the idea is his :)
Sun Apr 18 22:32:42 CEST 1999 Wichert Akkerman <wakkerma@debian.org>
* Update syscalls for linux alpha, patch from Bart Warmerdam

8
TODO
View File

@ -1,9 +1,13 @@
-- new entries from wta
getdents has wrong structure; track down kernel version
clone doesn't work; cloned processes can hang
replace printargs with something that reads a configuration-file
rename functions that are used for general things:
sys_chdir -> general_1stringarg
generate syscallent.h from the kernel sources
-- old entries from jrs
require override to run suid and/or sgid executables normally
attempt reopen of /proc file if we get EAGAIN from any /proc ioctl
kill procs we error out of on svr4
enclose "total x dents" in a comment
@ -18,7 +22,6 @@ add pread, pwrite to I/O dumping
add system assist for qualifiers on svr4
change printcall to getcaller and fix for linux and svr4
fix fork hang for svr4 without pollable procfs
add thread support
print events on entry to and revents on exit from poll
monitor procfs open and release the other child if the process wants to own it
fix incorrect syscall number if exit without entry on svr4 without pr_syscall
@ -27,4 +30,3 @@ ignore faults which occur before exec
look for more ioctls on solaris, used in nslookup for example
consider adding backtrace support
consider adding general purpose interpreter
rename program to sctrace to avoid conflict with svr4 strace?

View File

@ -24,6 +24,12 @@
/* Define if this is an alpha architecture. */
#undef ALPHA
/* Define if this is a arm architecture. */
#undef ARM
/* Define if this is an powerpc architecture. */
#undef POWERPC
/* Define if you have SVR4 and the poll system call works on /proc files. */
#undef HAVE_POLLABLE_PROCFS

12
bjm.c
View File

@ -1,5 +1,7 @@
#include "defs.h"
#if defined(LINUX)
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>
@ -49,13 +51,5 @@ struct tcb *tcp;
return 0;
}
int
sys_delete_module(tcp)
struct tcb *tcp;
{
#endif /* LINUX */
if (entering(tcp)) {
printstr(tcp, tcp->u_arg[0], -1);
}
return 0;
}

View File

@ -75,12 +75,12 @@
/* Define if this is an alpha architecture. */
#undef ALPHA
/* Define if this is an powerpc architecture. */
#undef POWERPC
/* Define if this is a arm architecture. */
#undef ARM
/* Define if this is an powerpc architecture. */
#undef POWERPC
/* Define if you have SVR4 and the poll system call works on /proc files. */
#undef HAVE_POLLABLE_PROCFS
@ -141,6 +141,9 @@
/* Define if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
/* Define if you have the <ioctls.h> header file. */
#undef HAVE_IOCTLS_H
/* Define if you have the <ndir.h> header file. */
#undef HAVE_NDIR_H
@ -153,9 +156,15 @@
/* Define if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H
/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define if you have the <sys/ndir.h> header file. */
#undef HAVE_SYS_NDIR_H
/* Define if you have the <sys/ptrace.h> header file. */
#undef HAVE_SYS_PTRACE_H
/* Define if you have the <sys/stream.h> header file. */
#undef HAVE_SYS_STREAM_H
@ -165,5 +174,8 @@
/* Define if you have the <sys/tiuser.h> header file. */
#undef HAVE_SYS_TIUSER_H
/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
/* Define if you have the nsl library (-lnsl). */
#undef HAVE_LIBNSL

219
configure vendored
View File

@ -629,7 +629,7 @@ echo "$ac_t""$arch" 1>&6
# Autoheader trick. Heh, heh.
arch_list='
@@@syms="$syms I386 M68K SPARC MIPS ALPHA ARM"@@@
@@@syms="$syms I386 M68K SPARC MIPS ALPHA ARM POWERPC"@@@
'
osarch="$opsys"
@ -640,6 +640,7 @@ fi
OPSYS=`echo $opsys | tr '[a-z]' '[A-Z]'`
ARCH=`echo $arch | tr '[a-z]' '[A-Z]'`
CFLAG="-D_GNU_SOURCE $CFLAGS"
cat >> confdefs.h <<EOF
@ -655,7 +656,7 @@ EOF
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:659: checking for $ac_word" >&5
echo "configure:660: 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
@ -685,7 +686,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:689: checking for $ac_word" >&5
echo "configure:690: 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
@ -736,7 +737,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:740: checking for $ac_word" >&5
echo "configure:741: 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
@ -768,7 +769,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:772: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
echo "configure:773: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@ -779,12 +780,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
#line 783 "configure"
#line 784 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
if { (eval echo configure:788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:789: \"$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
@ -810,12 +811,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:814: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "configure:815: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
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:819: checking whether we are using GNU C" >&5
echo "configure:820: 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
@ -824,7 +825,7 @@ else
yes;
#endif
EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:828: \"$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:829: \"$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
@ -843,7 +844,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
echo "configure:847: checking whether ${CC-cc} accepts -g" >&5
echo "configure:848: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -888,16 +889,16 @@ then
last="$i"
CC="$HOSTCC -b $i"
echo $ac_n "checking for working $CC""... $ac_c" 1>&6
echo "configure:892: checking for working $CC" >&5
echo "configure:893: checking for working $CC" >&5
cat > conftest.$ac_ext <<EOF
#line 894 "configure"
#line 895 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if { (eval echo configure:901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
worked=1
break
@ -919,7 +920,7 @@ rm -f conftest*
fi
echo $ac_n "checking for pollable procfs""... $ac_c" 1>&6
echo "configure:923: checking for pollable procfs" >&5
echo "configure:924: checking for pollable procfs" >&5
if eval "test \"`echo '$''{'ac_cv_pollable_procfs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -937,7 +938,7 @@ esac
else
cat > conftest.$ac_ext <<EOF
#line 941 "configure"
#line 942 "configure"
#include "confdefs.h"
#include <stdio.h>
@ -976,7 +977,7 @@ fail:
}
EOF
if { (eval echo configure:980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_pollable_procfs=yes
else
@ -1000,19 +1001,19 @@ EOF
fi
echo $ac_n "checking for pr_syscall in struct prstatus""... $ac_c" 1>&6
echo "configure:1004: checking for pr_syscall in struct prstatus" >&5
echo "configure:1005: checking for pr_syscall in struct prstatus" >&5
if eval "test \"`echo '$''{'ac_cv_struct_pr_syscall'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1009 "configure"
#line 1010 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main() {
struct prstatus s; s.pr_syscall;
; return 0; }
EOF
if { (eval echo configure:1016: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_pr_syscall=yes
else
@ -1034,12 +1035,12 @@ EOF
fi
echo $ac_n "checking for msg_control in struct msghdr""... $ac_c" 1>&6
echo "configure:1038: checking for msg_control in struct msghdr" >&5
echo "configure:1039: checking for msg_control in struct msghdr" >&5
if eval "test \"`echo '$''{'ac_cv_struct_msg_control'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1043 "configure"
#line 1044 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@ -1048,7 +1049,7 @@ int main() {
struct msghdr m; m.msg_control;
; return 0; }
EOF
if { (eval echo configure:1052: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_msg_control=yes
else
@ -1074,7 +1075,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:1078: checking for $ac_word" >&5
echo "configure:1079: 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
@ -1105,7 +1106,7 @@ done
echo $ac_n "checking for primary include directory""... $ac_c" 1>&6
echo "configure:1109: checking for primary include directory" >&5
echo "configure:1110: checking for primary include directory" >&5
includedir=/usr/include
if test -n "$GCC"
then
@ -1127,7 +1128,7 @@ echo "$ac_t""$includedir" 1>&6
if test "x$OPSYS" = "xSUNOS4" && test "x$ARCH" = "xSPARC"
then
echo $ac_n "checking for valid machine include directory""... $ac_c" 1>&6
echo "configure:1131: checking for valid machine include directory" >&5
echo "configure:1132: checking for valid machine include directory" >&5
if test -d "$includedir/sun4"
then
rm -f machine
@ -1160,7 +1161,7 @@ then
fi
fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1164: checking how to run the C preprocessor" >&5
echo "configure:1165: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@ -1175,13 +1176,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 1179 "configure"
#line 1180 "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:1185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1186: \"$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
:
@ -1192,13 +1193,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 1196 "configure"
#line 1197 "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:1202: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1203: \"$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
:
@ -1209,13 +1210,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
#line 1213 "configure"
#line 1214 "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:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1220: \"$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
:
@ -1241,13 +1242,13 @@ echo "$ac_t""$CPP" 1>&6
if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
echo "configure:1245: checking whether ${CC-cc} needs -traditional" >&5
echo "configure:1246: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF
#line 1251 "configure"
#line 1252 "configure"
#include "confdefs.h"
#include <sgtty.h>
Autoconf TIOCGETP
@ -1265,7 +1266,7 @@ rm -f conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF
#line 1269 "configure"
#line 1270 "configure"
#include "confdefs.h"
#include <termio.h>
Autoconf TCGETA
@ -1298,7 +1299,7 @@ fi
# 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:1302: checking for a BSD compatible install" >&5
echo "configure:1303: 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
@ -1351,12 +1352,12 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking for working const""... $ac_c" 1>&6
echo "configure:1355: checking for working const" >&5
echo "configure:1356: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1360 "configure"
#line 1361 "configure"
#include "confdefs.h"
int main() {
@ -1405,7 +1406,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if { (eval echo configure:1409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@ -1426,12 +1427,12 @@ EOF
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
echo "configure:1430: checking for ANSI C header files" >&5
echo "configure:1431: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1435 "configure"
#line 1436 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@ -1439,7 +1440,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1444: \"$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
rm -rf conftest*
@ -1456,7 +1457,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1460 "configure"
#line 1461 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@ -1474,7 +1475,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1478 "configure"
#line 1479 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@ -1495,7 +1496,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
#line 1499 "configure"
#line 1500 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@ -1506,7 +1507,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if { (eval echo configure:1510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:1511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@ -1534,12 +1535,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
echo "configure:1538: checking for $ac_hdr that defines DIR" >&5
echo "configure:1539: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1543 "configure"
#line 1544 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@ -1547,7 +1548,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
if { (eval echo configure:1551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1552: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@ -1572,7 +1573,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
echo "configure:1576: checking for opendir in -ldir" >&5
echo "configure:1577: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -1580,7 +1581,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1584 "configure"
#line 1585 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -1591,7 +1592,7 @@ int main() {
opendir()
; return 0; }
EOF
if { (eval echo configure:1595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -1613,7 +1614,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
echo "configure:1617: checking for opendir in -lx" >&5
echo "configure:1618: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -1621,7 +1622,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1625 "configure"
#line 1626 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -1632,7 +1633,7 @@ int main() {
opendir()
; return 0; }
EOF
if { (eval echo configure:1636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -1655,12 +1656,12 @@ fi
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
echo "configure:1659: checking return type of signal handlers" >&5
echo "configure:1660: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1664 "configure"
#line 1665 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@ -1677,7 +1678,7 @@ int main() {
int i;
; return 0; }
EOF
if { (eval echo configure:1681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@ -1696,12 +1697,12 @@ EOF
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
echo "configure:1700: checking for st_blksize in struct stat" >&5
echo "configure:1701: checking for st_blksize in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1705 "configure"
#line 1706 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1709,7 +1710,7 @@ int main() {
struct stat s; s.st_blksize;
; return 0; }
EOF
if { (eval echo configure:1713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1714: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blksize=yes
else
@ -1730,12 +1731,12 @@ EOF
fi
echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
echo "configure:1734: checking for st_blocks in struct stat" >&5
echo "configure:1735: checking for st_blocks in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1739 "configure"
#line 1740 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1743,7 +1744,7 @@ int main() {
struct stat s; s.st_blocks;
; return 0; }
EOF
if { (eval echo configure:1747: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_blocks=yes
else
@ -1766,12 +1767,12 @@ else
fi
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
echo "configure:1770: checking for st_rdev in struct stat" >&5
echo "configure:1771: checking for st_rdev in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1775 "configure"
#line 1776 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1779,7 +1780,7 @@ int main() {
struct stat s; s.st_rdev;
; return 0; }
EOF
if { (eval echo configure:1783: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1784: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_rdev=yes
else
@ -1800,12 +1801,12 @@ EOF
fi
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
echo "configure:1804: checking whether stat file-mode macros are broken" >&5
echo "configure:1805: checking whether stat file-mode macros are broken" >&5
if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1809 "configure"
#line 1810 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1856,12 +1857,12 @@ EOF
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
echo "configure:1860: checking for uid_t in sys/types.h" >&5
echo "configure:1861: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1865 "configure"
#line 1866 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@ -1890,12 +1891,12 @@ EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
echo "configure:1894: checking for mode_t" >&5
echo "configure:1895: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1899 "configure"
#line 1900 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -1923,7 +1924,7 @@ EOF
fi
echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6
echo "configure:1927: checking type of array argument to getgroups" >&5
echo "configure:1928: checking type of array argument to getgroups" >&5
if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1931,7 +1932,7 @@ else
ac_cv_type_getgroups=cross
else
cat > conftest.$ac_ext <<EOF
#line 1935 "configure"
#line 1936 "configure"
#include "confdefs.h"
/* Thanks to Mike Rendell for this test. */
@ -1956,7 +1957,7 @@ main()
}
EOF
if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_type_getgroups=gid_t
else
@ -1970,7 +1971,7 @@ fi
if test $ac_cv_type_getgroups = cross; then
cat > conftest.$ac_ext <<EOF
#line 1974 "configure"
#line 1975 "configure"
#include "confdefs.h"
#include <unistd.h>
EOF
@ -1994,19 +1995,19 @@ EOF
echo $ac_n "checking whether sys/types.h defines makedev""... $ac_c" 1>&6
echo "configure:1998: checking whether sys/types.h defines makedev" >&5
echo "configure:1999: checking whether sys/types.h defines makedev" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_types_h_makedev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2003 "configure"
#line 2004 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
return makedev(0, 0);
; return 0; }
EOF
if { (eval echo configure:2010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_sys_types_h_makedev=yes
else
@ -2024,17 +2025,17 @@ echo "$ac_t""$ac_cv_header_sys_types_h_makedev" 1>&6
if test $ac_cv_header_sys_types_h_makedev = no; then
ac_safe=`echo "sys/mkdev.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/mkdev.h""... $ac_c" 1>&6
echo "configure:2028: checking for sys/mkdev.h" >&5
echo "configure:2029: checking for sys/mkdev.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2033 "configure"
#line 2034 "configure"
#include "confdefs.h"
#include <sys/mkdev.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2039: \"$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
rm -rf conftest*
@ -2062,17 +2063,17 @@ fi
if test $ac_cv_header_sys_mkdev_h = no; then
ac_safe=`echo "sys/sysmacros.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for sys/sysmacros.h""... $ac_c" 1>&6
echo "configure:2066: checking for sys/sysmacros.h" >&5
echo "configure:2067: checking for sys/sysmacros.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2071 "configure"
#line 2072 "configure"
#include "confdefs.h"
#include <sys/sysmacros.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2076: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2077: \"$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
rm -rf conftest*
@ -2100,19 +2101,19 @@ fi
fi
echo $ac_n "checking for sig_atomic_t in signal.h""... $ac_c" 1>&6
echo "configure:2104: checking for sig_atomic_t in signal.h" >&5
echo "configure:2105: checking for sig_atomic_t in signal.h" >&5
if eval "test \"`echo '$''{'ac_cv_sig_atomic_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2109 "configure"
#line 2110 "configure"
#include "confdefs.h"
#include <signal.h>
int main() {
sig_atomic_t x;
; return 0; }
EOF
if { (eval echo configure:2116: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_sig_atomic_t=yes
else
@ -2134,7 +2135,7 @@ EOF
fi
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
echo "configure:2138: checking for main in -lnsl" >&5
echo "configure:2139: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -2142,14 +2143,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2146 "configure"
#line 2147 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
if { (eval echo configure:2153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -2179,12 +2180,12 @@ fi
for ac_func in sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl putpmsg prctl sendmsg
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:2183: checking for $ac_func" >&5
echo "configure:2184: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2188 "configure"
#line 2189 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -2207,7 +2208,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:2211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -2231,21 +2232,21 @@ else
fi
done
for ac_hdr in sys/filio.h sys/asynch.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h
for ac_hdr in sys/filio.h sys/asynch.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2239: checking for $ac_hdr" >&5
echo "configure:2240: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2244 "configure"
#line 2245 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2250: \"$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
rm -rf conftest*
@ -2272,12 +2273,12 @@ fi
done
echo $ac_n "checking for sys_errlist declaration""... $ac_c" 1>&6
echo "configure:2276: checking for sys_errlist declaration" >&5
echo "configure:2277: checking for sys_errlist declaration" >&5
if eval "test \"`echo '$''{'ac_cv_decl_sys_errlist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2281 "configure"
#line 2282 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <errno.h>
@ -2290,7 +2291,7 @@ int main() {
char *msg = *(sys_errlist + 1);
; return 0; }
EOF
if { (eval echo configure:2294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl_sys_errlist=yes
else
@ -2310,12 +2311,12 @@ EOF
fi
echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
echo "configure:2314: checking for sys_siglist declaration in signal.h or unistd.h" >&5
echo "configure:2315: checking for sys_siglist declaration in signal.h or unistd.h" >&5
if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2319 "configure"
#line 2320 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@ -2327,7 +2328,7 @@ int main() {
char *msg = *(sys_siglist + 1);
; return 0; }
EOF
if { (eval echo configure:2331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl_sys_siglist=yes
else
@ -2348,12 +2349,12 @@ EOF
fi
echo $ac_n "checking for _sys_siglist declaration""... $ac_c" 1>&6
echo "configure:2352: checking for _sys_siglist declaration" >&5
echo "configure:2353: checking for _sys_siglist declaration" >&5
if eval "test \"`echo '$''{'ac_cv_decl__sys_siglist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2357 "configure"
#line 2358 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@ -2365,7 +2366,7 @@ int main() {
char *msg = *(_sys_siglist + 1);
; return 0; }
EOF
if { (eval echo configure:2369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:2370: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_decl__sys_siglist=yes
else

View File

@ -61,7 +61,7 @@ AC_MSG_RESULT($arch)
# Autoheader trick. Heh, heh.
arch_list='
@@@syms="$syms I386 M68K SPARC MIPS ALPHA ARM"@@@
@@@syms="$syms I386 M68K SPARC MIPS ALPHA ARM POWERPC"@@@
'
osarch="$opsys"
@ -73,6 +73,7 @@ OPSYS=`echo $opsys | tr '[a-z]' '[A-Z]'`
ARCH=`echo $arch | tr '[a-z]' '[A-Z]'`
changequote([,])dnl
CFLAG="-D_GNU_SOURCE $CFLAGS"
AC_CONFIG_HEADER(config.h)
AC_SUBST(opsys)
AC_DEFINE_UNQUOTED($OPSYS)
@ -125,7 +126,7 @@ AC_HEADER_MAJOR
AC_SIG_ATOMIC_T
AC_CHECK_LIB(nsl, main)
AC_CHECK_FUNCS(sigaction strerror strsignal pread sys_siglist _sys_siglist getdents mctl putpmsg prctl sendmsg)
AC_CHECK_HEADERS(sys/filio.h sys/asynch.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h)
AC_CHECK_HEADERS(sys/filio.h sys/asynch.h sys/stream.h sys/tiuser.h sys/sysconfig.h asm/sigcontext.h ioctls.h sys/ioctl.h sys/ptrace.h termio.h)
AC_DECL_SYS_ERRLIST
AC_DECL_SYS_SIGLIST
AC_DECL__SYS_SIGLIST

25
file.c
View File

@ -283,21 +283,19 @@ struct tcb *tcp;
if (entering(tcp)) {
if (tcp->u_arg[4] == SEEK_SET)
tprintf("%ld, %llu, ", tcp->u_arg[0],
(((unsigned long long int) tcp->u_arg[1]) << 32
| (unsigned long) tcp->u_arg[2]));
(((long long int) tcp->u_arg[1]) << 32
| (unsigned long long) tcp->u_arg[2]));
else
tprintf("%ld, %lld, ", tcp->u_arg[0],
(((long long int) tcp->u_arg[1]) << 32
| (unsigned long) tcp->u_arg[2]));
| (unsigned long long) tcp->u_arg[2]));
}
else {
if (syserror(tcp))
long long int off;
if (syserror(tcp) || umove(tcp, tcp->u_arg[3], &off) < 0)
tprintf("%#lx, ", tcp->u_arg[3]);
else {
long long int off;
umove(tcp, tcp->u_arg[3], &off);
tprintf("{%lld}, ", off);
}
else
tprintf("[%llu], ", off);
printxval(whence, tcp->u_arg[4], "SEEK_???");
}
return 0;
@ -764,7 +762,8 @@ static struct xlat fsmagic[] = {
{ 0x9660, "ISOFS_SUPER_MAGIC" },
{ 0x137f, "MINIX_SUPER_MAGIC" },
{ 0x138f, "MINIX_SUPER_MAGIC2" },
{ 0x2468, "NEW_MINIX_SUPER_MAGIC" },
{ 0x2468, "MINIX2_SUPER_MAGIC" },
{ 0x2478, "MINIX2_SUPER_MAGIC2" },
{ 0x4d44, "MSDOS_SUPER_MAGIC" },
{ 0x6969, "NFS_SUPER_MAGIC" },
{ 0x9fa0, "PROC_SUPER_MAGIC" },
@ -814,7 +813,7 @@ long addr;
tprintf("{f_type=%s, f_fbsize=%u, f_blocks=%u, f_bfree=%u, ",
sprintfstype(statbuf.f_type),
statbuf.f_bsize, statbuf.f_blocks, statbuf.f_bfree);
tprintf("f_bavail=%u, f_files=%u, f_ffree=%u, f_namelen=%u}",
tprintf("f_bavail=%u, f_files=%u, f_ffree=%u, f_namelen=%u",
statbuf.f_bavail,statbuf.f_files, statbuf.f_ffree, statbuf.f_namelen);
#else /* !ALPHA */
tprintf("{f_type=%s, f_bsize=%lu, f_blocks=%lu, f_bfree=%lu, ",
@ -826,7 +825,7 @@ long addr;
(unsigned long)statbuf.f_files,
(unsigned long)statbuf.f_ffree);
#ifdef linux
tprintf(", f_namelen=%lu}", (unsigned long)statbuf.f_namelen);
tprintf(", f_namelen=%lu", (unsigned long)statbuf.f_namelen);
#endif /* linux */
#endif /* !ALPHA */
tprintf("}");
@ -1296,7 +1295,7 @@ struct tcb *tcp;
if (syserror(tcp))
tprintf("%#lx", tcp->u_arg[0]);
else
printstr(tcp, tcp->u_arg[0], tcp->u_arg[1]);
printpathn(tcp, tcp->u_arg[0], tcp->u_rval - 1);
tprintf(", %lu", tcp->u_arg[1]);
}
return 0;

29
io.c
View File

@ -93,7 +93,7 @@ struct tcb *tcp;
tprintf("{");
printstr(tcp, (long) iov[i].iov_base,
iov[i].iov_len);
tprintf(", %u}", iov[i].iov_len);
tprintf(", %lu}", (unsigned long)iov[i].iov_len);
}
tprintf("]");
}
@ -129,7 +129,7 @@ struct tcb *tcp;
tprintf("{");
printstr(tcp, (long) iov[i].iov_base,
iov[i].iov_len);
tprintf(", %u}", iov[i].iov_len);
tprintf(", %lu}", (unsigned long)iov[i].iov_len);
}
tprintf("]");
}
@ -186,7 +186,8 @@ struct tcb *tcp;
tprintf("%#lx", tcp->u_arg[1]);
else
printstr(tcp, tcp->u_arg[1], tcp->u_rval);
tprintf(", %lu, %lu", tcp->u_arg[2], tcp->u_arg[3]);
tprintf(", %lu, %llu", tcp->u_arg[2],
*(unsigned long long *)&tcp->u_arg[3]);
}
return 0;
}
@ -198,7 +199,27 @@ struct tcb *tcp;
if (entering(tcp)) {
tprintf("%ld, ", tcp->u_arg[0]);
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
tprintf(", %lu, %lu", tcp->u_arg[2], tcp->u_arg[3]);
tprintf(", %lu, %llu", tcp->u_arg[2],
*(unsigned long long *)&tcp->u_arg[3]);
}
return 0;
}
int
sys_sendfile(tcp)
struct tcb *tcp;
{
if (entering(tcp)) {
off_t offset;
tprintf("%ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1]);
if (!tcp->u_arg[2])
tprintf("NULL");
else if (umove(tcp, tcp->u_arg[2], &offset) < 0)
tprintf("%#lx", tcp->u_arg[2]);
else
tprintf("[%lu]", offset);
tprintf(", %lu", tcp->u_arg[3]);
}
return 0;
}

View File

@ -56,7 +56,6 @@
#define sys_sched_get_priority_max printargs
#define sys_sched_get_priority_min printargs
#define sys_sched_rr_get_interval printargs
#define sys_mremap printargs
/* like another call */
#define sys_uselib sys_chdir

View File

@ -81,6 +81,7 @@ int sys_getresuid(), sys_getresgid(), sys_pread(), sys_pwrite(), sys_getcwd();
int sys_sigaltstack(), sys_rt_sigprocmask(), sys_rt_sigaction();
int sys_rt_sigpending(), sys_rt_sigsuspend(), sys_rt_sigqueueinfo();
int sys_rt_sigtimedwait(), sys_prctl(), sys_poll(), sys_vfork();
int sys_sendfile();
/* sys_socketcall subcalls */
@ -153,3 +154,6 @@ int osf_statfs(), osf_fstatfs(), sys_getpagesize(), sys_madvise();
int sys_setpgrp(), sys_gethostname(), sys_getdtablesize(), sys_utimes();
int sys_capget(), sys_capset();
#ifdef M68K
int sys_cacheflush();
#endif

View File

@ -44,7 +44,11 @@
{ 1, 0, sys_time, "time" }, /* 13 */
{ 3, TF, sys_mknod, "mknod" }, /* 14 */
{ 2, TF, sys_chmod, "chmod" }, /* 15 */
#ifdef M68K
{ 3, TF, sys_chown, "chown" }, /* 16 */
#else
{ 3, TF, sys_chown, "lchown" }, /* 16 */
#endif
{ 0, 0, sys_break, "break" }, /* 17 */
{ 2, TF, sys_oldstat, "oldstat" }, /* 18 */
{ 3, 0, sys_lseek, "lseek" }, /* 19 */
@ -151,12 +155,16 @@
{ 2, TP, sys_clone, "clone" }, /* 120 */
{ 2, 0, sys_setdomainname, "setdomainname" }, /* 121 */
{ 1, 0, sys_uname, "uname" }, /* 122 */
#ifdef M68K
{ 4, 0, sys_cacheflush, "cacheflush" }, /* 123 */
#else
{ 3, 0, sys_modify_ldt, "modify_ldt" }, /* 123 */
#endif
{ 1, 0, sys_adjtimex, "adjtimex" }, /* 124 */
{ 3, 0, sys_mprotect, "mprotect" }, /* 125 */
{ 3, TS, sys_sigprocmask, "sigprocmask" }, /* 126 */
{ 2, 0, sys_create_module, "create_module" }, /* 127 */
{ 4, 0, sys_init_module, "init_module" }, /* 128 */
{ 2, 0, sys_init_module, "init_module" }, /* 128 */
{ 1, 0, sys_delete_module, "delete_module" }, /* 129 */
{ 1, 0, sys_get_kernel_syms, "get_kernel_syms"}, /* 130 */
{ 4, 0, sys_quotactl, "quotactl" }, /* 131 */
@ -173,31 +181,35 @@
{ 5, 0, sys_select, "select" }, /* 142 */
{ 2, 0, sys_flock, "flock" }, /* 143 */
{ 3, 0, sys_msync, "msync" }, /* 144 */
{ 5, 0, sys_readv, "readv" }, /* 145 */
{ 5, 0, sys_writev, "writev" }, /* 146 */
{ 5, 0, sys_getsid, "getsid" }, /* 147 */
{ 5, 0, sys_fdatasync, "fdatasync" }, /* 148 */
{ 5, 0, sys_sysctl, "_sysctl" }, /* 149 */
{ 5, 0, sys_mlock, "mlock" }, /* 150 */
{ 5, 0, sys_munlock, "munlock" }, /* 151 */
{ 5, 0, sys_mlockall, "mlockall" }, /* 152 */
{ 5, 0, sys_munlockall, "munlockall" }, /* 153 */
{ 5, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */
{ 5, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */
{ 5, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */
{ 5, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 157 */
{ 5, 0, sys_sched_yield, "sched_yield"}, /* 158 */
{ 5, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 159 */
{ 5, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
{ 5, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
{ 5, 0, sys_nanosleep, "nanosleep" }, /* 162 */
{ 5, 0, sys_mremap, "mremap" }, /* 163 */
{ 3, 0, sys_readv, "readv" }, /* 145 */
{ 3, 0, sys_writev, "writev" }, /* 146 */
{ 1, 0, sys_getsid, "getsid" }, /* 147 */
{ 1, 0, sys_fdatasync, "fdatasync" }, /* 148 */
{ 1, 0, sys_sysctl, "_sysctl" }, /* 149 */
{ 1, 0, sys_mlock, "mlock" }, /* 150 */
{ 2, 0, sys_munlock, "munlock" }, /* 151 */
{ 2, 0, sys_mlockall, "mlockall" }, /* 152 */
{ 1, 0, sys_munlockall, "munlockall" }, /* 153 */
{ 0, 0, sys_sched_setparam, "sched_setparam"}, /* 154 */
{ 2, 0, sys_sched_getparam, "sched_getparam"}, /* 155 */
{ 3, 0, sys_sched_setscheduler, "sched_setscheduler"}, /* 156 */
{ 1, 0, sys_sched_getscheduler, "sched_getscheduler"}, /* 157 */
{ 0, 0, sys_sched_yield, "sched_yield"}, /* 158 */
{ 1, 0, sys_sched_get_priority_max,"sched_get_priority_max"}, /* 159 */
{ 1, 0, sys_sched_get_priority_min,"sched_get_priority_min"}, /* 160 */
{ 2, 0, sys_sched_rr_get_interval,"sched_rr_get_interval"}, /* 161 */
{ 2, 0, sys_nanosleep, "nanosleep" }, /* 162 */
{ 4, 0, sys_mremap, "mremap" }, /* 163 */
{ 3, 0, sys_setresuid, "setresuid" }, /* 164 */
{ 3, 0, sys_getresuid, "getresuid" }, /* 165 */
#ifdef M68K
{ 5, 0, printargs, "SYS_166" }, /* 166 */
#else
{ 5, 0, printargs, "vm86" }, /* 166 */
#endif
{ 5, 0, sys_query_module, "query_module" }, /* 167 */
{ 3, 0, sys_poll, "poll" }, /* 168 */
{ 5, 0, printargs, "nfsservctl" }, /* 169 */
{ 3, 0, printargs, "nfsservctl" }, /* 169 */
{ 3, 0, sys_setresgid, "setresgid" }, /* 170 */
{ 3, 0, sys_getresgid, "getresgid" }, /* 171 */
{ 5, 0, printargs, "prctl" }, /* 172 */
@ -211,12 +223,16 @@
{ 5, TF, sys_pread, "pread" }, /* 180 */
{ 5, TF, sys_pwrite, "pwrite" }, /* 181 */
#ifdef M68K
{ 3, TF, sys_chown, "lchown" }, /* 182 */
#else
{ 3, TF, sys_chown, "chown" }, /* 182 */
#endif
{ 2, 0, sys_getcwd, "getcwd" }, /* 183 */
{ 5, 0, printargs, "capget" }, /* 184 */
{ 5, 0, printargs, "capset" }, /* 185 */
{ 5, TS, sys_sigaltstack, "sigaltstack" }, /* 186 */
{ 5, TF, printargs, "sendfile" }, /* 187 */
{ 2, 0, sys_capget, "capget" }, /* 184 */
{ 2, 0, sys_capset, "capset" }, /* 185 */
{ 2, TS, sys_sigaltstack, "sigaltstack" }, /* 186 */
{ 4, TF, sys_sendfile, "sendfile" }, /* 187 */
{ 5, 0, printargs, "SYS_188" }, /* 188 */
{ 5, 0, printargs, "SYS_189" }, /* 189 */
{ 0, TP, sys_vfork, "vfork" }, /* 190 */

25
mem.c
View File

@ -31,11 +31,10 @@
#include "defs.h"
#ifdef LINUXSPARC
#ifdef LINUX
#include <linux/mman.h>
#else
#include <sys/mman.h>
#endif
#include <sys/mman.h>
#if defined(LINUX) && defined(__i386__)
#include <asm/ldt.h>
@ -170,6 +169,26 @@ struct tcb *tcp;
return 0;
}
#ifdef LINUX
static struct xlat mremap_flags[] = {
{ MREMAP_MAYMOVE, "MREMAP_MAYMOVE" },
};
int
sys_mremap(tcp)
struct tcb *tcp;
{
if (entering(tcp)) {
tprintf("%#lx, %lu, %lu, ", tcp->u_arg[0], tcp->u_arg[1],
tcp->u_arg[2]);
printflags(mremap_flags, tcp->u_arg[3]);
}
return RVAL_HEX;
}
#endif /* LINUX */
#ifdef MS_ASYNC
static struct xlat mctl_sync[] = {

17
net.c
View File

@ -384,9 +384,14 @@ long addr;
{
struct msghdr msg;
umove(tcp, addr, &msg);
tprintf("{msg_name=%s, msg_namelen=%u, msg_iov=%#lx, msg_iovlen=%u, ",
(char *) msg.msg_name, msg.msg_namelen,
if (umove(tcp, addr, &msg) < 0) {
tprintf("%#lx", addr);
return;
}
tprintf("{msg_name=");
printstr(tcp, (long) msg.msg_name, msg.msg_namelen);
tprintf(", msg_namelen=%u, msg_iov=%#lx, msg_iovlen=%u, ",
msg.msg_namelen,
(unsigned long) msg.msg_iov, msg.msg_iovlen);
#ifdef HAVE_MSG_CONTROL
tprintf("msg_control=%#lx, msg_controllen=%u, msg_flags=%#x}",
@ -706,17 +711,17 @@ struct tcb *tcp;
break;
#endif /* PF_IPX */
default:
tprintf(", %lu", tcp->u_arg[2]);
tprintf("%lu", tcp->u_arg[2]);
break;
}
} else {
if (syserror(tcp)) {
tprintf("%#lx", tcp->u_arg[3]);
tprintf(", %#lx", tcp->u_arg[3]);
return 0;
}
#ifdef LINUX
if (umoven(tcp, tcp->u_arg[3], sizeof fds, (char *) fds) < 0)
tprintf("[...]");
tprintf(", [...]");
else
tprintf(", [%u, %u]", fds[0], fds[1]);
#endif /* LINUX */

View File

@ -51,7 +51,12 @@
#endif
#ifdef LINUX
#ifndef __GLIBC__
#include <linux/ptrace.h>
#endif
#include <asm/posix_types.h>
#undef GETGROUPS_T
#define GETGROUPS_T __kernel_gid_t
#endif /* LINUX */
#ifdef HAVE_PRCTL
@ -476,18 +481,24 @@ sys_getresuid(tcp)
struct tcb *tcp;
{
if (exiting(tcp)) {
uid_t res[3];
if (umoven(tcp, tcp->u_arg[0], sizeof(pid_t),
(char *) &res[0]) < 0
|| umoven(tcp, tcp->u_arg[2], sizeof(pid_t),
(char *) &res[1]) < 0
|| umoven(tcp, tcp->u_arg[2], sizeof(pid_t),
(char *) &res[2]) < 0)
return -1;
tprintf("ruid %lu, euid %lu, suid %lu",
(unsigned long) res[0],
(unsigned long) res[1],
(unsigned long) res[2]);
__kernel_uid_t uid;
if (syserror(tcp))
tprintf("%#lx, %#lx, %#lx", tcp->u_arg[0],
tcp->u_arg[1], tcp->u_arg[2]);
else {
if (umove(tcp, tcp->u_arg[0], &uid) < 0)
tprintf("%#lx, ", tcp->u_arg[0]);
else
tprintf("ruid %lu, ", (unsigned long) uid);
if (umove(tcp, tcp->u_arg[0], &uid) < 0)
tprintf("%#lx, ", tcp->u_arg[0]);
else
tprintf("euid %lu, ", (unsigned long) uid);
if (umove(tcp, tcp->u_arg[0], &uid) < 0)
tprintf("%#lx", tcp->u_arg[0]);
else
tprintf("suid %lu", (unsigned long) uid);
}
}
return 0;
}
@ -497,18 +508,24 @@ sys_getresgid(tcp)
struct tcb *tcp;
{
if (exiting(tcp)) {
uid_t res[3];
if (umoven(tcp, tcp->u_arg[0], sizeof(pid_t),
(char *) &res[0]) < 0
|| umoven(tcp, tcp->u_arg[2], sizeof(pid_t),
(char *) &res[1]) < 0
|| umoven(tcp, tcp->u_arg[2], sizeof(pid_t),
(char *) &res[2]) < 0)
return -1;
tprintf("rgid %lu, egid %lu, sgid %lu",
(unsigned long) res[0],
(unsigned long) res[1],
(unsigned long) res[2]);
__kernel_gid_t gid;
if (syserror(tcp))
tprintf("%#lx, %#lx, %#lx", tcp->u_arg[0],
tcp->u_arg[1], tcp->u_arg[2]);
else {
if (umove(tcp, tcp->u_arg[0], &gid) < 0)
tprintf("%#lx, ", tcp->u_arg[0]);
else
tprintf("rgid %lu, ", (unsigned long) gid);
if (umove(tcp, tcp->u_arg[0], &gid) < 0)
tprintf("%#lx, ", tcp->u_arg[0]);
else
tprintf("egid %lu, ", (unsigned long) gid);
if (umove(tcp, tcp->u_arg[0], &gid) < 0)
tprintf("%#lx", tcp->u_arg[0]);
else
tprintf("sgid %lu", (unsigned long) gid);
}
}
return 0;
}

View File

@ -48,7 +48,9 @@
#endif /* SVR4 */
#ifdef LINUX
#ifndef __GLIBC__
#include <linux/ptrace.h>
#endif
#ifdef HAVE_ASM_SIGCONTEXT_H
#include <asm/sigcontext.h>
#ifdef SPARC
@ -85,7 +87,7 @@ struct sigcontext_struct {
};
#else /* !I386 */
#ifdef M68K
struct sigcontext_struct
struct sigcontext
{
unsigned long sc_mask;
unsigned long sc_usp;
@ -216,7 +218,7 @@ int sig;
return signalent[sig];
#ifdef SIGRTMIN
} else if (sig >= __SIGRTMIN && sig <= __SIGRTMAX) {
sprintf(buf, "SIGRT_%d", sig - __SIGRTMIN);
sprintf(buf, "SIGRT_%ld", (long)(sig - __SIGRTMIN));
return buf;
#endif /* SIGRTMIN */
} else {
@ -336,7 +338,7 @@ int sig;
char buf[1024];
char *s;
int i;
int signalled, blocked, ignored, caught;
unsigned int signalled, blocked, ignored, caught;
/* This is incredibly costly but it's worth it. */
sprintf(sname, "/proc/%d/stat", tcp->pid);
@ -357,7 +359,7 @@ int sig;
break;
}
}
if (sscanf(s, "%d%d%d%d",
if (sscanf(s, "%u%u%u%u",
&signalled, &blocked, &ignored, &caught) != 4) {
fprintf(stderr, "/proc/pid/stat format error\n");
return 1;
@ -561,6 +563,11 @@ struct old_sigaction {
unsigned long sa_flags;
void (*sa_restorer)(void);
};
#define SA_HANDLER __sa_handler
#endif /* LINUX */
#ifndef SA_HANDLER
#define SA_HANDLER sa_handler
#endif
int
@ -589,7 +596,7 @@ struct tcb *tcp;
else if (umove(tcp, addr, &sa) < 0)
tprintf("{...}");
else {
switch ((long) sa.__sa_handler) {
switch ((long) sa.SA_HANDLER) {
case (long) SIG_ERR:
tprintf("{SIG_ERR}");
break;
@ -612,7 +619,7 @@ struct tcb *tcp;
kill(tcp->pid, SIGSTOP);
}
#endif /* !SVR4 */
tprintf("{%#lx, ", (long) sa.__sa_handler);
tprintf("{%#lx, ", (long) sa.SA_HANDLER);
long_to_sigset(sa.sa_mask, &sigset);
printsigmask(&sigset, 0);
tprintf(", ");
@ -723,7 +730,7 @@ struct tcb *tcp;
#else /* !POWERPC */
#ifdef M68K
long usp;
struct sigcontext_struct sc;
struct sigcontext sc;
if (entering(tcp)) {
tcp->u_arg[0] = 0;

4
sock.c
View File

@ -36,8 +36,12 @@
#endif
#ifdef ALPHA
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#elif defined(HAVE_IOCTLS_H)
#include <ioctls.h>
#endif
#endif
int
sock_ioctl(tcp, code, arg)

View File

@ -78,7 +78,7 @@ int getting;
if (getting)
tprintf("maxlen=%d, ", sbp->maxlen);
tprintf("len=%d, buf=", sbp->len);
printstr(tcp, (int) sbp->buf, sbp->len);
printstr(tcp, (unsigned long) sbp->buf, sbp->len);
tprintf("}");
}
}

View File

@ -45,8 +45,9 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#ifdef LINUX
#ifdef __NR_personality
/* Workaround for kernel namespace pollution. */
#define _LINUX_PTRACE_H
#define sys_personality kernel_sys_personality
#include <linux/personality.h>
#undef sys_personality
@ -56,6 +57,10 @@
#include <linux/capability.h>
#endif
#ifdef __NR_cacheflush
#include <asm/cachectl.h>
#endif
static struct xlat mount_flags[] = {
{ MS_RDONLY, "MS_RDONLY" },
{ MS_NOSUID, "MS_NOSUID" },
@ -127,6 +132,52 @@ struct tcb *tcp;
return 0;
}
#ifdef M68K
static struct xlat cacheflush_scope[] = {
#ifdef FLUSH_SCOPE_LINE
{ FLUSH_SCOPE_LINE, "FLUSH_SCOPE_LINE" },
#endif
#ifdef FLUSH_SCOPE_PAGE
{ FLUSH_SCOPE_PAGE, "FLUSH_SCOPE_PAGE" },
#endif
#ifdef FLUSH_SCOPE_ALL
{ FLUSH_SCOPE_ALL, "FLUSH_SCOPE_ALL" },
#endif
{ 0, NULL },
};
static struct xlat cacheflush_flags[] = {
#ifdef FLUSH_CACHE_BOTH
{ FLUSH_CACHE_BOTH, "FLUSH_CACHE_BOTH" },
#endif
#ifdef FLUSH_CACHE_DATA
{ FLUSH_CACHE_DATA, "FLUSH_CACHE_DATA" },
#endif
#ifdef FLUSH_CACHE_INSN
{ FLUSH_CACHE_INSN, "FLUSH_CACHE_INSN" },
#endif
{ 0, NULL },
};
int
sys_cacheflush(tcp)
struct tcb *tcp;
{
if (entering(tcp)) {
/* addr */
tprintf("%#lx, ", tcp->u_arg[0]);
/* scope */
printxval(cacheflush_scope, tcp->u_arg[1], "FLUSH_SCOPE_???");
tprintf(", ");
/* flags */
printflags(cacheflush_flags, tcp->u_arg[2]);
/* len */
tprintf(", %lu", tcp->u_arg[3]);
}
return 0;
}
#endif /* M68K */
#endif /* LINUX */
#ifdef SUNOS4

12
term.c
View File

@ -29,10 +29,12 @@
#include "defs.h"
#ifdef __GLIBC__
#ifdef HAVE_TERMIO_H
#include <termio.h>
#endif /* __GLIBC__ */
#endif /* HAVE_TERMIO_H */
#include <termios.h>
#ifdef HAVE_SYS_FILIO_H
#include <sys/filio.h>
#endif
@ -330,6 +332,12 @@ long code, arg;
#endif
#ifdef TIOCSINTR
case TIOCSINTR:
#endif
#ifdef TIOCSPTLCK
case TIOCSPTLCK:
#endif
#ifdef TIOCGPTN
case TIOCGPTN:
#endif
tprintf(", ");
printnum(tcp, arg, "%d");

8
util.c
View File

@ -44,9 +44,15 @@
# define PTRACE_PEEKUSR PTRACE_PEEKUSER
#endif
#ifdef LINUX
#ifndef __GLIBC__
#include <linux/ptrace.h>
#endif
#endif /* LINUX */
#ifdef HAVE_SYS_PTRACE_H
#include <sys/ptrace.h>
#endif
#ifdef SUNOS4_KERNEL_ARCH_KLUDGE
#include <sys/utsname.h>
#endif /* SUNOS4_KERNEL_ARCH_KLUDGE */
@ -356,7 +362,7 @@ int len;
return;
}
}
outend = outstr + max_strlen;
outend = outstr + max_strlen * 2 - 10;
if (len < 0) {
n = max_strlen;
if (umovestr(tcp, addr, n, (char *) str) < 0) {