Pre-ansification changes for bin/adb
authorNick Downing <downing.nick@gmail.com>
Wed, 25 Jan 2017 10:18:50 +0000 (21:18 +1100)
committerNick Downing <downing.nick@gmail.com>
Wed, 25 Jan 2017 11:48:42 +0000 (22:48 +1100)
24 files changed:
bin/adb/access.c
bin/adb/ansify.sh [new file with mode: 0755]
bin/adb/command.c
bin/adb/conflicts.txt [new file with mode: 0644]
bin/adb/defs.h
bin/adb/expr.c
bin/adb/format.c
bin/adb/groups.txt [new file with mode: 0644]
bin/adb/head.h
bin/adb/input.c
bin/adb/main.c
bin/adb/message.c
bin/adb/mode.h
bin/adb/opset.c
bin/adb/optab.c
bin/adb/output.c
bin/adb/pcs.c
bin/adb/print.c
bin/adb/runpcs.c
bin/adb/setup.c
bin/adb/sym.c
bin/as/instrs.h
scripts/ansify.sh
scripts/linkerr.sh [new file with mode: 0755]

index 03b91bf..c89d3fa 100644 (file)
@@ -1,11 +1,11 @@
 #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.
  */
@@ -13,13 +13,13 @@ static      char sccsid[] = "@(#)_access.c  4.8 10/13/84";
 #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
@@ -38,7 +38,7 @@ chkget(addr, 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.
diff --git a/bin/adb/ansify.sh b/bin/adb/ansify.sh
new file mode 100755 (executable)
index 0000000..f1385e4
--- /dev/null
@@ -0,0 +1,724 @@
+#!/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
index 9e31e24..526eb64 100644 (file)
@@ -9,37 +9,37 @@ static        char sccsid[] = "@(#)command.c  4.6 10/13/84";
 
 #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;
 
 
 
@@ -55,7 +55,7 @@ char          defcom;
        char            wformat[1];
        char            savc;
        long            w, savdot;
-       char*CHECKME            savlp=lp;
+       char            *savlp=lp;
        if (buf) {
             if (*buf=='\n') {
                  return(0);
@@ -86,7 +86,7 @@ char          defcom;
             lp--; lastcom=defcom;
        }
 
-       switch(lastcom&0177) {
+       switch(lastcom&0x7f) {
 
            case '/':
                itype=DSP; ptype=DSYM;
@@ -101,8 +101,8 @@ char                defcom;
                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;
                }
 
@@ -142,7 +142,7 @@ char                defcom;
                            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);
@@ -167,7 +167,7 @@ char                defcom;
                                      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);
@@ -235,7 +235,7 @@ char                defcom;
 
        flushbuf();
        } while (rdc()==';');
-       if (buf) { lp=savlp; }NEWLINEelse { lp--; }
+       if (buf) { lp=savlp; } else { lp--; }
        return(adrflg && dot!=0);
 }
 
diff --git a/bin/adb/conflicts.txt b/bin/adb/conflicts.txt
new file mode 100644 (file)
index 0000000..0b662e8
--- /dev/null
@@ -0,0 +1,7 @@
+../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
index d99b544..5e6a478 100644 (file)
 #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;
index cc976b7..2a8592e 100644 (file)
@@ -9,13 +9,13 @@ static        char sccsid[] = "@(#)expr.c     4.8 8/11/83";
 
 #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;
@@ -25,19 +25,19 @@ intptr_t            callpc;
 
 
 
-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;
 
 
 
@@ -319,7 +319,13 @@ long               frame;
 {
        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,'~'));
 }
index 7157b33..881dca9 100644 (file)
@@ -9,21 +9,21 @@ static        char sccsid[] = "@(#)format.c   4.3 2/27/86";
 
 #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;
@@ -92,7 +92,7 @@ char          *ifp;
        }
 }
 
-char*CHECKME
+char *
 exform(fcount,ifp,itype,ptype)
 short          fcount;
 char           *ifp;
@@ -105,11 +105,13 @@ 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;
@@ -120,15 +122,15 @@ char              *ifp;
                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); }
@@ -163,18 +165,18 @@ char              *ifp;
 
                    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':
@@ -186,7 +188,7 @@ char                *ifp;
 
                    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);
@@ -229,23 +231,23 @@ char              *ifp;
                        _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;
 
@@ -282,8 +284,8 @@ shell()
 {
 #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
@@ -292,21 +294,22 @@ shell()
                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 {
@@ -321,7 +324,7 @@ shell()
 
 printesc(c)
 {
-       c &= 0177;
+       c &= 0x7f;
        if (c==0177) {
             _printf("^?");
        }
diff --git a/bin/adb/groups.txt b/bin/adb/groups.txt
new file mode 100644 (file)
index 0000000..fd08d48
--- /dev/null
@@ -0,0 +1,15 @@
+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
index a01a8d4..c17e0c9 100644 (file)
@@ -1,32 +1,31 @@
 /*     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;
index 60c96a1..d2b3e78 100644 (file)
@@ -9,10 +9,10 @@ static        char sccsid[] = "@(#)input.c    4.2 8/11/83";
 
 #include "defs.h"
 
-short          mkfault;
+extern short           mkfault;
 char           line[LINSIZ];
 short          infile;
-char           *lp;
+extern char            *lp;
 char           peekc,lastc = '\n';
 short          eof;
 
@@ -25,7 +25,9 @@ char  c;
 }
 
 rdc()
-{      do {NEWLINE     readchar();
+{
+       do {
+               readchar();
        } while (lastc==' ' || lastc=='\t');
        return(lastc);
 }
index 711741d..c5042fb 100644 (file)
@@ -2,32 +2,51 @@ static        char sccsid[] = "@(#)main.c 4.3 4/1/82";
 /*
  * 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;
@@ -63,7 +82,7 @@ another:
                signal(SIGINT, fault);
        }
        sigqit = signal(SIGQUIT, SIG_IGN);
-       setexit();
+       /*setexit();*/ setjmp(reset_buf);
        if (executing)
                delbp();
        executing = 0;
@@ -82,7 +101,7 @@ another:
                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
@@ -127,7 +146,7 @@ error(n)
 {
        errflg = n;
        iclose(0, 1); oclose();
-       reset();
+       /*reset();*/ longjmp(reset_buf, 1);
 }
 
 /*
index c892fd6..3a574c5 100644 (file)
@@ -7,36 +7,35 @@ static        char sccsid[] = "@(#)message.c  4.3 8/11/83";
  *
  */
 
-#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";
index eb83cda..00abdd9 100644 (file)
@@ -12,7 +12,7 @@
 #ifdef __STDC__
 #include <stdint.h>
 #else
-typedef long intptr_t
+typedef long intptr_t;
 #endif
 typedef char bool;
 
index dc6e969..3b99ca8 100644 (file)
@@ -14,23 +14,23 @@ static      char sccsid[] = "@(#)opset.c 4.5 5/27/85";
 #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
 
@@ -61,9 +61,8 @@ char  *insregname();  /* how to print a register */
  *     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
  */
@@ -105,7 +104,7 @@ mkioptab()
        }
 }
 
-u_char snarfuchar();
+static u_char snarfuchar();
 /*
  *     Global variables for communicating with the minions and printins
  */
@@ -248,7 +247,7 @@ casebody(base, limit)
 #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));
@@ -266,10 +265,10 @@ static long magic_compl[5] =      {0,     0x100,  0x10000,0,      0};
 /*
  *     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];
@@ -279,7 +278,7 @@ numberp snarfreloc(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;
@@ -295,7 +294,7 @@ numberp snarf(nbytes)
 /*
  *     Read one single character, and advance the dot
  */
-u_char snarfuchar()
+static u_char snarfuchar()
 {
        u_char  back;
        /*
@@ -309,7 +308,7 @@ u_char snarfuchar()
  *     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;
 {
@@ -366,8 +365,8 @@ char *operandout(mode, optype)
        return(0);
 }
 
-dispaddress(valuep, mode)
-       numberp valuep;
+static dispaddress(valuep, mode)
+       struct as_number        *valuep;
        u_char  mode;
 {
        int     regnumber = OC_REGEXT(mode);
@@ -387,22 +386,24 @@ dispaddress(valuep, 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;
@@ -420,7 +421,7 @@ char *insregname(regnumber)
 /*
  *     print out a short literal
  */
-shortliteral(mode, optype)
+static shortliteral(mode, optype)
        u_char  mode;
        u_char  optype;
 {
@@ -443,7 +444,7 @@ shortliteral(mode, optype)
        }
 }
 
-pcimmediate(mode, optype)
+static pcimmediate(mode, optype)
        u_char  mode;
        u_char  optype;
 {
@@ -462,11 +463,11 @@ pcimmediate(mode, 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;
index 75ad1de..aca4576 100644 (file)
@@ -56,7 +56,7 @@ SYSTAB {
        1, "30",
        1, "stty",
        1, "gtty",
-       0, "_access",
+       0, "access",
        0, "nice",
        0, "sleep",
        0, "sync",
@@ -89,9 +89,9 @@ SYSTAB {
        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",
index 5338774..b63f593 100644 (file)
@@ -9,23 +9,24 @@ static        char sccsid[] = "@(#)output.c   4.4 4/26/85";
 
 #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) {
@@ -102,88 +103,70 @@ flushbuf()
        }
 }
 
-_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--; }
@@ -198,33 +181,21 @@ _printf(fmat,a1)
 #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) {
@@ -268,7 +239,7 @@ newline()
 }
 
 convert(cp)
-register char*CHECKME  *cp;
+register char  **cp;
 {
        register char   c;
        short           n;
@@ -342,16 +313,16 @@ long lxy; char fmat; int base;
 #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++='#'; }
        }
index 8f87a55..34ec820 100644 (file)
@@ -10,26 +10,26 @@ static      char sccsid[] = "@(#)pcs.c      4.2 8/11/83";
 #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;
 
 
 
index b6827bd..2b0ecb0 100644 (file)
@@ -6,30 +6,30 @@ static        char sccsid[] = "@(#)print.c 4.11 5/2/85";
  */
 #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,
@@ -76,7 +76,7 @@ short         adrflg;
 long           cntval;
 short          cntflg;
 
-char*CHECKME           signals[] = {
+char           *signals[] = {
                "",
                "hangup",
                "interrupt",
@@ -397,7 +397,7 @@ printtrace(modif)
                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++); }
                        }
index 232a02b..21a0bba 100644 (file)
@@ -9,37 +9,37 @@ static        char sccsid[] = "@(#)runpcs.c   4.6 4/25/85";
 
 #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;
 
 
 
@@ -132,10 +132,11 @@ setup()
 {
        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);
@@ -172,9 +173,9 @@ struct bkpt *bkptr;
 
 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;
@@ -220,7 +221,7 @@ doexec()
        perror(symfil);
 }
 
-struct bkpt*CHECKME    scanbkpt(adr)
+struct bkpt    *scanbkpt(adr)
 intptr_t adr;
 {
        register struct bkpt    *bkptr;
index 56dd273..591f5c5 100644 (file)
@@ -9,9 +9,9 @@ static  char sccsid[] = "@(#)setup.c    4.10 (Berkeley) 85/05/09";
 #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";
@@ -71,7 +71,7 @@ setsym()
        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:
@@ -213,7 +213,7 @@ findstackframe()
        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");
index 6d92869..7eb8ec5 100644 (file)
@@ -17,8 +17,7 @@ lookup(symstr)
        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);
index fc53a8b..3b8cd18 100644 (file)
  *     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;
index ac70449..7c10877 100755 (executable)
@@ -13,6 +13,14 @@ 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=`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==="
@@ -47,7 +55,7 @@ then
 
   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
@@ -333,7 +341,7 @@ then
           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
@@ -409,7 +417,7 @@ then
           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
diff --git a/scripts/linkerr.sh b/scripts/linkerr.sh
new file mode 100755 (executable)
index 0000000..e50443c
--- /dev/null
@@ -0,0 +1,2 @@
+#!/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/"