#ifndef lint
-static char sccsid[] = "@(#)_access.c 4.8 10/13/84";
+static char sccsid[] = "@(#)access.c 4.8 10/13/84";
#endif
/*
- * Adb: _access data in file/process address space.
+ * Adb: access data in file/process address space.
*
- * The routines in this file _access referenced data using
- * the maps to _access files, ptrace to _access subprocesses,
+ * The routines in this file access referenced data using
+ * the maps to access files, ptrace to access subprocesses,
* or the system page tables when debugging the kernel,
* to translate virtual to physical addresses.
*/
#include "defs.h"
-struct map txtmap;
-struct map datmap;
+struct map txtmap;
+struct map datmap;
short wtflag;
-char *errflg;
-short errno;
+extern char *errflg;
+extern int errno;
-short pid;
+extern short pid;
/*
* Primitives: put a value in a space, get a value from a space
u_int
bchkget(addr, space)
- off_t addr; { return(chkget(addr, space) & 0377); }
+ off_t addr; { return(chkget(addr, space) & 0xff); }
/*
* Read/write according to mode at address addr in i/d space.
--- /dev/null
+#!/bin/sh
+
+ROOT=`dirname $0`/../..
+#ROOT=../..
+ROOT=`cd $ROOT && pwd`
+INCLUDE=$ROOT/cross/usr/include
+
+all_c=`echo *.c`
+if test "$all_c" = "*.c"
+then
+ all_c=
+fi
+#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |grep -v '^vax/' |LC_ALL=C sort`
+
+all_h=`echo *.h`
+if test "$all_h" = "*.h"
+then
+ all_h=
+fi
+all_h="$all_h ../as/asnumber.h ../as/instrs.h"
+#all_h=`find . -type f -name '*.h' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_h=`find $INCLUDE -type f -name '*.h' -print |LC_ALL=C sort`
+
+if test -z "$1" || test $1 -eq 0
+then
+ echo "===stage 0==="
+
+ rm -f *.[ch].allprotos
+ rm -f *.[ch].nocomm
+ rm -f *.[ch].oldprotos
+ rm -f *.[ch].protos
+ rm -f *.[ch].protos.nocomm
+ rm -f *.[ch].usedby
+ rm -f *.[ch].uses
+ rm -rf .xify
+ #rm -f `find . -name '*.[ch].allprotos' -print`
+ #rm -f `find . -name '*.[ch].nocomm' -print`
+ #rm -f `find . -name '*.[ch].oldprotos' -print`
+ #rm -f `find . -name '*.[ch].protos' -print`
+ #rm -f `find . -name '*.[ch].protos.nocomm' -print`
+ #rm -f `find . -name '*.[ch].usedby' -print`
+ #rm -f `find . -name '*.[ch].uses' -print`
+ #rm -rf `find . -name .xify -print`
+
+ rm -f ../as/*.[ch].allprotos
+ rm -f ../as/*.[ch].nocomm
+ rm -f ../as/*.[ch].oldprotos
+ rm -f ../as/*.[ch].protos
+ rm -f ../as/*.[ch].protos.nocomm
+ rm -f ../as/*.[ch].usedby
+ rm -f ../as/*.[ch].uses
+ rm -rf ../as/.xify
+
+ #rm -f `find $INCLUDE -name '*.h.allprotos' -print`
+ rm -f `find $INCLUDE -name '*.h.nocomm' -print`
+ #rm -f `find $INCLUDE -name '*.h.oldprotos' -print`
+ #rm -f `find $INCLUDE -name '*.h.protos' -print`
+ #rm -f `find $INCLUDE -name '*.h.protos.nocomm' -print`
+ rm -f `find $INCLUDE -name '*.h.usedby' -print`
+ #rm -f `find $INCLUDE -name '*.h.uses' -print`
+ rm -rf `find $INCLUDE -name .xify -print`
+
+ rm -f a b conflicts.temp oldprotos.txt oldprotos.temp xx*
+
+ if test "$1" = 000
+ then
+ git checkout $all_c $all_h
+ #rm -rf $ROOT/include $ROOT/sys
+ #git checkout $ROOT/include $ROOT/sys $all_c
+ #rm -rf $INCLUDE
+ #mkdir -p $INCLUDE
+ #(cd $ROOT/include && ../scripts/make.sh SHARED=copies install)
+ fi
+fi
+
+all_c=`echo *.c`
+if test "$all_c" = "*.c"
+then
+ all_c=
+fi
+#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |grep -v '^vax/' |LC_ALL=C sort`
+
+all_h=`echo *.h`
+if test "$all_h" = "*.h"
+then
+ all_h=
+fi
+all_h="$all_h ../as/asnumber.h ../as/instrs.h"
+#all_h=`find . -type f -name '*.h' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_h=`find $INCLUDE -type f -name '*.h' -print |LC_ALL=C sort`
+
+std_h=`find $INCLUDE -type f -name '*.h' -print |grep -v "^$INCLUDE/\(stand\|vaxif\|vaxmba\|vaxuba\)/" |LC_ALL=C sort`
+#std_h=
+
+if test -z "$1" || test $1 -eq 1
+then
+ echo "===stage 1==="
+
+ for i in $all_c $all_h
+ do
+ echo "i=$i"
+
+ grep -H '^[A-Za-z_][0-9A-Za-z_]*[^0-9A-Za-z_][^;]*[A-Za-z_][0-9A-Za-z_]*[ ]*([ ]*)[ ]*\(,[^;]*\)\?;' $i >>oldprotos.txt
+ sed -e 's/^[A-Za-z_][0-9A-Za-z_]*[^0-9A-Za-z_][^;]*[A-Za-z_][0-9A-Za-z_]*[ ]*([ ]*)[ ]*\(,[^;]*\)\?;/\/\*&\*\//' -i $i
+
+ sed -e 's/^\(#[ ]*\(else\|endif\)\)\([^0-9A-Za-z_].*\)\?/\1/' -i $i
+
+ rm -f xx*
+ csplit -b '%05d' -q $i '/^#[ ]*ifndef[ ]*lint$/' '{*}'
+ for j in xx*
+ do
+ if test $j != xx00000 && sed -ne '2p' $j |grep -q 'char[ ]*\(copyright[ ]*\[[ ]*\]\|\*[ ]*copyright\)[ ]*='
+ then
+ sed -e 's/^\(#[ ]*if\)ndef\([ ]*\)lint$/\1\2defined(DOCOPYRIGHT) \&\& !defined(lint)/' -i $j
+ fi
+ if test $j != xx00000 && sed -ne '2p' $j |grep -q 'char[ ]*\(sccsid[ ]*\[[ ]*\]\|\*[ ]*sccsid\)[ ]*='
+ then
+ sed -e 's/^\(#[ ]*if\)ndef\([ ]*\)lint$/\1\2defined(DOSCCS) \&\& !defined(lint)/' -i $j
+ else
+ sed -e 's/^.*char[ ]*\(sccsid[ ]*\[[ ]*\]\|\*[ ]*sccsid\)[ ]*=.*$/#if defined(DOSCCS) \&\& !defined(lint)\n&\n#endif/' -i $j
+ fi
+ done
+ cat xx* >$i
+
+ rm -f xx*
+ csplit -b '%05d' -q $i '/^[ ]*{[ ]*$/' '{*}'
+ prev=
+ for j in xx*
+ do
+ if test -n "$prev" && ! sed -ne '$p' $prev |grep -q '^#'
+ then
+ sed -e '$s/$/ {/' -i $prev
+ sed -ne '2,$p' -i $j
+ fi
+ prev=$j
+ done
+ cat xx* >$i
+ done
+
+ grep '\.h:' oldprotos.txt >oldprotos.temp
+
+ sed -e 's/^[A-Za-z_].*__P.*;$/\/\*AAA&\*\//' -i $std_h
+ mv $INCLUDE/varargs.h $INCLUDE/varargs.h.save
+ echo "#define va_list char *" >$INCLUDE/varargs.h
+ echo "#define va_list char *" >$INCLUDE/stdarg.h
+ touch $INCLUDE/stdint.h
+ for i in $all_c
+ do
+ echo "i=$i"
+
+ group=
+ #group=$INCLUDE/`dirname $i`.h
+ #touch $group
+ if test -f groups.txt
+ then
+ j=`sed -ne "s:^$i \\(.*\\):\\1:p" groups.txt`
+ if test -n "$j"
+ then
+ #j=$INCLUDE/$j
+ #echo $j >>$group.uses
+ group=$j
+ touch $group
+ fi
+ fi
+ echo "group=$group"
+
+ $ROOT/cproto-4.6/cproto -i$INCLUDE -I../as -Dvax -t -H -s $i |sed -ne '2,$p' >$i.allprotos
+ if ! grep -qv '^int main __P((' $i.allprotos
+ then
+ echo -n >$i.allprotos
+ fi
+
+ grep "^static " <$i.allprotos >a
+ if test -s a
+ then
+ mv a $i.protos
+ fi
+
+ grep -v "^static " <$i.allprotos >a
+ if test -s a
+ then
+ if test -z "$group"
+ then
+ cp $i.allprotos $i.protos
+ else
+ (
+ cat <<EOF
+
+/* $i */
+EOF
+ cat a
+ ) >>$group.protos
+ fi
+
+ protos="`sed -ne 's/^.*[^0-9A-Za-z_]\([A-Za-z_][0-9A-Za-z_]*\) __P((.*))\\( NORETURN\\)\\?;$/\1/p' a`"
+ echo "protos=$protos"
+
+ pattern=
+ prefix=
+ for j in $protos
+ do
+ pattern="$pattern$prefix$j"
+ prefix='\|'
+ done
+ echo "pattern=$pattern"
+
+ grep "[^0-9A-Za-z_]\\($pattern\\)[ ]*(" oldprotos.temp >a
+ if test -s a
+ then
+ mv a $i.oldprotos
+ grep -v "^$group:" $i.oldprotos
+ fi
+ fi
+ done
+ rm $INCLUDE/stdint.h $INCLUDE/stdarg.h
+ mv $INCLUDE/varargs.h.save $INCLUDE/varargs.h
+ sed -e 's/^\/\*AAA\(.*\)\*\/$/\1/' -i $std_h
+fi
+
+all_h=`echo *.h`
+if test "$all_h" = "*.h"
+then
+ all_h=
+fi
+all_h="$all_h ../as/asnumber.h ../as/instrs.h"
+#all_h=`find . -type f -name '*.h' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_h=`find $INCLUDE -type f -name '*.h' -print |LC_ALL=C sort`
+
+if test -z "$1" || test $1 -eq 2
+then
+ echo "===stage 2==="
+
+ all_c_nocomm=
+ all_c_protos_nocomm=
+ for i in $all_c
+ do
+ $ROOT/scripts/nocomment <$i |$ROOT/scripts/nostring >$i.nocomm
+ all_c_nocomm="$all_c_nocomm $i.nocomm"
+ if test -f $i.protos
+ then
+ $ROOT/scripts/nocomment <$i.protos |$ROOT/scripts/nostring >$i.protos.nocomm
+ all_c_protos_nocomm="$all_c_protos_nocomm $i.protos.nocomm"
+ fi
+ done
+
+ all_h_nocomm=
+ all_h_protos_nocomm=
+ for i in $all_h
+ do
+ $ROOT/scripts/nocomment <$i |$ROOT/scripts/nostring >$i.nocomm
+ all_h_nocomm="$all_h_nocomm $i.nocomm"
+ if test -f $i.protos
+ then
+ $ROOT/scripts/nocomment <$i.protos |$ROOT/scripts/nostring >$i.protos.nocomm
+ all_h_protos_nocomm="$all_h_protos_nocomm $i.protos.nocomm"
+ fi
+ done
+
+ for i in $std_h
+ do
+ $ROOT/scripts/nocomment <$i |$ROOT/scripts/nostring >$i.nocomm
+ done
+
+ if test -f conflicts.txt
+ then
+ sed -e 's/^/:/;s/ /::/g;s/$/:/' <conflicts.txt >conflicts.temp
+ else
+ touch conflicts.temp
+ fi
+
+ for i in $all_h $std_h
+ do
+ echo "i=$i"
+ h=`echo $i |sed -e "s:^$INCLUDE/::"`
+ echo "h=$h"
+
+ macros="`sed -ne 's/^#[ ]*define[ ]\+\([A-Za-z_][0-9A-Za-z_]*\).*/\1/p' $i.nocomm |grep -v '^\(NULL\|__P\)$'`"
+ echo "macros=$macros"
+ typedefs="`sed -ne 's/^\(.*[^0-9A-Za-z_]\)\?typedef[^0-9A-Za-z_]\(.*[^0-9A-Za-z_]\)\?\([A-Za-z_][0-9A-Za-z_]*\)[ ]*\(\[[ 0-9]*\][ ]*\)\?;.*/\3/p' $i.nocomm; sed -ne 's/^}[ ]*\([A-Za-z_][0-9A-Za-z_]*\)[ ]*;.*/\1/p' $i.nocomm`"
+ echo "typedefs=$typedefs"
+ structs="`sed -ne 's/^\(.*[^0-9A-Za-z_]\)\?struct[ ]\+\([A-Za-z_][0-9A-Za-z_]*\)[ ]*{.*/\2/p' $i.nocomm`"
+ echo "structs=$structs"
+ unions="`sed -ne 's/^\(.*[^0-9A-Za-z_]\)\?union[ ]\+\([A-Za-z_][0-9A-Za-z_]*\)[ ]*{.*/\2/p' $i.nocomm`"
+ echo "unions=$unions"
+ if test -f $i.protos.nocomm
+ then
+ protos="`sed -ne 's/^.*[^0-9A-Za-z_]\([A-Za-z_][0-9A-Za-z_]*\) __P((.*))\\( NORETURN\\)\\?;$/\1/p' $i.nocomm $i.protos.nocomm`"
+ else
+ protos="`sed -ne 's/^.*[^0-9A-Za-z_]\([A-Za-z_][0-9A-Za-z_]*\) __P((.*))\\( NORETURN\\)\\?;$/\1/p' $i.nocomm`"
+ fi
+ echo "protos=$protos"
+
+ rm -f $i.usedby
+
+ prefix0=
+ pattern0=
+
+ pattern1=
+ prefix1=
+ for j in $macros
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ for j in $typedefs
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ for j in $structs
+ do
+ pattern1="$pattern1${prefix1}struct[ ]\\+$j"
+ prefix1='\|'
+ done
+ for j in $unions
+ do
+ pattern1="$pattern1${prefix1}union[ ]\\+$j"
+ prefix1='\|'
+ done
+ echo "pattern1=$pattern1"
+ if test -n "$pattern1"
+ then
+ pattern0="$pattern0$prefix0\\(.*[^0-9A-Za-z_]\\)\\?\\($pattern1\\)\\([^0-9A-Za-z_].*\\)\\?"
+ prefix0='\|'
+ fi
+
+ pattern1=
+ prefix1=
+ for j in $protos
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ echo "pattern1=$pattern1"
+ if test -n "$pattern1"
+ then
+ pattern0="$pattern0$prefix0\\(.*[^0-9A-Za-z_]\\)\\?\\($pattern1\\)[ ]*(.*"
+ prefix0='\|'
+ fi
+
+ echo "pattern0=$pattern0"
+
+ if test -n "$pattern0" && test -n "$all_c_nocomm$all_c_protos_nocomm$all_h_protos_nocomm"
+ then
+ grep -H "^\\($pattern0\\)$" $all_c_nocomm $all_c_protos_nocomm $all_h_protos_nocomm |grep -v "^$i\.protos.nocomm:" >a
+ if test -s a
+ then
+ cat a >>$i.usedby
+ for j in `sed -e 's/\.protos\.nocomm:.*//; s/\.nocomm:.*//' <a |sort |uniq`
+ do
+ echo "j=$j"
+ k=`echo $j |sed -e "s:^$INCLUDE/::"`
+ echo "k=$k"
+ echo "conflictpattern=\":$h:.*:$k:\\|:$k:.*:$h:\""
+ if ! grep -q ":$h:.*:$k:\\|:$k:.*:$h:" conflicts.temp
+ then
+ echo $i >>$j.uses
+ else
+ echo "found"
+ fi
+ done
+ fi
+ fi
+
+ pattern0=
+ prefix0=
+
+ pattern1=
+ prefix1=
+ for j in $macros
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ for j in $typedefs
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ echo "pattern1=$pattern1"
+ if test -n "$pattern1"
+ then
+ pattern0="$pattern0$prefix0\\(.*[^0-9A-Za-z_]\\)\\?\\($pattern1\\)\\([^0-9A-Za-z_].*\\)\\?"
+ prefix0='\|'
+ fi
+
+ pattern1=
+ prefix1=
+ for j in $structs
+ do
+ pattern1="$pattern1${prefix1}struct[ ]\\+$j"
+ prefix1='\|'
+ done
+ for j in $unions
+ do
+ pattern1="$pattern1${prefix1}union[ ]\\+$j"
+ prefix1='\|'
+ done
+ echo "pattern1=$pattern1"
+ if test -n "$pattern1"
+ then
+ pattern0="$pattern0$prefix0\\(.*[^0-9A-Za-z_]\\)\\?\\($pattern1\\)\\([^ *0-9A-Za-z_].*\\|[ ]\\+\\([^*].*\\)\\?\\)\\?"
+ prefix0='\|'
+ fi
+
+ pattern1=
+ prefix1=
+ for j in $protos
+ do
+ pattern1="$pattern1$prefix1$j"
+ prefix1='\|'
+ done
+ echo "pattern1=$pattern1"
+ if test -n "$pattern1"
+ then
+ pattern0="$pattern0$prefix0\\(.*[^0-9A-Za-z_]\\)\\?\\($pattern1\\)[ ]*(.*"
+ prefix0='\|'
+ fi
+
+ echo "pattern0=$pattern0"
+
+ if test -n "$pattern0" && test -n "$all_h_nocomm"
+ then
+ grep -H "^\\($pattern0\\)$" $all_h_nocomm |grep -v "^$i\.nocomm:" >a
+ if test -s a
+ then
+ cat a >>$i.usedby
+ for j in `sed -e 's/\.nocomm:.*//' <a |sort |uniq`
+ do
+ echo "j=$j"
+ k=`echo $j |sed -e "s:^$INCLUDE/::"`
+ echo "k=$k"
+ echo "conflictpattern=\":$h:.*:$k:\\|:$k:.*:$h:\""
+ if ! grep -q ":$h:.*:$k:\\|:$k:.*:$h:" conflicts.temp
+ then
+ echo $i >>$j.uses
+ else
+ echo "found"
+ fi
+ done
+ fi
+ fi
+ done
+fi
+
+if test -z "$1" || test $1 -eq 3
+then
+ echo "===stage 3==="
+
+ for i in $all_h
+ do
+ echo "i=$i"
+ rm -f xx*
+ csplit -b '%05d' -q $i '/^#/' '{*}'
+ if test -f xx00001 && ! $ROOT/scripts/nocomment <xx00000 |grep -q '[^ ]'
+ then
+ for j in xx*
+ do
+ :
+ done
+ echo "j=$j"
+ define="`sed -ne 's/^#[ ]*ifndef[ ]\+\([A-Za-z_][0-9A-Za-z_]*\).*/\1/p' xx00001`"
+ echo "define=$define"
+ if test -n "$define" && grep -q '^#[ ]*endif$' $j && ! grep -v "^#" $j |$ROOT/scripts/nocomment |grep -q '[^ ]'
+ then
+ sed -e "s/^#[ ]*ifndef[ ]\\+$define/\\/\\*&\\*\\//" -i xx00001
+ sed -e "s/^\\(#[ ]*define[ ]\\+$define\\)[ ]*$/\\/\\*\1\\*\\//" -i xx00002
+ sed -e 's/^#[ ]*endif$/\/\*&\*\//' -i $j
+ cat xx* >a
+ iflevel=0
+ for j in `sed -ne 's/^#[ ]*\(if\|ifdef\|ifndef\)[^0-9A-Za-z_].*/1/p; s/^#[ ]*endif$/-1/p' a`
+ do
+ iflevel=`expr $iflevel + $j`
+ if test $iflevel -lt 0
+ then
+ break
+ fi
+ done
+ echo "iflevel=$iflevel"
+ if test $iflevel -eq 0
+ then
+ mv a $i
+ fi
+ fi
+ fi
+ done
+
+ for i in $all_c $all_h
+ do
+ echo "i=$i"
+ rm -f xx*
+ csplit -b '%05d' -q $i '/^#[ ]*include[^0-9A-Za-z_]/' '{*}'
+ for j in xx*
+ do
+ sed -e 's/^#[ ]*include[ ]*\(<[^>]*>\|"[^"]*"\)/\/\*&\*\//' -i $j
+ if grep -v "^#[ ]*include[^0-9A-Za-z_]" $j |sed -e '/^#[ ]*if.*SCCS\|lint/,/^#[ ]*endif/s/.*//' |$ROOT/scripts/nocomment |grep -q '[^ ]'
+ then
+ break
+ fi
+ done
+ cat xx* >$i
+ done
+
+ for i in $all_c
+ do
+ echo "i=$i"
+
+ if test -s $i.protos
+ then
+ pattern="`sed -ne '1{s/\*/\\\*/g; s/ __P((.*));/(/p}' $i.allprotos`"
+ echo "pattern=$pattern"
+ rm -f xx*
+ csplit -q $i "/^$pattern/"
+ (
+ cat xx00
+ if test `wc -l <$i.protos` -ge `wc -l <$i.allprotos`
+ then
+ cat <<EOF
+#ifndef __P
+#ifdef __STDC__
+#define __P(args) args
+#else
+#define __P(args) ()
+#endif
+#endif
+
+EOF
+ fi
+ cat $i.protos
+ if test -f xx01
+ then
+ echo
+ cat xx01
+ fi
+ ) >$i
+ fi
+
+ rm -f a
+ if test -s $i.uses
+ then
+ LC_ALL=C sort <$i.uses |uniq >a
+
+ pattern=
+ prefix=
+ for j in `sed -e "s:^$INCLUDE/::" a`
+ do
+ pattern="$pattern$prefix$j"
+ prefix='\|'
+ done
+ echo "pattern=$pattern"
+
+ sed -e "s:^#[ ]*include[ ]*\\(<\\($pattern\\)>\\|\"\\($pattern\\)\"\\):\\/\\*&\\*\\/:" -i $i
+ #sed -e "s:^#[ ]*include[ ]*<\\($pattern\\)>:\\/\\*&\\*\\/:" -i $i
+ fi
+
+ (
+ if test -s a
+ then
+ sed -e "s:.*:#include \"&\":; s:\"$INCLUDE/\\(.*\\)\":<\\1>:; s:^#include <varargs.h>$:#ifdef __STDC__\\n#include <stdarg.h>\\n#define _va_start(argp, arg) va_start(argp, arg)\\n#else\\n#include <varargs.h>\\n#define _va_start(argp, arg) va_start(argp)\\n#endif:" a
+ echo
+ fi
+ sed -e 's/\([^0-9A-Za-z_]\)va_start(argp);/\1_va_start(argp, fmt);/' $i
+ ) |$ROOT/scripts/newline >b
+ mv b $i
+ done
+
+ for i in $all_h
+ do
+ echo "i=$i"
+ h=`echo $i |sed -e "s:^$INCLUDE/::"`
+ echo "h=$h"
+
+ rm -f a
+ if test -s $i.uses
+ then
+ LC_ALL=C sort <$i.uses |uniq >a
+
+ pattern=
+ prefix=
+ for j in `sed -e "s:^$INCLUDE/::" a`
+ do
+ pattern="$pattern$prefix$j"
+ prefix='\|'
+ done
+ echo "pattern=$pattern"
+
+ sed -e "s:^#[ ]*include[ ]*\\(<\\($pattern\\)>\\|\"\\($pattern\\)\"\\):\\/\\*&\\*\\/:" -i $i
+ #sed -e "s:^#[ ]*include[ ]*<\\($pattern\\)>:\\/\\*&\\*\\/:" -i $i
+ fi
+
+ name=_`echo $h |tr '.\-/abcdefghijklmnopqrstuvwxyz' '___ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_
+ echo "name=$name"
+ (
+ cat <<EOF
+#ifndef $name
+#define $name
+
+EOF
+ if test -s a
+ then
+ sed -e "s:.*:#include \"&\":; s:\"$INCLUDE/\\(.*\\)\":<\\1>:; s:^#include <varargs.h>$:#ifdef __STDC__\\n#include <stdarg.h>\\n#endif:" a
+ echo
+ fi
+ cat $i
+ if test -s $i.protos
+ then
+ echo
+ #if echo $h |grep -q '^\(net\|netimp\|netinet\|netns\|sys\|vax\|vaxif\|vaxmba\|vaxuba\)/'
+ #then
+ # echo "#ifndef KERNEL"
+ #fi
+ cat <<EOF
+#ifndef __P
+#ifdef __STDC__
+#define __P(args) args
+#else
+#define __P(args) ()
+#endif
+#endif
+EOF
+ cat $i.protos
+ #if echo $h |grep -q '^\(net\|netimp\|netinet\|netns\|sys\|vax\|vaxif\|vaxmba\|vaxuba\)/'
+ #then
+ # echo "#endif"
+ #fi
+ fi
+ cat <<EOF
+
+#endif
+EOF
+ ) |$ROOT/scripts/newline >b
+ mv b $i
+ done
+fi
+
+if test -z "$1" || test $1 -eq 4
+then
+ echo "===stage 4==="
+
+ # checking header loops
+ if test -n "$all_h"
+ then
+ grep -H '^#include <[^>]*>' $all_h |\
+ sed -e "s:^\(.*\)\:#include <\(.*\)>:\1 \2:" |\
+ tsort >a
+ fi
+
+ # removing useless extra header inclusions that are pulled in anyway
+ touch $INCLUDE/stdarg.h
+ rm -f a
+ for i in $all_h $std_h
+ do
+ echo "i=$i"
+ h=`echo $i |sed -e "s:^$INCLUDE/::"`
+ echo "h=$h"
+
+ pattern=
+ prefix=
+ cp $i temp.c
+ for j in `cpp -nostdinc -I$INCLUDE -Dvax -DNCMD=1 -DNRSP=1 -M temp.c`
+ do
+ echo "j=$j"
+ case $j in
+ $INCLUDE/stdarg.h)
+ # system header files are not supposed to define stdarg.h, even if
+ # (like vfprintf etc) they have va_list paramters, it is silly and
+ # we ignore this restriction, but clients shouldn't rely on this
+ # (anyway, the above cpp command defines __STDC__ so we do not pick
+ # up any dependency on varargs.h, hence let's keep it symmetrical)
+ ;;
+ *.h)
+ k=`echo $j |sed -e "s:^$INCLUDE/::"`
+ echo "k=$k"
+ echo "$h $k" >>a
+ pattern="$pattern$prefix$k"
+ prefix='\|'
+ ;;
+ esac
+ done
+ echo "pattern=$pattern"
+ if test -n "$pattern"
+ then
+ sed -e "s:^#include \\(<\\($pattern\\)>\\|\"\\($pattern\\)\"\\)$:/\\*& $h\\*/:" -i `grep -H "^#include \\(<$h>\\|\"$h\"\\)$" $all_c $all_h |sed -e 's/:.*//'`
+ #sed -e "s:^#include <\\($pattern\\)>$:/\\*& $h\\*/:" -i `grep -H "^#include <$h>$" $all_c $all_h |sed -e 's/:.*//'`
+ fi
+ done
+ rm -f $INCLUDE/stdarg.h temp.c
+ tsort <a >b
+fi
+
+#if test -z "$1" || test $1 -eq 5
+#then
+# echo "===stage 5==="
+# for i in . arpa protocols
+# do
+# echo "i=$i"
+# for j in $ROOT/include/$i/*.h
+# do
+# echo "j=$j"
+# cp $INCLUDE/$i/`basename $j` $ROOT/include/$i
+# done
+# done
+# for i in compat-4.1 compat-sys5 gen inet net ns stdio sys
+# do
+# echo "i=$i"
+# cp $INCLUDE/$i.h $ROOT/include
+# done
+# for i in net netimp netinet netns vax vaxif vaxmba vaxuba
+# do
+# echo "i=$i"
+# for j in $ROOT/sys/$i/*.h
+# do
+# echo "j=$j"
+# cp $INCLUDE/$i/`basename $j` $ROOT/sys/$i
+# done
+# done
+# for i in $ROOT/sys/h/*.h
+# do
+# echo "i=$i"
+# cp $INCLUDE/sys/`basename $i` $ROOT/sys/h
+# done
+#fi
#include "defs.h"
-char BADEQ[];
-char NOMATCH[];
-char BADVAR[];
-char BADCOM[];
+extern char BADEQ[];
+extern char NOMATCH[];
+extern char BADVAR[];
+extern char BADCOM[];
-struct map txtmap;
-struct map datmap;
+extern struct map txtmap;
+extern struct map datmap;
short executing;
char *lp;
-short fcor;
+extern short fcor;
short fsym;
short mkfault;
-char *errflg;
+extern char *errflg;
-char lastc;
+extern char lastc;
char eqformat[512] = "z";
char stformat[512] = "X\"= \"^i";
-long dot;
+extern long dot;
long ditto;
short dotinc;
short lastcom = '=';
-long var[];
+extern long var[];
long locval;
long locmsk;
-short pid;
+extern short pid;
long expv;
-long adrval;
-short adrflg;
-long cntval;
-short cntflg;
+extern long adrval;
+extern short adrflg;
+extern long cntval;
+extern short cntflg;
char wformat[1];
char savc;
long w, savdot;
- char*CHECKME savlp=lp;
+ char *savlp=lp;
if (buf) {
if (*buf=='\n') {
return(0);
lp--; lastcom=defcom;
}
- switch(lastcom&0177) {
+ switch(lastcom&0x7f) {
case '/':
itype=DSP; ptype=DSYM;
goto trystar;
trystar:
- if (rdc()=='*') { lastcom |= 0200; }NEWLINEelse { lp--; }
- if (lastcom&0200) {
+ if (rdc()=='*') { lastcom |= 0x80; } else { lp--; }
+ if (lastcom&0x80) {
itype |= STAR; ptype = (DSYM+ISYM)-ptype;
}
if (eqcom) { error(BADEQ); }
dotinc=(longpr?4:2); savdot=dot;
expr(1); locval=expv;
- if (expr(0)) { locmsk=expv; }NEWLINEelse { locmsk = -1L; }
+ if (expr(0)) { locmsk=expv; } else { locmsk = -1L; }
if (!longpr) { locmsk &= 0xFFFF; locval &= 0xFFFF; }
for(;;) {
w=get(dot,itype);
put(dot,itype,expv);
}
else {
- put(dot,itype,itol(get(dot+2,itype),expv));
+ put(dot,itype,((get(dot+2,itype)&0xFFFFL)<<16)|(expv&0xFFFFL));
}
savdot=dot;
_printf("=%8t"); exform(1,wformat,itype,ptype);
flushbuf();
} while (rdc()==';');
- if (buf) { lp=savlp; }NEWLINEelse { lp--; }
+ if (buf) { lp=savlp; } else { lp--; }
return(adrflg && dot!=0);
}
--- /dev/null
+../as/asnumber.h assert.h
+access.c sys/map.h
+command.c sys/map.h
+head.h sys/map.h
+mode.h sys/map.h
+print.c sys/map.h
+runpcs.c sys/map.h
#include <a.out.h>
#include <sys/ptrace.h>
-#include "mac.h"
#include "mode.h"
#include "head.h"
-/* _access modes */
+/* access modes */
#define RD 0
#define WT 1
#define MAXPOS 80
#define MAXLIN 128
-/* long to ints and back (puns) */
-union {
- short I[2];
- long L;
-} itolws;
-
-#ifndef vax
-#define leng(a) ((long)((unsigned)(a)))
-#define shorten(a) ((int)(a))
-#define itol(a,b) (itolws.I[0]=(a), itolws.I[1]=(b), itolws.L)
-#else
-#define leng(a) itol(0,a)
-#define shorten(a) ((short)(a))
-#define itol(a,b) (itolws.I[0]=(b), itolws.I[1]=(a), itolws.L)
-#endif
-
/* result type declarations */
long inkdot();
-unsigned get();
-unsigned chkget();
-char*CHECKME exform();
+unsigned get();
+unsigned chkget();
+char *exform();
long round();
-struct bkpt*CHECKME scanbkpt();
+struct bkpt *scanbkpt();
void fault();
-struct pcb pcb;
-int kernel;
-int kcore;
-struct pte *sbr;
-int slr;
-int masterpcbb;
+extern struct pcb pcb;
+extern int kernel;
+extern int kcore;
+extern struct pte *sbr;
+extern int slr;
+extern int masterpcbb;
#include "defs.h"
-char BADSYM[];
-char BADVAR[];
-char BADKET[];
-char BADSYN[];
-char NOCFN[];
-char NOADR[];
-char BADLOC[];
+extern char BADSYM[];
+extern char BADVAR[];
+extern char BADKET[];
+extern char BADSYN[];
+extern char NOCFN[];
+extern char NOADR[];
+extern char BADLOC[];
intptr_t lastframe;
intptr_t savlastf;
-char *lp;
-short radix;
-char *errflg;
+extern char *lp;
+extern short radix;
+extern char *errflg;
long localval;
char isymbol[1024];
-char lastc,peekc;
+extern char lastc,peekc;
-long dot;
-long ditto;
-short dotinc;
-long var[];
-long expv;
+extern long dot;
+extern long ditto;
+extern short dotinc;
+extern long var[];
+extern long expv;
{
readsym();
do {
- if (localsym(frame)==0) { error(BADLOC); }
+/* Nick added ",frame" below */
+/* it is supposed to be the pointer to the arguments of the current frame */
+/* our caller has taken frame from _FP just prior to calling us */
+/* possibly it could have got argp from _AP in the same manner and sent here */
+/* but it doesn't seem completely clear, see calls vs callg stuff in print.c */
+/* we will treat it as the callg case where argp is set to frame as fallback */
+ if (localsym(frame,frame)==0) { error(BADLOC); }
expv=localval;
} while (!eqsym(cursym->n_un.n_name,isymbol,'~'));
}
#include "defs.h"
-char BADMOD[];
-char NOFORK[];
-char ADWRAP[];
+extern char BADMOD[];
+extern char NOFORK[];
+extern char ADWRAP[];
-short mkfault;
-char *lp;
-long maxoff;
+extern short mkfault;
+extern char *lp;
+extern long maxoff;
intptr_t sigint;
intptr_t sigqit;
-char *errflg;
-char lastc,peekc;
-long dot;
-short dotinc;
-long expv;
-long var[];
+extern char *errflg;
+extern char lastc,peekc;
+extern long dot;
+extern short dotinc;
+extern long expv;
+extern long var[];
char *fphack;
}
}
-char*CHECKME
+char *
exform(fcount,ifp,itype,ptype)
short fcount;
char *ifp;
long savdot, wx;
char *fp;
char c, modifier, longpr;
- double fw;
- struct{
- long sa;
- short sb,sc;
- };
+ union {
+ double fw;
+ struct {
+ long sa;
+ short sb,sc;
+ } fw_st;
+ } fw_un;
while (fcount>0) {
fp = ifp; c = *fp;
else {
w=get(dot,itype);
if (longpr) {
- wx=itol(get(inkdot(2),itype),w);
+ wx=((get(inkdot(2),itype)&0xFFFFL)<<16)|(w&0xFFFFL);
}
else {
wx=w;
}
}
if (c=='F') {
- fw.sb=get(inkdot(4),itype);
- fw.sc=get(inkdot(6),itype);
+ fw_un.fw_st.sb=get(inkdot(4),itype);
+ fw_un.fw_st.sc=get(inkdot(6),itype);
}
if (errflg) { return(fp); }
if (mkfault) { error(0); }
case 'c': case 'C':
if (modifier=='C') {
- printesc(w&0377);
+ printesc(w&0xff);
}
else {
- printc(w&0377);
+ printc(w&0xff);
}
dotinc=1; break;
case 'b': case 'B':
- _printf("%-8o", w&0377); dotinc=1; break;
+ _printf("%-8o", w&0xff); dotinc=1; break;
case '1':
- _printf("%-8r", w&0377); dotinc=1; break;
+ _printf("%-8r", w&0xff); dotinc=1; break;
case '2':
case 'w':
case 's': case 'S':
savdot=dot; dotinc=1;
- while ((c=get(dot,itype)&0377) && errflg==0) {
+ while ((c=get(dot,itype)&0xff) && errflg==0) {
dot=inkdot(1);
if (modifier == 'S') {
printesc(c);
_printf("%-16D", wx); break;
case 'f':
- fw = 0;
- fw.sa = wx;
+ fw_un.fw = 0;
+ fw_un.fw_st.sa = wx;
if ((wx & ~0xFFFF00FF) == 0x8000) {
_printf("(reserved oprnd)");
}
else {
- _printf("%-16.9f", fw);
+ _printf("%-16.9f", fw_un.fw);
}
dotinc=4; break;
case 'F':
- fw.sa = wx;
+ fw_un.fw_st.sa = wx;
if ((wx & ~0xFFFF00FF) == 0x8000) {
_printf("%-32s", "(reserved oprnd)");
}
else {
- _printf("%-32.18F", fw);
+ _printf("%-32.18F", fw_un.fw);
}
dotinc=8; break;
{
#ifndef EDDT
short rc, status, unixpid;
- char*CHECKME argp = lp;
- char*CHECKME getenv(), shell = getenv("SHELL");
+ char *argp = lp;
+ char *getenv(), *shell = getenv("SHELL");
#ifdef VFORK
char oldstlp;
#endif
shell = "/bin/sh";
while (lastc!='\n') { rdc(); }
#ifndef VFORK
- if ((unixpid=fork())==0
+ if ((unixpid=fork())==0)
#else
oldstlp = *lp;
- if ((unixpid=vfork())==0
-#endif) {
+ if ((unixpid=vfork())==0)
+#endif
+ {
signal(SIGINT,sigint); signal(SIGQUIT,sigqit);
*lp=0; execl(shell, "sh", "-c", argp, 0);
_exit(16);
-#ifndef VFORK
}
- else if (unixpid == -1
+#ifndef VFORK
+ else if (unixpid == -1)
#else
- }
- else if (*lp = oldstlp, unixpid == -1
-#endif) {
+ else if (*lp = oldstlp, unixpid == -1)
+#endif
+ {
error(NOFORK);
}
else {
printesc(c)
{
- c &= 0177;
+ c &= 0x7f;
if (c==0177) {
_printf("^?");
}
--- /dev/null
+access.c head.h
+command.c head.h
+expr.c head.h
+format.c head.h
+input.c head.h
+main.c head.h
+message.c head.h
+opset.c head.h
+optab.c head.h
+output.c head.h
+pcs.c head.h
+print.c head.h
+runpcs.c head.h
+setup.c head.h
+sym.c head.h
/* head.h 4.1 81/05/14 */
-intptr_t maxoff;
-intptr_t localval;
+extern long maxoff;
+extern long localval;
-struct nlist *symtab, *esymtab;
-struct nlist *cursym;
-struct nlist *lookup();
+extern struct nlist *symtab, *esymtab;
+extern struct nlist *cursym;
+extern struct nlist *lookup();
-struct exec filhdr;
+extern struct exec filhdr;
-long var[36];
+extern long var[36];
-int xargc;
+extern int xargc;
-struct map txtmap;
-struct map datmap;
-short wtflag;
-short fcor;
-short fsym;
-long maxfile;
-long maxstor;
-short signo;
+extern struct map txtmap;
+extern struct map datmap;
+extern short wtflag;
+extern short fcor;
+extern short fsym;
+extern long maxfile;
+extern long maxstor;
+extern short signo;
-union {
+extern union udot_un {
struct user U;
char UU[ctob(UPAGES)];
} udot;
#define u udot.U
-char *corfil, *symfil;
-
+extern char *corfil, *symfil;
#include "defs.h"
-short mkfault;
+extern short mkfault;
char line[LINSIZ];
short infile;
-char *lp;
+extern char *lp;
char peekc,lastc = '\n';
short eof;
}
rdc()
-{ do {NEWLINE readchar();
+{
+ do {
+ readchar();
} while (lastc==' ' || lastc=='\t');
return(lastc);
}
/*
* adb - main command loop and error/interrupt handling
*/
+#include <setjmp.h>
#include "defs.h"
-char NOEOR[];
-
-short mkfault;
-short executing;
-short infile;
-char *lp;
-long maxoff;
-long maxpos;
-intptr_t sigint;
-intptr_t sigqit;
-short wtflag;
-long maxfile;
-char *errflg;
+extern char NOEOR[];
+
+extern short mkfault;
+extern short executing;
+extern short infile;
+extern char *lp;
+extern long maxoff;
+extern long maxpos;
+extern intptr_t sigint;
+extern intptr_t sigqit;
+extern short wtflag;
+extern long maxfile;
+extern char *errflg;
long exitflg;
-char lastc;
-short eof;
+extern char lastc;
+extern short eof;
-short lastcom;
+extern short lastcom;
long maxoff = MAXOFF;
long maxpos = MAXPOS;
char *Ipath = "/usr/lib/adb";
+/* from defs.h */
+struct pcb pcb;
+int kernel;
+int kcore;
+struct pte *sbr;
+int slr;
+int masterpcbb;
+
+/* from head.h */
+struct nlist *symtab, *esymtab;
+struct nlist *cursym;
+struct exec filhdr;
+int xargc;
+union udot_un udot;
+
+/* use this instead of original setexit() / reset() */
+jmp_buf reset_buf;
+
main(argc, argv)
register char **argv;
int argc;
signal(SIGINT, fault);
}
sigqit = signal(SIGQUIT, SIG_IGN);
- setexit();
+ /*setexit();*/ setjmp(reset_buf);
if (executing)
delbp();
executing = 0;
lp=0; rdc(); lp--;
if (eof) {
if (infile) {
- iclose(-1, 0); eof=0; reset();
+ iclose(-1, 0); eof=0; /*reset();*/ longjmp(reset_buf, 1);
} else
done();
} else
{
errflg = n;
iclose(0, 1); oclose();
- reset();
+ /*reset();*/ longjmp(reset_buf, 1);
}
/*
*
*/
-#include "mac.h"
#include "mode.h"
-char[]CHECKME VERSION = "\nVERSION VM/VAX4.3 DATE 8/11/83\n";
+char VERSION[] = "\nVERSION VM/VAX4.3 DATE 8/11/83\n";
-char[]CHECKME BADMOD = "bad modifier";
-char[]CHECKME BADCOM = "bad command";
-char[]CHECKME BADSYM = "symbol not found";
-char[]CHECKME BADLOC = "automatic variable not found";
-char[]CHECKME NOCFN = "c routine not found";
-char[]CHECKME NOMATCH = "cannot locate value";
-char[]CHECKME NOBKPT = "no breakpoint set";
-char[]CHECKME BADKET = "unexpected ')'";
-char[]CHECKME NOADR = "address expected";
-char[]CHECKME NOPCS = "no process";
-char[]CHECKME BADVAR = "bad variable";
-char[]CHECKME EXBKPT = "too many breakpoints";
-char[]CHECKME A68BAD = "bad a68 frame";
-char[]CHECKME A68LNK = "bad a68 link";
-char[]CHECKME ADWRAP = "address wrap around";
-char[]CHECKME BADEQ = "unexpected `='";
-char[]CHECKME BADWAIT = "wait error: process disappeared!";
-char[]CHECKME ENDPCS = "process terminated";
-char[]CHECKME NOFORK = "try again";
-char[]CHECKME BADSYN = "syntax error";
-char[]CHECKME NOEOR = "newline expected";
-char[]CHECKME SZBKPT = "bkpt: command too long";
-char[]CHECKME BADFIL = "bad file format";
-char[]CHECKME BADNAM = "not enough space for symbols";
-char[]CHECKME LONGFIL = "filename too long";
-char[]CHECKME NOTOPEN = "cannot open";
-char[]CHECKME BADMAG = "bad core magic number";
-char[]CHECKME TOODEEP = "$<< nesting too deep";
+char BADMOD[] = "bad modifier";
+char BADCOM[] = "bad command";
+char BADSYM[] = "symbol not found";
+char BADLOC[] = "automatic variable not found";
+char NOCFN[] = "c routine not found";
+char NOMATCH[] = "cannot locate value";
+char NOBKPT[] = "no breakpoint set";
+char BADKET[] = "unexpected ')'";
+char NOADR[] = "address expected";
+char NOPCS[] = "no process";
+char BADVAR[] = "bad variable";
+char EXBKPT[] = "too many breakpoints";
+char A68BAD[] = "bad a68 frame";
+char A68LNK[] = "bad a68 link";
+char ADWRAP[] = "address wrap around";
+char BADEQ[] = "unexpected `='";
+char BADWAIT[] = "wait error: process disappeared!";
+char ENDPCS[] = "process terminated";
+char NOFORK[] = "try again";
+char BADSYN[] = "syntax error";
+char NOEOR[] = "newline expected";
+char SZBKPT[] = "bkpt: command too long";
+char BADFIL[] = "bad file format";
+char BADNAM[] = "not enough space for symbols";
+char LONGFIL[] = "filename too long";
+char NOTOPEN[] = "cannot open";
+char BADMAG[] = "bad core magic number";
+char TOODEEP[] = "$<< nesting too deep";
#ifdef __STDC__
#include <stdint.h>
#else
-typedef long intptr_t
+typedef long intptr_t;
#endif
typedef char bool;
#include "head.h"
#endif SDB
-long dot;
-short dotinc;
+extern long dot;
+extern short dotinc;
long insoutvar[36];
#ifdef ADB
-long var[36];
+extern long var[36];
#endif ADB
#undef INSTTAB
#include "instrs.h"
-char*CHECKME regname[];
-char*CHECKME fltimm[];
+extern char *regname[];
+extern char *fltimm[];
unsigned type, space, incp;
/*
* Definitions for registers and for operand classes
*/
-char *insregname(); /* how to print a register */
+static char *insregname(); /* how to print a register */
#define R_PC 0xF
* Definitions for large numbers
*/
#include "asnumber.h"
-typedef struct as_number *numberp;
-numberp snarf();
-numberp snarfreloc();
+static struct as_number *snarf();
+static struct as_number *snarfreloc();
/*
* Definitions for special instructions
*/
}
}
-u_char snarfuchar();
+static u_char snarfuchar();
/*
* Global variables for communicating with the minions and printins
*/
#ifdef ADB
_printf(" %R: ", i + base);
#endif ADB
- valuep = snarfreloc(OSIZE, 0);
+ valuep = snarfreloc(OSIZE);
advincp = incp;
incp = baseincp;
dispaddress(valuep, OC_CONS(OC_WDISP, R_PC));
/*
* Snarf up some bytes, and put in the magic relocation flags
*/
-numberp snarfreloc(nbytes)
+static struct as_number *snarfreloc(nbytes)
int nbytes;
{
- numberp back;
+ struct as_number *back;
back = snarf(nbytes);
if (back->num_ulong[0] & magic_masks[nbytes])
back->num_ulong[0] -= magic_compl[nbytes];
* The following code is NOT portable from the PDP 11 to the VAX
* because of the byte ordering problem.
*/
-numberp snarf(nbytes)
+static struct as_number *snarf(nbytes)
int nbytes;
{
register int i;
/*
* Read one single character, and advance the dot
*/
-u_char snarfuchar()
+static u_char snarfuchar()
{
u_char back;
/*
* normal operand; return non zero pointer to register
* name if this is an index instruction.
*/
-char *operandout(mode, optype)
+static char *operandout(mode, optype)
u_char mode;
u_char optype;
{
return(0);
}
-dispaddress(valuep, mode)
- numberp valuep;
+static dispaddress(valuep, mode)
+ struct as_number *valuep;
u_char mode;
{
int regnumber = OC_REGEXT(mode);
#ifdef ADB
if (regnumber == R_PC)
psymoff(valuep->num_ulong[0], type, &insoutfmt[0]);
- else { /* } */
+ else {
_printf(LPRMODE, valuep->num_ulong[0]);
_printf(insoutfmt);
+ _printf("(%s)", insregname(regnumber));
+ }
#endif ADB
#ifdef SDB
if(psymoff(valuep->num_ulong[0], regnumber, &insoutfmt[0])
&& (regnumber != R_PC)){
-#endif SDB
_printf("(%s)", insregname(regnumber));
}
+#endif SDB
savevar((long)valuep->num_ulong[0]);
}
/*
* get a register name
*/
-char *insregname(regnumber)
+static char *insregname(regnumber)
int regnumber;
{
char *r;
/*
* print out a short literal
*/
-shortliteral(mode, optype)
+static shortliteral(mode, optype)
u_char mode;
u_char optype;
{
}
}
-pcimmediate(mode, optype)
+static pcimmediate(mode, optype)
u_char mode;
u_char optype;
{
bignumprint(nbytes, optype);
}
-bignumprint(nbytes, optype)
+static bignumprint(nbytes, optype)
int nbytes;
u_char optype;
{
- numberp valuep;
+ struct as_number *valuep;
int leading_zero = 1;
register int bindex;
register int nindex;
1, "30",
1, "stty",
1, "gtty",
- 0, "_access",
+ 0, "access",
0, "nice",
0, "sleep",
0, "sync",
0, "63",
};
-char*CHECKME regname[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+char *regname[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
"r8", "r9", "r10","r11","ap", "fp", "sp", "pc"};
-char*CHECKME fltimm[] = {
+char *fltimm[] = {
"0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875", "0.9375",
"1.0", "1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875",
"2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75",
#include "defs.h"
#include <stdio.h>
+#include <varargs.h>
-short mkfault;
-short infile;
+extern short mkfault;
+extern short infile;
short outfile = 1;
-long maxpos;
-long maxoff;
-short radix = 16;
+extern long maxpos;
+extern long maxoff;
+extern short radix = 16;
char printbuf[MAXLIN];
char *printptr = printbuf;
char *digitptr;
-char TOODEEP[];
+extern char TOODEEP[];
eqstr(s1, s2)
- register char*CHECKME s1, s2;
+ register char *s1, *s2;
{
register char *es1;
while (*s1++ == *s2) {
}
}
-_printf(fmat,a1)
+_printf(fmat,va_alist)
char *fmat;
- char*CHECKME *a1;
+ va_dcl
{
- char*CHECKME fptr, s;
- short *vptr;
- long *dptr;
- double *rptr;
+ char *fptr, *s;
+ va_list argp;
short width, prec;
char c, adj;
short x, decpt, n;
long lx;
char digits[64];
- fptr = fmat; dptr = vptr = &a1;
+ fptr = fmat; va_start(argp);
while (c = *fptr++) {
if (c!='%') {
printc(c);
}
else {
- if (*fptr=='-') { adj='l'; fptr++; }NEWLINEelse { adj='r'; }
+ if (*fptr=='-') { adj='l'; fptr++; } else { adj='r'; }
width=convert(&fptr);
- if (*fptr=='.') { fptr++; prec=convert(&fptr); }NEWLINEelse { prec = -1; }
+ if (*fptr=='.') { fptr++; prec=convert(&fptr); } else { prec = -1; }
digitptr=digits;
-#ifndef vax
- dptr=rptr=vptr; lx = *dptr; x = *vptr++;
-#else
- rptr=dptr; x = shorten(lx = *dptr++);
-#endif
s=0;
+ /* it seems this is converted from 16-bit code, and */
+ /* is concerned about automatic promotion to signed */
+ /* int, of unsigned shorts that appear to be signed */
switch (c = *fptr++) {
case 'd':
case 'u':
- printnum(x,c,10); break;
+ printnum((short)va_arg(argp, int),c,10); break;
case 'o':
-#ifndef vax
- printoct(0,x,0); break;
-#else
- printoct(itol(0,x),0); break;
-#endif
+ printoct((long)(unsigned short)va_arg(argp, int),0); break;
case 'q':
- lx=x; printoct(lx,-1); break;
+ printoct((long)(short)va_arg(argp, int),-1); break;
case 'x':
-#ifndef vax
- printdbl(0,x,c,16); break;
-#else
- printdbl(itol(0,x),c,16); break;
-#endif
- case 'r':
- printdbl(lx=x,c,radix); break;
- case 'R':
- printdbl(lx,c,radix); vptr++; break;
+ printdbl((long)(unsigned short)va_arg(argp, int),c,16); break;
+ case 'r':
+ printdbl((long)(short)va_arg(argp, int),c,radix); break;
+ case 'R':
+ printdbl(va_arg(argp, long),c,radix); break;
case 'Y':
- printdate(lx); vptr++; break;
+ printdate(va_arg(argp, long)); break;
case 'D':
case 'U':
- printdbl(lx,c,10); vptr++; break;
+ printdbl(va_arg(argp, long),c,10); break;
case 'O':
- printoct(lx,0); vptr++; break;
+ printoct(va_arg(argp, long),0); break;
case 'Q':
- printoct(lx,-1); vptr++; break;
+ printoct(va_arg(argp, long),-1); break;
case 'X':
- printdbl(lx,'x',16); vptr++; break;
+ printdbl(va_arg(argp, long),'x',16); break;
case 'c':
- printc(x); break;
+ printc((short)va_arg(argp, int)); break;
case 's':
-#ifndef vax
- s=x; break;
-#else
- s=lx; break;
-#endif
+ s=va_arg(argp, char *); break;
#ifndef EDDT
case 'f':
case 'F':
#ifdef vax
- dptr++;
- sprintf(s=digits,"%+.16e",*rptr,*(rptr+4)); prec= -1; break;
+ sprintf(s=digits,"%+.16e",va_arg(argp, double)); prec= -1; break;
#else
- vptr += 7;
- s=ecvt(*rptr, prec, &decpt, &n);
+ s=ecvt(va_arg(argp, double), prec, &decpt, &n);
*digitptr++=(n?'-':'+');
*digitptr++ = (decpt<=0 ? '0' : *s++);
if (decpt>0) { decpt--; }
#endif
#endif
case 'm':
- vptr--; break;
+ break;
case 'M':
- width=x; break;
+ width=(short)va_arg(argp, int); break;
case 'T':
case 't':
if (c=='T') {
- width=x;
-#ifndef vax
- }
- else {
- vptr--;
-#else
- }
- else {
- dptr--;
-#endif
+ width=(short)va_arg(argp, int);
}
if (width) {
width -= charpos()%width;
}
break;
default:
-#ifndef vax
- printc(c); vptr--;
-#else
- printc(c); dptr--;
-#endif
+ printc(c);
+ break;
}
if (s==0) {
}
convert(cp)
-register char*CHECKME *cp;
+register char **cp;
{
register char c;
short n;
#endif
dptr=digs;
if (fmat=='D' || fmat=='r') {
- f=itol(lx,ly);
+ f=((lx&0xFFFFL)<<16)|(ly&0xFFFFL);
if (f<0) { *digitptr++='-'; f = -f; }
}
else {
if (lx==-1) {
- *digitptr++='-'; f=leng(-ly);
+ *digitptr++='-'; f=(long)(unsigned)-ly;
}
else {
- f=leng(lx); f *= itol(1,0); f += leng(ly);
+ f=((lx&0xFFFFL)<<16)|(ly&0xFFFFL);
}
if (fmat=='x') { *digitptr++='#'; }
}
#include "defs.h"
-char NOBKPT[];
-char SZBKPT[];
-char EXBKPT[];
-char NOPCS[];
-char BADMOD[];
+extern char NOBKPT[];
+extern char SZBKPT[];
+extern char EXBKPT[];
+extern char NOPCS[];
+extern char BADMOD[];
/* breakpoints */
struct bkpt *bkpthead;
-char *lp;
-char lastc;
+extern char *lp;
+extern char lastc;
-short signo;
-long dot;
-short pid;
-long cntval;
+extern short signo;
+extern long dot;
+extern short pid;
+extern long cntval;
long loopcnt;
long entrypt;
-short adrflg;
+extern short adrflg;
*/
#include "defs.h"
-char LONGFIL[];
-char NOTOPEN[];
-char A68BAD[];
-char A68LNK[];
-char BADMOD[];
+extern char LONGFIL[];
+extern char NOTOPEN[];
+extern char A68BAD[];
+extern char A68LNK[];
+extern char BADMOD[];
-struct map txtmap;
-struct map datmap;
+extern struct map txtmap;
+extern struct map datmap;
-intptr_t lastframe;
-intptr_t callpc;
+extern intptr_t lastframe;
+extern intptr_t callpc;
-short infile;
-short outfile;
-char *lp;
-long maxoff;
-long maxpos;
-short radix;
+extern short infile;
+extern short outfile;
+extern char *lp;
+extern long maxoff;
+extern long maxpos;
+extern short radix;
/* symbol management */
-long localval;
+extern long localval;
/* breakpoints */
-struct bkpt *bkpthead;
+extern struct bkpt *bkpthead;
struct reglist reglist [] = {
"p1lr", _P1LR, &pcb.pcb_p1lr,
long cntval;
short cntflg;
-char*CHECKME signals[] = {
+char *signals[] = {
"",
"hangup",
"interrupt",
for (bkptr=bkpthead; bkptr; bkptr=bkptr->nxtbkpt) {
if (bkptr->flag) {
_printf("%-8.8d",bkptr->count);
- psymoff(leng(bkptr->loc),ISYM,"%24t");
+ psymoff((long)(unsigned)bkptr->loc,ISYM,"%24t");
comptr=bkptr->comm;
while (*comptr) { printc(*comptr++); }
}
#include "defs.h"
-extern struct map txtmap;
+extern struct map txtmap;
-char NOFORK[];
-char ENDPCS[];
-char BADWAIT[];
+extern char NOFORK[];
+extern char ENDPCS[];
+extern char BADWAIT[];
-char *lp;
-intptr_t sigint;
-intptr_t sigqit;
+extern char *lp;
+extern intptr_t sigint;
+extern intptr_t sigqit;
/* breakpoints */
-struct bkpt *bkpthead;
+extern struct bkpt *bkpthead;
-struct reglist reglist[];
+extern struct reglist reglist[];
-char lastc;
+extern char lastc;
-short fcor;
-short fsym;
-char *errflg;
-short errno;
-short signo;
-short sigcode;
+extern short fcor;
+extern short fsym;
+extern char *errflg;
+extern int errno;
+extern short signo;
+extern short sigcode;
-long dot;
-char *symfil;
-short wtflag;
-long pid;
-long expv;
-short adrflg;
-long loopcnt;
+extern long dot;
+extern char *symfil;
+extern short wtflag;
+extern long pid;
+extern long expv;
+extern short adrflg;
+extern long loopcnt;
{
close(fsym); fsym = -1;
#ifndef VFORK
- if ((pid = fork()) == 0
+ if ((pid = fork()) == 0)
#else
- if ((pid = vfork()) == 0
-#endif) {
+ if ((pid = vfork()) == 0)
+#endif)
+ {
ptrace(PT_TRACE_ME,0,0,0);
#ifdef VFORK
signal(SIGTRAP,nullsig);
doexec()
{
- char*CHECKME argl[MAXARG];
+ char *argl[MAXARG];
char args[LINSIZ];
- char*CHECKME p, *ap, filnam;
+ char *p, **ap, *filnam;
extern char *environ;
ap=argl; p=args;
*ap++=symfil;
perror(symfil);
}
-struct bkpt*CHECKME scanbkpt(adr)
+struct bkpt *scanbkpt(adr)
intptr_t adr;
{
register struct bkpt *bkptr;
#include <sys/file.h>
#include <vax/rpb.h>
-off_t datbas; /* offset of the base of the data segment */
-off_t stksiz; /* stack size in the core image */
-short sigcode; /* belongs in head.h */
+off_t datbas; /* offset of the base of the data segment */
+off_t stksiz; /* stack size in the core image */
+extern short sigcode; /* belongs in head.h */
char *symfil = "a.out";
char *corfil = "core";
if (read(fsym, strtab + sizeof (ssiz), ssiz) != ssiz)
goto readerr;
for (sp = symtab; sp < esymtab; sp++)
- if (sp->n_strx)
+ if (sp->n_un.n_strx)
/* SHOULD PERFORM RANGE CHECK HERE */
sp->n_un.n_name = strtab + sp->n_un.n_strx;
nosymt:
physrw(fcor, KVTOPH((int)scb - sizeof (caddr_t)), &addr, 1);
fp = getframe(fcor, addr);
if (fp == 0)
- fp = checkintstack();
+ fp = checkintstack(fcor); /* Nick added fcor argument */
/* search kernel stack? */
if (fp == 0) {
_printf("can't locate stack frame\n");
cursym = 0;
if (symtab)
for (sp = symtab; sp < esymtab; sp++)
- /* SHOULD) {
- SOME OF EQSYM INLINE TO SAVE TIME */
+ /* SHOULD DO SOME OF EQSYM INLINE TO SAVE TIME */
if ((sp->n_type&N_STAB)==0 && eqsym(sp->n_un.n_name, symstr, '_'))
return(cursym = sp);
return (0);
* This is only used for adb and sdb; not for as.
*/
#define INSTTAB
-struct insttab{
+extern struct insttab{
char *iname;
u_char eopcode;
u_char popcode;
#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |LC_ALL=C sort`
#all_c=`find . -type f -name '*.c' -print |sed -e 's:^\./::' |grep -v '^vax/' |LC_ALL=C sort`
+all_h=`echo *.h`
+if test "$all_h" = "*.h"
+then
+ all_h=
+fi
+#all_h=`find . -type f -name '*.h' -print |sed -e 's:^\./::' |LC_ALL=C sort`
+#all_h=`find $INCLUDE -type f -name '*.h' -print |LC_ALL=C sort`
+
if test -z "$1" || test $1 -eq 0
then
echo "===stage 0==="
if test "$1" = 000
then
- git checkout *.c *.h
+ git checkout $all_c $all_h
#rm -rf $ROOT/include $ROOT/sys
#git checkout $ROOT/include $ROOT/sys $all_c
#rm -rf $INCLUDE
echo "j=$j"
k=`echo $j |sed -e "s:^$INCLUDE/::"`
echo "k=$k"
- if ! grep -q ":$h:.*:$k\\|:$k:.*:$h:" conflicts.temp
+ if ! grep -q ":$h:.*:$k:\\|:$k:.*:$h:" conflicts.temp
then
echo $i >>$j.uses
fi
echo "j=$j"
k=`echo $j |sed -e "s:^$INCLUDE/::"`
echo "k=$k"
- if ! grep -q ":$h:.*:$k\\|:$k:.*:$h:" conflicts.temp
+ if ! grep -q ":$h:.*:$k:\\|:$k:.*:$h:" conflicts.temp
then
echo $i >>$j.uses
fi
--- /dev/null
+#!/bin/sh
+sed -ne "s/^x_\\(.*\\):([^()]*): undefined reference to \`x_\\(.*\\)'/\\2 \\1/p" |sort |sed -e 's/\(.*\) \(.*\)/\2 \1/' |uniq --skip-fields=1 |sed -e "s/\\(.*\\) \\(.*\\)/sed -e 's\\/^extern \\\\(.*[^A-Za-z0-9_]\\2[^A-Za-z0-9_].*\\\\)$\\/\\\\1\\/' -i \\1/"