*** empty log message ***
authorJohn Gilmore <gnu@cygnus>
Fri, 5 Apr 1991 09:02:10 +0000 (09:02 +0000)
committerJohn Gilmore <gnu@cygnus>
Fri, 5 Apr 1991 09:02:10 +0000 (09:02 +0000)
16 files changed:
gdb/ChangeLog
gdb/Makefile.dist
gdb/Projects
gdb/command.c
gdb/config.gdb
gdb/convex-pinsn.c
gdb/core.c
gdb/dbxread.c
gdb/expread.tab.c
gdb/expread.y
gdb/i386-pinsn.c
gdb/ieee-float.c
gdb/remote-nindy.c
gdb/signame.c
gdb/tm-i386v.h
gdb/values.c

index 12ec9ccc2f8b49922da970cb4c0b61662fc517a7..8201aef4809006c5592b780296b945ce3185759c 100644 (file)
@@ -1,3 +1,141 @@
+Thu Apr  4 10:09:35 1991  John Gilmore  (gnu at cygint.cygnus.com)
+
+       * tm-i386v.h (FLOAT_INFO):  Don't define it, since the code
+       for printing the float info is host-dependent, not
+       target-dependent.  FIXME.
+       * i386-pinsn.c:  Move #includes to top, remove useless ones.
+       * i386-tdep.c:  Don't bother including <.../reg.h> since we
+       don't use it (and it doesn't exist on host systems).
+
+       * ieee-float.c (ieee_extended_to_double):  Convert NaN to Inf.
+       Convert negative numbers properly.
+       (ieee_test):  Make numbers really random; fix format arg.
+
+       * infcmd.c (attach_command, detach_command):  Don't repeat on CR.
+       * core.c (core_detach):  Unpush core_ops, which might not be on
+       top.  We used to just pop the top, which broke things.  Don't
+       need dont_repeat() any more.
+       (core_file_command):  Psst!  Don't repeat it.
+       * remote-nindy.c (nindy_detach):  Don't need dont_repeat() now.
+       * expprint.c (print_subexp):  Avoid switch fallthru on
+       BINOP_ASSIGN_MODIFY, so we can print += and such.
+       * frame.h:  Fix typo.
+       * inflow.c (kill_command):  After killing inferior, print our
+       current frame in the core file, if we have one.
+       (generic_mourn_inferior):  When inferior dies, either select
+       the current frame (in the new target, e.g. core file), or 
+       set both the current and selected frames to NULL.
+
+       Changes from Peter Schauer.
+
+       * infptrace.c:  Avoid <sys/ptrace.h> on USG.
+
+       * Make all file names fit in 14 characters (sigh and damn!):
+       mv hp300hpux-xdep.c hp300ux-xdep.c
+       mv symmetry-xdep.c symm-xdep.c
+       mv symmetry-tdep.c symm-tdep.c
+       mv convex-opcode.h convx-opcode.h
+       mv tm-vxworks960.h tm-vx960.h
+       mv tm-vxworks68.h tm-vx68.h
+       mv Makefile.srcdir Makefile.sdir
+       mv gdb-int.texinfo gdbint.texinfo
+       mv remote-sa.m68k.shar rem-m68k.shar
+       mv remote-multi.shar rem-multi.shar
+       * Makefile.dist, README, config.gdb, convex-pinsn.c,
+       tconfig/symmetry, tconfig/vxworks960, tconfig/vxworks68,
+       xconfig/hp300hpux, xconfig/symmetry:  Change names to shorter
+       names.
+
+       * command.c (user_info_1, user_info):  New command for listing
+       the user-defined commands.
+
+Wed Apr  3 15:00:26 1991  John Gilmore  (gnu at cygint.cygnus.com)
+
+       * dbxread.c (really_free_pendings):  Clear file_symbols
+       and global_symbols after freeing them; otherwise, running
+       this function twice (if it appears twice on the cleanup
+       chain), we try to free things twice.
+
+       * dbxread.c (read_dbx_symtab):  Calculate end_of_text_addr
+       based on text_addr (the address of text in core), not on addr (the
+       offset between text in the .o file and in core).  This change
+       is from Peter Schauer.
+
+       * main.c:  Define ALL_CLEANUPS as a cast of zero.
+       (return_to_top_level):  Use it.
+       (main):  Do all cleanups after each command run as part
+       of the gdb startup sequence.  Also do all cleanups before
+       entering the command loop, and every time we exit the command
+       loop and reenter.  Before, the cleanups from the startup sequence
+       were being left undone until the first error!
+       (command_loop):  Rename do_nothing cleanup to command_loop_marker
+       so we can see it easily when examining the cleanup chain.
+       (init_signals):  Add another do_nothing for signal handling.
+       (quit_command):  Only try to kill target if it has execution.
+       Problems in the target stack got us into a state where
+       inferior_pid was nonzero but none of the targets had execution.
+       In this state you couldn't exit gdb.
+
+       * dbxread.c:  Two changes from Peter Schauer.
+       (echo_command):  Fflush output after an echo command.
+       (show_history):  Pass all args to cmd_show_list.
+
+       * utils.c (init_malloc):  Call mtrace to turn on tracing
+       if the environment variable MALLOC_TRACE is set to a file name.
+       * mtrace.c:  Add source file which provides a log of every malloc,
+       free, and realloc to a trace file.
+       * mtrace.awk:  Add source file which analyzes the trace file.
+       * Makefile.dist (GNU_MALLOC, MALLOCSRC):  Add mtrace.{c,o,awk}.
+       (VERSION):  Roll to 3.94.3.
+
+       * breakpoint.c (breakpoint_1):  Add a space to "i watch" output.
+       (check_duplicates):  Don't bother with watchpoints.
+       (set_raw_breakpoint):  Comment about danger of this routine.
+       (watch_command):  Parse and eval all args before calling
+       set_raw_breakpoint.
+
+       * solib.c (find_solib):  Avoid error in referencing memory to
+       see if any more shared libraries have been added.  This is
+       particularly useful if the target has terminated.  Bug reported
+       by Peter Schauer.
+
+       Changes from Peter Schauer <pesrem@regent.e-technik.tu-muenchen.de>
+       in bringing up 3.94.2 on the Sun-3.
+
+        * Makefile.dist:  Include CFLAGS in rule for cplus-dem.o.
+        * breakpoint.c (enable_breakpoint):  Check for valid watchpoint
+        expression (in scope) before reenabling watchpoint.
+       * signame.c (init_sigs):  Add missing declaration of i, fix
+       sys_siglist declaration.
+       * source.c (list_command):  Fixed range computation to use
+       lines_to_list ().
+       * stack.c (backtrace_command):  Do not allow command if target has
+       no stack, print informative error message.
+       * target.c (target_command):  Do not write into command line
+       because this fails if the target command is used in a user defined
+       command.  [This change was enhanced by gnu to support any-
+       unique-prefix matching on target names.]
+       * valops.c (value_struct_elt):  Avoid infinite loop on an
+       erroneous attempt to print the member of function (try p main.p).
+
+Mon Apr  1 17:05:45 1991  John Gilmore  (gnu at cygint.cygnus.com)
+
+       * expread.y (name_no_typename):  Avoid reduce/reduce errors
+       caused by ambiguity in handling NAME_OR_INT and NAME_OR_UINT.
+       Since the GDB parser really doesn't use name_no_typename in a
+       name-only context, the parser can't tell the diff between
+       names and numbers here.  Avoid allowing a name_no_typename
+       to be a NAME_OR_*INT to resolve the conflict.
+
+Sun Mar 31 20:12:07 1991  John Gilmore  (gnu at cygint.cygnus.com)
+
+       Bugfixes from Mark Fox (markf@wrs.com) (test=testField.c):
+
+       * valprint.c (val_print_fields):  bitfield printing didn't handle
+       byte order.  Indirect through a few more fns to cope.
+
+       * values.c (modify_field):  also cope with byte order.
+
 Sat Mar 23 10:02:21 1991  John Gilmore  (gnu at cygint.cygnus.com)
 
        Cleanup for release 3.94.2:
index 7b4e3ce9fa8dce77d2dfb2b284d6ce6d91715a36..8c626fecce112b3d6467e98d6b0070ccf7211e7b 100755 (executable)
@@ -54,7 +54,7 @@ CC-LD=${CC}
 # system malloc, uncomment the following two lines.
 #GNU_MALLOC =
 #MALLOC_CFLAGS = -DNO_MALLOC_CHECK
-GNU_MALLOC = gmalloc.o mcheck.o
+GNU_MALLOC = gmalloc.o mcheck.o mtrace.o
 MALLOC_CFLAGS =
 
 # Where is the "include" directory?  Traditionally ../include or ./include
@@ -107,7 +107,7 @@ CDEPS = ${XM_CDEPS} ${TM_CDEPS} ${BFD_DIR}/libbfd.a
 ADD_FILES = ${OBSTACK} ${REGEX} ${ALLOCA} ${GNU_MALLOC} ${GETOPT}
 ADD_DEPS = ${OBSTACK} ${REGEX1} ${ALLOCA1} ${GNU_MALLOC} ${GETOPT}
 
-VERSION = 3.94.2
+VERSION = 3.94.3
 DIST=gdb-$(VERSION)
 
 LINT=/usr/5bin/lint
@@ -171,12 +171,13 @@ HFILES=   breakpoint.h command.h defs.h environ.h \
        value.h
 
 OPCODES = pn-opcode.h np1-opcode.h sparc-opcode.h vax-opcode.h m68k-opcode.h \
-         ns32k-opcode.h convex-opcode.h pyr-opcode.h mips-opcode.h \
+         ns32k-opcode.h convx-opcode.h pyr-opcode.h mips-opcode.h \
          am29k-opcode.h
 
-REMOTE_EXAMPLES = remote-sa.m68k.shar remote-multi.shar
+REMOTE_EXAMPLES = rem-m68k.shar rem-multi.shar
 
-MALLOCSRC = gmalloc.c mcheck.c ansidecl.h stdlib.h gmalloc.h stddef.h
+MALLOCSRC = gmalloc.c mcheck.c mtrace.c mtrace.awk \
+           ansidecl.h stdlib.h gmalloc.h stddef.h
 GETOPTSRC = $(GETOPT_DIR)/getopt.c $(GETOPT_DIR)/getopt1.c
 
 POSSLIBS_MAINDIR = obstack.h obstack.c regex.c regex.h alloca.c \
@@ -188,11 +189,11 @@ TESTS = testbpt.c testfun.c testrec.c testreg.c testregs.c
 # tdesc-lib cannot be named simply tdesc, because if if it were GNU make
 # would try to make it from tdesc.c.
 # tdesc-lib removed from the list due to Motorola copyrights...gnu@cygnus.com
-OTHERS = Makefile.dist depend alldeps.mak Makefile.srcdir \
+OTHERS = Makefile.dist depend alldeps.mak Makefile.sdir \
         createtags munch config.gdb config.status \
         ChangeLog ChangeLog-3.x \
         README TODO TAGS WHATS.NEW \
-        gdb.texinfo gdb-int.texinfo gdbrc.tex threecol.tex \
+        gdb.texinfo gdbint.texinfo gdbrc.tex threecol.tex \
        .gdbinit COPYING expread.tab.c stab.def \
         copying.c Projects Convex.notes copying.awk \
         saber.suppress standalone.c stuff.c kdb-start.c \
@@ -276,7 +277,7 @@ rapp: $(RAPP_OBS)
        ${srcdir}/munch ${RAPP_OBS} > rapp_init.c
        ${CC-LD} $(LDFLAGS) -o $@ rapp_init.c $(RAPP_OBS)
        
-Makefiles= Makefile.srcdir $(M_MAKEFILE) \
+Makefiles= Makefile.sdir $(M_MAKEFILE) \
        ${srcdir}/alldeps.mak ${srcdir}/Makefile.dist
 
 MAKE_MAKEFILE= echo "M_MAKEFILE=$(M_MAKEFILE)" | \
@@ -503,4 +504,4 @@ force_update :
 # When used with GDB, the demangler should never look for leading underscores
 # because GDB strips them off during symbol read-in.  Thus -Dnounderscore.
 cplus-dem.o : cplus-dem.c
-       ${CC} -c -Dnounderscore `echo ${srcdir}/cplus-dem.c | sed 's,^\./,,'`
+       ${CC} -c ${CFLAGS} -Dnounderscore `echo ${srcdir}/cplus-dem.c | sed 's,^\./,,'`
index b30d268ea625d9e2e1218b13be0bd2a8077a42dd..fa0d86058f27b2b69b339e141de748bc93996c29 100644 (file)
@@ -92,6 +92,10 @@ The child doesn't let any refs through, but when the child terminates,
 you are back to debugging the core file -- you might even want to swap
 back and forth between the two, or between two core files.
 
+Add a command for searching memory, a la adb.  It specifies size,
+mask, value, start address.  ADB searches until it finds it or hits
+an error (or is interrupted).
+
 # Local Variables:
 # mode: text
 # End:
index 0b541a7cc63cc23eb574d87ed8d3d35de19589f2..dc9d5fc0ff795a277956eb08469765a306a0661f 100644 (file)
@@ -1138,6 +1138,51 @@ make_command (arg, from_tty)
   shell_escape (p, from_tty);
 }
 
+static void
+user_info_1 (c, stream)
+     struct cmd_list_element *c;
+     FILE *stream;
+{
+  register struct command_line *cmdlines;
+
+  cmdlines = c->user_commands;
+  if (!cmdlines)
+    return;
+  fprintf_filtered (stream, "User command %s:\n", c->name);
+  while (cmdlines)
+    {
+      fprintf_filtered (stream, "%s\n", cmdlines->line); 
+      cmdlines = cmdlines->next;
+    }
+  fputs_filtered ("\n", stream);
+}
+
+/* ARGSUSED */
+static void
+user_info (args, from_tty)
+     char *args;
+     int from_tty;
+{
+  struct cmd_list_element *c;
+  extern struct cmd_list_element *cmdlist;
+
+  if (args)
+    {
+      c = lookup_cmd (&args, cmdlist, "", 0, 1);
+      if (c->class != class_user)
+       error ("Not a user command.");
+      user_info_1 (c, stdout);
+    }
+  else
+    {
+      for (c = cmdlist; c; c = c->next)
+       {
+         if (c->class == class_user)
+           user_info_1 (c, stdout);
+       }
+    }
+}
+
 void
 _initialize_command ()
 {
@@ -1147,4 +1192,8 @@ With no arguments, run an inferior shell.");
 
   add_com ("make", class_support, make_command,
           "Run the ``make'' program using the rest of the line as arguments.");
+
+  add_info ("user", user_info, "Show definitions of user defined commands.\n\
+Argument is the name of the user defined command.\n\
+With no argument, show definitions of all user defined commands.");
 }
index 917d94e870d00975a219061627cc752cb88e6776..171248243716af951325b32cca854356cfb2bb6b 100755 (executable)
@@ -165,7 +165,7 @@ case ${srcdir} in
   .)
     ;;
   *)
-    echo "srcdir=${srcdir}" >./Makefile.srcdir
+    echo "srcdir=${srcdir}" >./Makefile.sdir
     grep -s "source ${srcdir}/.gdbinit" .gdbinit 2>/dev/null || \
       echo "source ${srcdir}/.gdbinit" >> .gdbinit
     if [ ! -d readline ]; then
index a283d2940524b191c8e628d79e2398f5244146f1..9c685a4a19aa3f6f6b8a2978bd65d48ccfd16c7d 100644 (file)
@@ -73,7 +73,7 @@ struct formstr {
     unsigned i:5, j:5, k:2;    /* operand formats */
 };
 
-#include "convex-opcode.h"
+#include "convx-opcode.h"
 
 unsigned char formdecode [] = {
     1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
index 2936e46d5d20335f6f1937feeab45510601fa8f3..119f7162f2f45edeabe06f978a59bdd893ff9d77 100644 (file)
@@ -155,10 +155,9 @@ core_detach (args, from_tty)
      char *args;
      int from_tty;
 {
-  dont_repeat ();
   if (args)
     error ("Too many arguments");
-  pop_target ();
+  unpush_target (&core_ops);
   if (from_tty)
     printf ("No core file now.\n");
 }
@@ -170,6 +169,7 @@ core_file_command (filename, from_tty)
      char *filename;
      int from_tty;
 {
+  dont_repeat ();                      /* Either way, seems bogus. */
   if (!filename)
     core_detach (filename, from_tty);
   else
index 37f456bc74dd451192dcb62315a20582ac569d75..4a6a54089205e3e3540fc395cee9c74a1dabb370 100644 (file)
@@ -791,11 +791,14 @@ really_free_pendings (foo)
       next1 = next->next;
       free (next);
     }
+  file_symbols = 0;
+
   for (next = global_symbols; next; next = next1)
     {
       next1 = next->next;
       free (next);
     }
+  global_symbols = 0;
 }
 
 /* Take one of the lists of symbols and make a block from it.
@@ -1709,7 +1712,7 @@ read_dbx_symtab (symfile_name, addr,
 #ifdef END_OF_TEXT_DEFAULT
   end_of_text_addr = END_OF_TEXT_DEFAULT;
 #else
-  end_of_text_addr = addr + text_size;
+  end_of_text_addr = text_addr + text_size;
 #endif
 
   symtab_input_desc = desc;    /* This is needed for fill_symbuf below */
index 86fbd0f5a3ef910ddf0ee747e40ab0c81d24c8bb..e10aca0a4775622d0fee8d7087541cc59ae299e5 100755 (executable)
@@ -1,5 +1,5 @@
 
-/*  A Bison parser, made from ../expread.y  */
+/*  A Bison parser, made from expread.y  */
 
 #define        INT     258
 #define        CHAR    259
@@ -41,7 +41,7 @@
 #define        DECREMENT       295
 #define        ARROW   296
 
-#line 29 "../expread.y"
+#line 29 "expread.y"
 
 #include <stdio.h>
 #include "defs.h"
@@ -133,7 +133,7 @@ static enum type_pieces pop_type ();
 /* Allow debugging of parsing.  */
 #define YYDEBUG 1
 
-#line 125 "../expread.y"
+#line 125 "expread.y"
 typedef union
   {
     LONGEST lval;
@@ -228,7 +228,7 @@ static const short yyrline[] = {     0,
    767,   768,   770,   772,   775,   782,   784,   786,   788,   790,
    792,   794,   796,   798,   801,   804,   807,   809,   811,   813,
    817,   818,   824,   830,   839,   844,   851,   852,   853,   854,
-   855,   858,   859,   860,   861
+   855,   858,   859
 };
 
 static const char * const yytname[] = {     0,
@@ -253,7 +253,7 @@ static const short yyr1[] = {     0,
     78,    78,    78,    78,    78,    79,    79,    79,    79,    79,
     79,    79,    79,    79,    79,    79,    79,    79,    79,    79,
     80,    80,    80,    80,    81,    81,    82,    82,    82,    82,
-    82,    83,    83,    83,    83
+    82,    83,    83
 };
 
 static const short yyr2[] = {     0,
@@ -268,7 +268,7 @@ static const short yyr2[] = {     0,
      1,     3,     6,     8,     9,     1,     1,     1,     1,     2,
      3,     2,     3,     2,     2,     2,     2,     1,     2,     1,
      1,     1,     1,     1,     1,     3,     1,     1,     1,     1,
-     1,     1,     1,     1,     1
+     1,     1,     1
 };
 
 static const short yydefact[] = {     0,
@@ -778,199 +778,199 @@ yyreduce:
   switch (yyn) {
 
 case 3:
-#line 224 "../expread.y"
+#line 224 "expread.y"
 { write_exp_elt_opcode (BINOP_COMMA); ;
     break;}
 case 4:
-#line 229 "../expread.y"
+#line 229 "expread.y"
 { write_exp_elt_opcode (UNOP_IND); ;
     break;}
 case 5:
-#line 232 "../expread.y"
+#line 232 "expread.y"
 { write_exp_elt_opcode (UNOP_ADDR); ;
     break;}
 case 6:
-#line 235 "../expread.y"
+#line 235 "expread.y"
 { write_exp_elt_opcode (UNOP_NEG); ;
     break;}
 case 7:
-#line 239 "../expread.y"
+#line 239 "expread.y"
 { write_exp_elt_opcode (UNOP_ZEROP); ;
     break;}
 case 8:
-#line 243 "../expread.y"
+#line 243 "expread.y"
 { write_exp_elt_opcode (UNOP_LOGNOT); ;
     break;}
 case 9:
-#line 247 "../expread.y"
+#line 247 "expread.y"
 { write_exp_elt_opcode (UNOP_PREINCREMENT); ;
     break;}
 case 10:
-#line 251 "../expread.y"
+#line 251 "expread.y"
 { write_exp_elt_opcode (UNOP_PREDECREMENT); ;
     break;}
 case 11:
-#line 255 "../expread.y"
+#line 255 "expread.y"
 { write_exp_elt_opcode (UNOP_POSTINCREMENT); ;
     break;}
 case 12:
-#line 259 "../expread.y"
+#line 259 "expread.y"
 { write_exp_elt_opcode (UNOP_POSTDECREMENT); ;
     break;}
 case 13:
-#line 263 "../expread.y"
+#line 263 "expread.y"
 { write_exp_elt_opcode (UNOP_SIZEOF); ;
     break;}
 case 14:
-#line 267 "../expread.y"
+#line 267 "expread.y"
 { write_exp_elt_opcode (STRUCTOP_PTR);
                          write_exp_string (yyvsp[0].sval);
                          write_exp_elt_opcode (STRUCTOP_PTR); ;
     break;}
 case 15:
-#line 273 "../expread.y"
+#line 273 "expread.y"
 { write_exp_elt_opcode (STRUCTOP_MPTR); ;
     break;}
 case 16:
-#line 277 "../expread.y"
+#line 277 "expread.y"
 { write_exp_elt_opcode (STRUCTOP_STRUCT);
                          write_exp_string (yyvsp[0].sval);
                          write_exp_elt_opcode (STRUCTOP_STRUCT); ;
     break;}
 case 17:
-#line 283 "../expread.y"
+#line 283 "expread.y"
 { write_exp_elt_opcode (STRUCTOP_MEMBER); ;
     break;}
 case 18:
-#line 287 "../expread.y"
+#line 287 "expread.y"
 { write_exp_elt_opcode (BINOP_SUBSCRIPT); ;
     break;}
 case 19:
-#line 293 "../expread.y"
+#line 293 "expread.y"
 { start_arglist (); ;
     break;}
 case 20:
-#line 295 "../expread.y"
+#line 295 "expread.y"
 { write_exp_elt_opcode (OP_FUNCALL);
                          write_exp_elt_longcst ((LONGEST) end_arglist ());
                          write_exp_elt_opcode (OP_FUNCALL); ;
     break;}
 case 22:
-#line 304 "../expread.y"
+#line 304 "expread.y"
 { arglist_len = 1; ;
     break;}
 case 23:
-#line 308 "../expread.y"
+#line 308 "expread.y"
 { arglist_len++; ;
     break;}
 case 24:
-#line 312 "../expread.y"
+#line 312 "expread.y"
 { write_exp_elt_opcode (UNOP_MEMVAL);
                          write_exp_elt_type (yyvsp[-2].tval);
                          write_exp_elt_opcode (UNOP_MEMVAL); ;
     break;}
 case 25:
-#line 318 "../expread.y"
+#line 318 "expread.y"
 { write_exp_elt_opcode (UNOP_CAST);
                          write_exp_elt_type (yyvsp[-2].tval);
                          write_exp_elt_opcode (UNOP_CAST); ;
     break;}
 case 26:
-#line 324 "../expread.y"
+#line 324 "expread.y"
 { ;
     break;}
 case 27:
-#line 330 "../expread.y"
+#line 330 "expread.y"
 { write_exp_elt_opcode (BINOP_REPEAT); ;
     break;}
 case 28:
-#line 334 "../expread.y"
+#line 334 "expread.y"
 { write_exp_elt_opcode (BINOP_MUL); ;
     break;}
 case 29:
-#line 338 "../expread.y"
+#line 338 "expread.y"
 { write_exp_elt_opcode (BINOP_DIV); ;
     break;}
 case 30:
-#line 342 "../expread.y"
+#line 342 "expread.y"
 { write_exp_elt_opcode (BINOP_REM); ;
     break;}
 case 31:
-#line 346 "../expread.y"
+#line 346 "expread.y"
 { write_exp_elt_opcode (BINOP_ADD); ;
     break;}
 case 32:
-#line 350 "../expread.y"
+#line 350 "expread.y"
 { write_exp_elt_opcode (BINOP_SUB); ;
     break;}
 case 33:
-#line 354 "../expread.y"
+#line 354 "expread.y"
 { write_exp_elt_opcode (BINOP_LSH); ;
     break;}
 case 34:
-#line 358 "../expread.y"
+#line 358 "expread.y"
 { write_exp_elt_opcode (BINOP_RSH); ;
     break;}
 case 35:
-#line 362 "../expread.y"
+#line 362 "expread.y"
 { write_exp_elt_opcode (BINOP_EQUAL); ;
     break;}
 case 36:
-#line 366 "../expread.y"
+#line 366 "expread.y"
 { write_exp_elt_opcode (BINOP_NOTEQUAL); ;
     break;}
 case 37:
-#line 370 "../expread.y"
+#line 370 "expread.y"
 { write_exp_elt_opcode (BINOP_LEQ); ;
     break;}
 case 38:
-#line 374 "../expread.y"
+#line 374 "expread.y"
 { write_exp_elt_opcode (BINOP_GEQ); ;
     break;}
 case 39:
-#line 378 "../expread.y"
+#line 378 "expread.y"
 { write_exp_elt_opcode (BINOP_LESS); ;
     break;}
 case 40:
-#line 382 "../expread.y"
+#line 382 "expread.y"
 { write_exp_elt_opcode (BINOP_GTR); ;
     break;}
 case 41:
-#line 386 "../expread.y"
+#line 386 "expread.y"
 { write_exp_elt_opcode (BINOP_LOGAND); ;
     break;}
 case 42:
-#line 390 "../expread.y"
+#line 390 "expread.y"
 { write_exp_elt_opcode (BINOP_LOGXOR); ;
     break;}
 case 43:
-#line 394 "../expread.y"
+#line 394 "expread.y"
 { write_exp_elt_opcode (BINOP_LOGIOR); ;
     break;}
 case 44:
-#line 398 "../expread.y"
+#line 398 "expread.y"
 { write_exp_elt_opcode (BINOP_AND); ;
     break;}
 case 45:
-#line 402 "../expread.y"
+#line 402 "expread.y"
 { write_exp_elt_opcode (BINOP_OR); ;
     break;}
 case 46:
-#line 406 "../expread.y"
+#line 406 "expread.y"
 { write_exp_elt_opcode (TERNOP_COND); ;
     break;}
 case 47:
-#line 410 "../expread.y"
+#line 410 "expread.y"
 { write_exp_elt_opcode (BINOP_ASSIGN); ;
     break;}
 case 48:
-#line 414 "../expread.y"
+#line 414 "expread.y"
 { write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
                          write_exp_elt_opcode (yyvsp[-1].opcode);
                          write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); ;
     break;}
 case 49:
-#line 420 "../expread.y"
+#line 420 "expread.y"
 { write_exp_elt_opcode (OP_LONG);
                          if (yyvsp[0].lval == (int) yyvsp[0].lval || yyvsp[0].lval == (unsigned int) yyvsp[0].lval)
                            write_exp_elt_type (builtin_type_int);
@@ -980,7 +980,7 @@ case 49:
                          write_exp_elt_opcode (OP_LONG); ;
     break;}
 case 50:
-#line 430 "../expread.y"
+#line 430 "expread.y"
 { YYSTYPE val;
                          parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
                          write_exp_elt_opcode (OP_LONG);
@@ -993,7 +993,7 @@ case 50:
                          write_exp_elt_opcode (OP_LONG); ;
     break;}
 case 51:
-#line 443 "../expread.y"
+#line 443 "expread.y"
 {
                          write_exp_elt_opcode (OP_LONG);
                          if (yyvsp[0].ulval == (unsigned int) yyvsp[0].ulval)
@@ -1005,7 +1005,7 @@ case 51:
                        ;
     break;}
 case 52:
-#line 455 "../expread.y"
+#line 455 "expread.y"
 { YYSTYPE val;
                          parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
                          write_exp_elt_opcode (OP_LONG);
@@ -1018,57 +1018,57 @@ case 52:
                        ;
     break;}
 case 53:
-#line 468 "../expread.y"
+#line 468 "expread.y"
 { write_exp_elt_opcode (OP_LONG);
                          write_exp_elt_type (builtin_type_char);
                          write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
                          write_exp_elt_opcode (OP_LONG); ;
     break;}
 case 54:
-#line 475 "../expread.y"
+#line 475 "expread.y"
 { write_exp_elt_opcode (OP_DOUBLE);
                          write_exp_elt_type (builtin_type_double);
                          write_exp_elt_dblcst (yyvsp[0].dval);
                          write_exp_elt_opcode (OP_DOUBLE); ;
     break;}
 case 56:
-#line 485 "../expread.y"
+#line 485 "expread.y"
 { write_exp_elt_opcode (OP_LAST);
                          write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
                          write_exp_elt_opcode (OP_LAST); ;
     break;}
 case 57:
-#line 491 "../expread.y"
+#line 491 "expread.y"
 { write_exp_elt_opcode (OP_REGISTER);
                          write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
                          write_exp_elt_opcode (OP_REGISTER); ;
     break;}
 case 58:
-#line 497 "../expread.y"
+#line 497 "expread.y"
 { write_exp_elt_opcode (OP_INTERNALVAR);
                          write_exp_elt_intern (yyvsp[0].ivar);
                          write_exp_elt_opcode (OP_INTERNALVAR); ;
     break;}
 case 59:
-#line 503 "../expread.y"
+#line 503 "expread.y"
 { write_exp_elt_opcode (OP_LONG);
                          write_exp_elt_type (builtin_type_int);
                          write_exp_elt_longcst ((LONGEST) TYPE_LENGTH (yyvsp[-1].tval));
                          write_exp_elt_opcode (OP_LONG); ;
     break;}
 case 60:
-#line 510 "../expread.y"
+#line 510 "expread.y"
 { write_exp_elt_opcode (OP_STRING);
                          write_exp_string (yyvsp[0].sval);
                          write_exp_elt_opcode (OP_STRING); ;
     break;}
 case 61:
-#line 517 "../expread.y"
+#line 517 "expread.y"
 { write_exp_elt_opcode (OP_THIS);
                          write_exp_elt_opcode (OP_THIS); ;
     break;}
 case 62:
-#line 524 "../expread.y"
+#line 524 "expread.y"
 {
                          if (yyvsp[0].ssym.sym != 0)
                              yyval.bval = SYMBOL_BLOCK_VALUE (yyvsp[0].ssym.sym);
@@ -1085,7 +1085,7 @@ case 62:
                        ;
     break;}
 case 63:
-#line 541 "../expread.y"
+#line 541 "expread.y"
 { struct symbol *tem
                            = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
                                             VAR_NAMESPACE, 0, NULL);
@@ -1095,7 +1095,7 @@ case 63:
                          yyval.bval = SYMBOL_BLOCK_VALUE (tem); ;
     break;}
 case 64:
-#line 551 "../expread.y"
+#line 551 "expread.y"
 { struct symbol *sym;
                          sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
                                               VAR_NAMESPACE, 0, NULL);
@@ -1107,7 +1107,7 @@ case 64:
                          write_exp_elt_opcode (OP_VAR_VALUE); ;
     break;}
 case 65:
-#line 563 "../expread.y"
+#line 563 "expread.y"
 {
                          struct type *type = yyvsp[-2].tval;
                          if (TYPE_CODE (type) != TYPE_CODE_STRUCT
@@ -1122,7 +1122,7 @@ case 65:
                        ;
     break;}
 case 66:
-#line 576 "../expread.y"
+#line 576 "expread.y"
 {
                          char *name = copy_name (yyvsp[0].sval);
                          struct symbol *sym;
@@ -1168,7 +1168,7 @@ case 66:
                        ;
     break;}
 case 67:
-#line 622 "../expread.y"
+#line 622 "expread.y"
 { struct symbol *sym = yyvsp[0].ssym.sym;
 
                          if (sym)
@@ -1241,7 +1241,7 @@ case 67:
                        ;
     break;}
 case 69:
-#line 697 "../expread.y"
+#line 697 "expread.y"
 {
                  /* This is where the interesting stuff happens.  */
                  int done = 0;
@@ -1276,26 +1276,26 @@ case 69:
                ;
     break;}
 case 70:
-#line 732 "../expread.y"
+#line 732 "expread.y"
 { push_type (tp_pointer); yyval.voidval = 0; ;
     break;}
 case 71:
-#line 734 "../expread.y"
+#line 734 "expread.y"
 { push_type (tp_pointer); yyval.voidval = yyvsp[0].voidval; ;
     break;}
 case 73:
-#line 739 "../expread.y"
+#line 739 "expread.y"
 { yyval.voidval = yyvsp[-1].voidval; ;
     break;}
 case 74:
-#line 741 "../expread.y"
+#line 741 "expread.y"
 {
                          push_type ((enum type_pieces) yyvsp[0].lval);
                          push_type (tp_array);
                        ;
     break;}
 case 75:
-#line 746 "../expread.y"
+#line 746 "expread.y"
 {
                          push_type ((enum type_pieces) yyvsp[0].lval);
                          push_type (tp_array);
@@ -1303,109 +1303,109 @@ case 75:
                        ;
     break;}
 case 76:
-#line 752 "../expread.y"
+#line 752 "expread.y"
 { push_type (tp_function); ;
     break;}
 case 77:
-#line 754 "../expread.y"
+#line 754 "expread.y"
 { push_type (tp_function); ;
     break;}
 case 78:
-#line 758 "../expread.y"
+#line 758 "expread.y"
 { yyval.lval = -1; ;
     break;}
 case 79:
-#line 760 "../expread.y"
+#line 760 "expread.y"
 { yyval.lval = yyvsp[-1].lval; ;
     break;}
 case 80:
-#line 764 "../expread.y"
+#line 764 "expread.y"
 { yyval.voidval = 0; ;
     break;}
 case 82:
-#line 769 "../expread.y"
+#line 769 "expread.y"
 { yyval.tval = lookup_member_type (builtin_type_int, yyvsp[-2].tval); ;
     break;}
 case 83:
-#line 771 "../expread.y"
+#line 771 "expread.y"
 { yyval.tval = lookup_member_type (yyvsp[-5].tval, yyvsp[-3].tval); ;
     break;}
 case 84:
-#line 773 "../expread.y"
+#line 773 "expread.y"
 { yyval.tval = lookup_member_type
                            (lookup_function_type (yyvsp[-7].tval), yyvsp[-5].tval); ;
     break;}
 case 85:
-#line 776 "../expread.y"
+#line 776 "expread.y"
 { yyval.tval = lookup_member_type
                            (lookup_function_type (yyvsp[-8].tval), yyvsp[-6].tval);
                          free (yyvsp[-1].tvec); ;
     break;}
 case 86:
-#line 783 "../expread.y"
+#line 783 "expread.y"
 { yyval.tval = yyvsp[0].tsym.type; ;
     break;}
 case 87:
-#line 785 "../expread.y"
+#line 785 "expread.y"
 { yyval.tval = builtin_type_int; ;
     break;}
 case 88:
-#line 787 "../expread.y"
+#line 787 "expread.y"
 { yyval.tval = builtin_type_long; ;
     break;}
 case 89:
-#line 789 "../expread.y"
+#line 789 "expread.y"
 { yyval.tval = builtin_type_short; ;
     break;}
 case 90:
-#line 791 "../expread.y"
+#line 791 "expread.y"
 { yyval.tval = builtin_type_long; ;
     break;}
 case 91:
-#line 793 "../expread.y"
+#line 793 "expread.y"
 { yyval.tval = builtin_type_unsigned_long; ;
     break;}
 case 92:
-#line 795 "../expread.y"
+#line 795 "expread.y"
 { yyval.tval = builtin_type_short; ;
     break;}
 case 93:
-#line 797 "../expread.y"
+#line 797 "expread.y"
 { yyval.tval = builtin_type_unsigned_short; ;
     break;}
 case 94:
-#line 799 "../expread.y"
+#line 799 "expread.y"
 { yyval.tval = lookup_struct (copy_name (yyvsp[0].sval),
                                              expression_context_block); ;
     break;}
 case 95:
-#line 802 "../expread.y"
+#line 802 "expread.y"
 { yyval.tval = lookup_union (copy_name (yyvsp[0].sval),
                                             expression_context_block); ;
     break;}
 case 96:
-#line 805 "../expread.y"
+#line 805 "expread.y"
 { yyval.tval = lookup_enum (copy_name (yyvsp[0].sval),
                                            expression_context_block); ;
     break;}
 case 97:
-#line 808 "../expread.y"
+#line 808 "expread.y"
 { yyval.tval = lookup_unsigned_typename (TYPE_NAME(yyvsp[0].tsym.type)); ;
     break;}
 case 98:
-#line 810 "../expread.y"
+#line 810 "expread.y"
 { yyval.tval = builtin_type_unsigned_int; ;
     break;}
 case 99:
-#line 812 "../expread.y"
+#line 812 "expread.y"
 { yyval.tval = yyvsp[0].tsym.type; ;
     break;}
 case 100:
-#line 814 "../expread.y"
+#line 814 "expread.y"
 { yyval.tval = builtin_type_int; ;
     break;}
 case 102:
-#line 819 "../expread.y"
+#line 819 "expread.y"
 {
                  yyval.tsym.stoken.ptr = "int";
                  yyval.tsym.stoken.length = 3;
@@ -1413,7 +1413,7 @@ case 102:
                ;
     break;}
 case 103:
-#line 825 "../expread.y"
+#line 825 "expread.y"
 {
                  yyval.tsym.stoken.ptr = "long";
                  yyval.tsym.stoken.length = 4;
@@ -1421,7 +1421,7 @@ case 103:
                ;
     break;}
 case 104:
-#line 831 "../expread.y"
+#line 831 "expread.y"
 {
                  yyval.tsym.stoken.ptr = "short";
                  yyval.tsym.stoken.length = 5;
@@ -1429,37 +1429,37 @@ case 104:
                ;
     break;}
 case 105:
-#line 840 "../expread.y"
+#line 840 "expread.y"
 { yyval.tvec = (struct type **)xmalloc (sizeof (struct type *) * 2);
                  yyval.tvec[0] = (struct type *)0;
                  yyval.tvec[1] = yyvsp[0].tval;
                ;
     break;}
 case 106:
-#line 845 "../expread.y"
+#line 845 "expread.y"
 { int len = sizeof (struct type *) * ++(yyvsp[-2].ivec[0]);
                  yyval.tvec = (struct type **)xrealloc (yyvsp[-2].tvec, len);
                  yyval.tvec[yyval.ivec[0]] = yyvsp[0].tval;
                ;
     break;}
 case 107:
-#line 851 "../expread.y"
+#line 851 "expread.y"
 { yyval.sval = yyvsp[0].ssym.stoken; ;
     break;}
 case 108:
-#line 852 "../expread.y"
+#line 852 "expread.y"
 { yyval.sval = yyvsp[0].ssym.stoken; ;
     break;}
 case 109:
-#line 853 "../expread.y"
+#line 853 "expread.y"
 { yyval.sval = yyvsp[0].tsym.stoken; ;
     break;}
 case 110:
-#line 854 "../expread.y"
+#line 854 "expread.y"
 { yyval.sval = yyvsp[0].ssym.stoken; ;
     break;}
 case 111:
-#line 855 "../expread.y"
+#line 855 "expread.y"
 { yyval.sval = yyvsp[0].ssym.stoken; ;
     break;}
 }
@@ -1615,7 +1615,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 864 "../expread.y"
+#line 870 "expread.y"
 
 \f
 /* Begin counting arguments for a function call,
index 3b19750448d691c4bd592aa081afce7f75310af5..acced91a60be56c28a443817bee3802fba7c9d19 100755 (executable)
@@ -857,8 +857,14 @@ name       :       NAME { $$ = $1.stoken; }
 
 name_not_typename :    NAME
        |       BLOCKNAME
-       |       NAME_OR_INT
-       |       NAME_OR_UINT
+/* These would be useful if name_not_typename was useful, but it is just
+   a fake for "variable", so these cause reduce/reduce conflicts because
+   the parser can't tell whether NAME_OR_INT is a name_not_typename (=variable,
+   =exp) or just an exp.  If name_not_typename was ever used in an lvalue
+   context where only a name could occur, this might be useful.
+       |       NAME_OR_INT
+       |       NAME_OR_UINT
+ */
        ;
 
 %%
index 50cf14bd937d4ff18b2fb2bd05684516d9610a7b..2b34a778728a6dafb7883b597c0bc516dc8720de 100644 (file)
@@ -1,5 +1,5 @@
 /* Print i386 instructions for GDB, the GNU debugger.
-   Copyright (C) 1988, 1989 Free Software Foundation, Inc.
+   Copyright (C) 1988, 1989, 1991 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -34,6 +34,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include <stdio.h>
 #include <ctype.h>
 
+/* For the GDB interface at the bottom of the file... */
+#include "defs.h"
+#include "param.h"
+#include "gdbcore.h"
+
 #define Eb OP_E, b_mode
 #define indirEb OP_indirE, b_mode
 #define Gb OP_G, b_mode
@@ -1812,14 +1817,6 @@ OP_rm (bytemode)
     }
 }
        
-/* GDB interface */
-#include "defs.h"
-#include "param.h"
-#include "symtab.h"
-#include "frame.h"
-#include "inferior.h"
-#include "gdbcore.h"
-
 #define MAXLEN 20
 print_insn (memaddr, stream)
      CORE_ADDR memaddr;
index 7b7f9f1fd0fcd226ae49364fb3943e34d11c1c95..4a2c04c8fc07dd0140607c9618553e93f85ae905 100644 (file)
@@ -40,10 +40,17 @@ ieee_extended_to_double (ext_format, from, to)
   bcopy (&from[MANBYTE_L], &mant1, 4);
   exp = ((ufrom[EXPBYTE_H] & (unsigned char)~SIGNMASK) << 8) | ufrom[EXPBYTE_L];
 
+#if 0
+  /* We can't do anything useful with a NaN anyway, so ignore its
+     difference.  It will end up as Infinity or something close.  */
   if (exp == EXT_EXP_NAN) {
     /* We have a NaN source.  */
-    dto = 0.123456789; /* Not much else useful to do */
-  } else if (exp == 0 && mant0 == 0 && mant1 == 0) {
+    dto = 0.123456789; /* Not much else useful to do -- we don't know if 
+                          the host system even *has* NaNs, nor how to
+                          generate an innocuous one if it does.  */
+  } else
+#endif
+         if (exp == 0 && mant0 == 0 && mant1 == 0) {
     dto = 0;
   } else {
     /* Build the result algebraically.  Might go infinite, underflow, etc;
@@ -51,6 +58,8 @@ ieee_extended_to_double (ext_format, from, to)
     mant0 |= 0x80000000;
     dto = ldexp  ((double)mant0, exp - EXT_EXP_BIAS - 31);
     dto += ldexp ((double)mant1, exp - EXT_EXP_BIAS - 31 - 32);
+    if (ufrom[EXPBYTE_H] & SIGNMASK)   /* If negative... */
+      dto = -dto;                      /* ...negate.  */
   }
   *to = dto;
 }
@@ -129,10 +138,10 @@ ieee_test (n)
   extern struct ext_format ext_format_68881;
 
   for (i = 0; i < n; i++) {
-    di.i[0] = random();
-    di.i[1] = random();
-    double_to_ieee_extended (ext_format_68881, &di.d, exten);
-    ieee_extended_to_double (ext_format_68881, exten, &result);
+    di.i[0] = (random() << 16) | (random() & 0xffff);
+    di.i[1] = (random() << 16) | (random() & 0xffff);
+    double_to_ieee_extended (&ext_format_68881, &di.d, exten);
+    ieee_extended_to_double (&ext_format_68881, exten, &result);
     if (di.d != result)
       printf ("Differ: %x %x %g => %x %x %g\n", di.d, di.d, result, result);
   }
index 5724f423977fdeb8ff96f8637543fd7c49dd1b7c..af19fd484f9a0769b807f4d172a1860b0293e7c7 100644 (file)
@@ -250,7 +250,6 @@ nindy_detach (name, from_tty)
      char *name;
      int from_tty;
 {
-  dont_repeat ();
   if (name)
     error ("Too many arguments");
   pop_target ();
index 740da408b8f8aad30f0d946579600e1419f9ca62..9a0c4ce989a81847e3dbdd29f67216251cfdb821 100755 (executable)
@@ -31,7 +31,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 static CONST char undoc[] = "unknown signal";
 
-CONST char *sys_siglist[NSIG];
+char *sys_siglist[NSIG];
 #endif /* SYS_SIGLIST_MISSING */
 
 /* Table of abbreviations for signals.  Note:  A given number can
@@ -62,6 +62,8 @@ init_sig (number, abbrev, name)
 static void init_sigs ()
 {
 #ifdef SYS_SIGLIST_MISSING
+  int i;
+
   /* Initialize signal names.  */
        for (i = 0; i < NSIG; i++)
                sys_siglist[i] = undoc;
index 59f89671fa9b86536a6a547619131bbd2b6251f6..4f35e3a937452c15490c043ba110a1646e895aa7 100644 (file)
@@ -99,11 +99,16 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #define INVALID_FLOAT(p, len) (0)
 
+#if 0
 /* code to execute to print interesting information about the
- * floating point processor (if any)
- * No need to define if there is nothing to do.
+   floating point processor (if any)
+   No need to define if there is nothing to do.
+   On the 386, unfortunately this code is host-dependent (and lives
+   in the i386-xdep.c file), so we can't
+   do this unless we *know* we aren't cross-debugging.  FIXME.
  */
 #define FLOAT_INFO { i386_float_info (); }
+#endif 0
 
 /* Say how long (ordinary) registers are.  */
 
index 39ec8eab324dd1bd01ace8fed56c7f824b0eb953..5d40882646d458d1572af9ba96a0176d90ed438e 100644 (file)
@@ -1111,6 +1111,11 @@ unpack_field_as_long (type, valaddr, fieldno)
   return val;
 }
 
+/* Modify the value of a bitfield.  ADDR points to a block of memory in
+   target byte order; the bitfield starts in the byte pointed to.  FIELDVAL
+   is the desired value of the field, in host byte order.  BITPOS and BITSIZE
+   indicate which bits (in target bit order) comprise the bitfield.  */
+
 void
 modify_field (addr, fieldval, bitpos, bitsize)
      char *addr;
@@ -1125,14 +1130,17 @@ modify_field (addr, fieldval, bitpos, bitsize)
     error ("Value %d does not fit in %d bits.", fieldval, bitsize);
   
   bcopy (addr, &oword, sizeof oword);
+  SWAP_TARGET_AND_HOST (&oword, sizeof oword);         /* To host format */
 
-  /* Shifting for bit field depends on endianness of the machine.  */
+  /* Shifting for bit field depends on endianness of the target machine.  */
 #ifdef BITS_BIG_ENDIAN
   bitpos = sizeof (oword) * 8 - bitpos - bitsize;
 #endif
 
   oword &= ~(((1 << bitsize) - 1) << bitpos);
   oword |= fieldval << bitpos;
+
+  SWAP_TARGET_AND_HOST (&oword, sizeof oword);         /* To target format */
   bcopy (&oword, addr, sizeof oword);
 }
 \f