# Apply these patches to GDB to produce an Energize GDB. # To apply these patches, first cd to gdb-XX/gdb, then run patch -p0 < thisfile. =================================================================== diff -rc Makefile.in.orig Makefile.in *** Makefile.in.orig Tue Jun 23 08:59:44 1992 --- Makefile.in Tue Jun 23 12:00:54 1992 *************** *** 182,188 **** # demangling. For other demangling styles, such as the Annotated C++ # Reference Manual (section 7.2.1c) style, set this define in the target- # dependent makefile fragment. ! DEMANGLE_OPTS= # Host and target-dependent makefile fragments come in here. #### --- 182,193 ---- # demangling. For other demangling styles, such as the Annotated C++ # Reference Manual (section 7.2.1c) style, set this define in the target- # dependent makefile fragment. ! # ! # For Energize, default to using style specified in the Annotated C++ ! # Reference Manual, section 7.2.1c, which is what is used by the Lucid C++ ! # compiler for most things. But there are places where Lucid varies from ! # the ARM, so select the Lucid specific code also. ! DEMANGLE_OPTS=-DARM_DEMANGLING -DLUCID_DEMANGLING # Host and target-dependent makefile fragments come in here. #### =================================================================== RCS file: /local/cvsfiles/devo/gdb/.Sanitize,v retrieving revision 2.55 diff -c -r2.55 .Sanitize *** 2.55 1992/06/23 05:03:32 --- .Sanitize 1992/06/23 05:03:51 *************** *** 53,58 **** --- 53,59 ---- buildsym.c buildsym.h c-exp.y + cadillac.c call-cmds.h coffread.c command.c *************** *** 70,75 **** --- 71,77 ---- cplus-dem.c createtags dbxread.c + deblib defs.h demangle.h depend =================================================================== RCS file: /local/cvsfiles/devo/gdb/Makefile.in,v retrieving revision 1.158 diff -c -r1.158 Makefile.in *** 1.158 1992/06/19 22:39:40 --- Makefile.in 1992/06/23 04:22:01 *************** *** 124,129 **** --- 124,134 ---- READLINE_DEP = $$(READLINE_DIR) RL_LIB = ./../readline${subdir}/libreadline.a + # Cadillac libraries + CADILLAC_DIR = ${srcdir}/deblib + CADILLAC_INCLUDES = -I${CADILLAC_DIR}/connection -I${CADILLAC_DIR}/debugger + CADILLAC_LIBS = ${srcdir}/deblib/connection/libconn.a + # All the includes used for CFLAGS and for lint. # -I. for config files. # -I${srcdir} possibly for regex.h also. *************** *** 156,162 **** # {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs. # TERMCAP comes after readline, since readline depends on it. CLIBS = ${BFD_LIB} ${RL_LIB} ${TERMCAP} ${MMALLOC_LIB} ${LIBIBERTY} \ ! ${XM_CLIBS} ${TM_CLIBS} CDEPS = ${XM_CDEPS} ${TM_CDEPS} ${BFD_LIB} ${MMALLOC_LIB} ${LIBIBERTY} \ ${RL_LIB} ${MMALLOC_LIB} --- 161,167 ---- # {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs. # TERMCAP comes after readline, since readline depends on it. CLIBS = ${BFD_LIB} ${RL_LIB} ${TERMCAP} ${MMALLOC_LIB} ${LIBIBERTY} \ ! ${XM_CLIBS} ${TM_CLIBS} ${CADILLAC_LIBS} CDEPS = ${XM_CDEPS} ${TM_CDEPS} ${BFD_LIB} ${MMALLOC_LIB} ${LIBIBERTY} \ ${RL_LIB} ${MMALLOC_LIB} *************** *** 195,201 **** ${DEMANGLER}.c mem-break.c target.c inftarg.c \ dbxread.c coffread.c elfread.c dwarfread.c xcoffread.c \ ieee-float.c language.c parse.c buildsym.c objfiles.c \ ! minsyms.c mipsread.c # Source files in subdirectories (which will be handled separately by # 'make gdb.tar.Z'). --- 200,206 ---- ${DEMANGLER}.c mem-break.c target.c inftarg.c \ dbxread.c coffread.c elfread.c dwarfread.c xcoffread.c \ ieee-float.c language.c parse.c buildsym.c objfiles.c \ ! minsyms.c mipsread.c cadillac.c # Source files in subdirectories (which will be handled separately by # 'make gdb.tar.Z'). *************** *** 280,286 **** command.o utils.o expprint.o environ.o version.o gdbtypes.o \ copying.o $(DEPFILES) ${DEMANGLER}.o mem-break.o target.o \ inftarg.o ieee-float.o putenv.o parse.o language.o $(YYOBJ) \ ! buildsym.o objfiles.o minsyms.o \ dbxread.o coffread.o elfread.o dwarfread.o xcoffread.o mipsread.o RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES) --- 285,291 ---- command.o utils.o expprint.o environ.o version.o gdbtypes.o \ copying.o $(DEPFILES) ${DEMANGLER}.o mem-break.o target.o \ inftarg.o ieee-float.o putenv.o parse.o language.o $(YYOBJ) \ ! buildsym.o objfiles.o minsyms.o cadillac.o \ dbxread.o coffread.o elfread.o dwarfread.o xcoffread.o mipsread.o RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES) *************** *** 695,700 **** --- 700,708 ---- ttyflush.o: ${srcdir}/nindy-share/ttyflush.c ${CC} -c ${INTERNAL_CFLAGS} ${srcdir}/nindy-share/ttyflush.c + + cadillac.o: ${srcdir}/cadillac.c + ${CC} -c ${INTERNAL_CFLAGS} ${CADILLAC_INCLUDES} ${srcdir}/cadillac.c lint: $(LINTFILES) $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \ =================================================================== RCS file: /local/cvsfiles/devo/gdb/breakpoint.c,v retrieving revision 1.36 diff -c -r1.36 breakpoint.c *** 1.36 1992/06/17 21:53:28 --- breakpoint.c 1992/06/23 04:19:21 *************** *** 273,278 **** --- 273,280 ---- b->cond_string = NULL; if (from_tty) printf_filtered ("Breakpoint %d now unconditional.\n", bnum); + if (cadillac) + cadillac_condition_breakpoint(b); } else { *************** *** 281,286 **** --- 283,290 ---- typed in or the decompiled expression. */ b->cond_string = savestring (arg, strlen (arg)); b->cond = parse_exp_1 (&arg, block_for_pc (b->address), 0); + if (cadillac) + cadillac_condition_breakpoint(b); if (*arg) error ("Junk at end of expression"); } *************** *** 316,330 **** ALL_BREAKPOINTS (b) if (b->number == bnum) { ! if (from_tty && input_from_terminal_p ()) ! { ! printf_filtered ("Type commands for when breakpoint %d is hit, one per line.\n\ End with a line saying just \"end\".\n", bnum); - fflush (stdout); - } l = read_command_lines (); free_command_lines (&b->commands); b->commands = l; return; } error ("No breakpoint number %d.", bnum); --- 320,333 ---- ALL_BREAKPOINTS (b) if (b->number == bnum) { ! if ((from_tty && input_from_terminal_p ()) || cadillac) ! printf_filtered ("Type commands for when breakpoint %d is hit, one per line.\n\ End with a line saying just \"end\".\n", bnum); l = read_command_lines (); free_command_lines (&b->commands); b->commands = l; + if (cadillac) + cadillac_commands_breakpoint(b); return; } error ("No breakpoint number %d.", bnum); *************** *** 925,930 **** --- 928,935 ---- { b->ignore_count--; this_bp_stop = 0; + if (cadillac) + cadillac_ignore_breakpoint(b); } else { *************** *** 1365,1370 **** --- 1370,1378 ---- mention (b) struct breakpoint *b; { + if (cadillac) + cadillac_create_breakpoint(b); + switch (b->type) { case bp_watchpoint: *************** *** 2106,2111 **** --- 2114,2122 ---- register struct breakpoint *b; register bpstat bs; + if (cadillac) + cadillac_delete_breakpoint(bpt); + if (bpt->inserted) target_remove_breakpoint(bpt->address, bpt->shadow_contents); *************** *** 2277,2282 **** --- 2288,2295 ---- if (b->number == bptnum) { b->ignore_count = count; + if (cadillac) + cadillac_ignore_breakpoint(b); if (!from_tty) return; else if (count == 0) *************** *** 2301,2307 **** struct breakpoint *b; ALL_BREAKPOINTS (b) ! b->ignore_count = 0; } /* Command to set ignore-count of breakpoint N to COUNT. */ --- 2314,2324 ---- struct breakpoint *b; ALL_BREAKPOINTS (b) ! { ! b->ignore_count = 0; ! if (cadillac) ! cadillac_ignore_breakpoint(b); ! } } /* Command to set ignore-count of breakpoint N to COUNT. */ *************** *** 2368,2373 **** --- 2385,2393 ---- { bpt->enable = enabled; + if (cadillac) + cadillac_enable_breakpoint(bpt); + if (xgdb_verbose && bpt->type == bp_breakpoint) printf ("breakpoint #%d enabled\n", bpt->number); *************** *** 2415,2420 **** --- 2435,2443 ---- disable_breakpoint (bpt) struct breakpoint *bpt; { + if (cadillac) + cadillac_disable_breakpoint(bpt); + bpt->enable = disabled; if (xgdb_verbose && bpt->type == bp_breakpoint) =================================================================== RCS file: /local/cvsfiles/devo/gdb/command.c,v retrieving revision 1.15 diff -c -r1.15 command.c *** 1.15 1992/06/23 03:33:41 --- command.c 1992/06/23 04:19:26 *************** *** 1149,1155 **** } if (pid != -1) ! while ((rc = wait (&status)) != pid && rc != -1) ; else error ("Fork failed"); --- 1149,1155 ---- } if (pid != -1) ! while ((rc = cadillac ? cadillac_wait(&status) : wait (&status)) != pid && rc != -1) ; else error ("Fork failed"); =================================================================== RCS file: /local/cvsfiles/devo/gdb/defs.h,v retrieving revision 1.36 diff -c -r1.36 defs.h *** 1.36 1992/06/15 14:26:55 --- defs.h 1992/06/16 01:24:19 *************** *** 774,777 **** --- 774,846 ---- extern CORE_ADDR push_word (); + /* Energize/Cadillac stuff */ + + /* Non-zero means that we're doing the cadillac interface. */ + extern int cadillac; + + /* Get a pty for use with cadillac */ + extern char *cadillac_getpty PARAMS ((void)); + + /* Notify cadillac of new process creation */ + extern void cadillac_new_process PARAMS ((void)); + + /* Low level wait routine for wait_for_inferior */ + extern int cadillac_wait PARAMS ((int *)); + + /* Initialize */ + extern void cadillac_initialize PARAMS ((char *, char *)); + + /* Main loop for cadillac protocol driver */ + extern void cadillac_main_loop PARAMS ((void)); + + struct cmd_list_element; + + /* Command hook for cadillac */ + extern void cadillac_call_command PARAMS ((struct cmd_list_element *, + char *, int)); + + /* Read commands for the command command, and others */ + extern char *cadillac_command_line_input PARAMS ((void)); + + struct symbol; + struct type; + + extern void cadillac_start_variable_annotation PARAMS ((char *, + struct symbol *, + struct type *, + CORE_ADDR, + char *)); + + extern void cadillac_end_variable_annotation PARAMS ((void)); + + extern void cadillac_annotate_function PARAMS ((char *, int, int)); + + struct objfile; + extern void cadillac_symbol_file PARAMS ((struct objfile *)); + + /*extern void cadillac_query PARAMS ((char *, ...));*/ + extern void cadillac_query (); /* Prototypes for varargs don't work */ + + extern char *cadillac_command_line_input PARAMS ((void)); + + extern void cadillac_acknowledge_query PARAMS ((char *)); + + extern void cadillac_fputs PARAMS ((const char *)); + + struct breakpoint; + extern void cadillac_condition_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_commands_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_ignore_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_create_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_delete_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_enable_breakpoint PARAMS ((struct breakpoint *)); + + extern void cadillac_disable_breakpoint PARAMS ((struct breakpoint *)); + #endif /* !defined (DEFS_H) */ =================================================================== RCS file: /local/cvsfiles/devo/gdb/inflow.c,v retrieving revision 1.25 diff -c -r1.25 inflow.c *** 1.25 1992/05/17 23:54:22 --- inflow.c 1992/06/15 23:02:32 *************** *** 81,87 **** static short pgrp_inferior; static short pgrp_ours; # else /* not def SHORT_PGRP */ ! static int pgrp_inferior; static int pgrp_ours; # endif /* not def SHORT_PGRP */ #else /* not def TIOCGPGRP */ --- 81,87 ---- static short pgrp_inferior; static short pgrp_ours; # else /* not def SHORT_PGRP */ ! int pgrp_inferior; static int pgrp_ours; # endif /* not def SHORT_PGRP */ #else /* not def TIOCGPGRP */ =================================================================== RCS file: /local/cvsfiles/devo/gdb/infrun.c,v retrieving revision 1.49 diff -c -r1.49 infrun.c *** 1.49 1992/06/23 00:24:50 --- infrun.c 1992/06/23 04:19:35 *************** *** 615,620 **** --- 615,622 ---- Here we must get it up to actual execution of the real program. */ inferior_pid = pid; /* Needed for wait_for_inferior stuff below */ + if (cadillac) + cadillac_new_process(); clear_proceed_status (); *************** *** 753,758 **** --- 755,762 ---- attach (pid); inferior_pid = pid; + if (cadillac) + cadillac_new_process(); push_target (&child_ops); mark_breakpoints_out (); =================================================================== RCS file: /local/cvsfiles/devo/gdb/inftarg.c,v retrieving revision 1.11 diff -c -r1.11 inftarg.c *** 1.11 1992/03/29 23:21:27 --- inftarg.c 1992/06/15 23:56:08 *************** *** 58,64 **** #ifdef USE_PROC_FS pid = proc_wait (status); #else ! pid = wait (status); #endif if (pid == -1) /* No more children to wait for */ { --- 58,67 ---- #ifdef USE_PROC_FS pid = proc_wait (status); #else ! if (cadillac) ! pid = cadillac_wait (status); ! else ! pid = wait (status); #endif if (pid == -1) /* No more children to wait for */ { =================================================================== RCS file: /local/cvsfiles/devo/gdb/main.c,v retrieving revision 1.47 diff -c -r1.47 main.c *** 1.47 1992/06/09 06:09:23 --- main.c 1992/06/13 03:32:16 *************** *** 397,402 **** --- 397,403 ---- char *corearg = NULL; char *cdarg = NULL; char *ttyarg = NULL; + char *cadillac_id = NULL; /* Pointers to all arguments of +command option. */ char **cmdarg; *************** *** 492,497 **** --- 493,499 ---- {"tty", required_argument, 0, 't'}, {"baud", required_argument, 0, 'b'}, {"b", required_argument, 0, 'b'}, + {"context", required_argument, 0, 12}, /* Allow machine descriptions to add more options... */ #ifdef ADDITIONAL_OPTIONS ADDITIONAL_OPTIONS *************** *** 524,529 **** --- 526,534 ---- case 11: cdarg = optarg; break; + case 12: + cadillac_id = optarg; + break; case 's': symarg = optarg; break; *************** *** 670,675 **** --- 675,683 ---- free ((PTR)dirarg); do_cleanups (ALL_CLEANUPS); + if (cadillac_id) + cadillac_initialize (cadillac_id, execarg); + if (execarg != NULL && symarg != NULL && strcmp (execarg, symarg) == 0) *************** *** 691,696 **** --- 699,705 ---- if (!setjmp (to_top_level)) symbol_file_command (symarg, 0); } + do_cleanups (ALL_CLEANUPS); /* After the symbol file has been read, print a newline to get us *************** *** 818,824 **** if (!setjmp (to_top_level)) { do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */ ! command_loop (); quit_command ((char *)0, instream == stdin); } } --- 827,836 ---- if (!setjmp (to_top_level)) { do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */ ! if (cadillac_id) ! cadillac_main_loop(); ! else ! command_loop (); quit_command ((char *)0, instream == stdin); } } *************** *** 880,886 **** else if (c->function.cfunc == NO_FUNCTION) error ("That is not a command, just a help topic."); else ! (*c->function.cfunc) (arg, from_tty & caution); } /* Tell the user if the language has changed (except first time). */ --- 892,901 ---- else if (c->function.cfunc == NO_FUNCTION) error ("That is not a command, just a help topic."); else ! if (cadillac) ! cadillac_call_command (c, arg, from_tty & caution); ! else ! (*c->function.cfunc) (arg, from_tty & caution); } /* Tell the user if the language has changed (except first time). */ *************** *** 1516,1522 **** while (1) { dont_repeat (); ! p = command_line_input ((char *) NULL, instream == stdin); if (p == NULL) /* Treat end of file like "end". */ break; --- 1531,1540 ---- while (1) { dont_repeat (); ! if (cadillac) ! p = cadillac_command_line_input(); ! else ! p = command_line_input ((char *) NULL, instream == stdin); if (p == NULL) /* Treat end of file like "end". */ break; *************** *** 1820,1826 **** void print_prompt () { ! printf ("%s", prompt); fflush (stdout); } --- 1838,1844 ---- void print_prompt () { ! printf_filtered ("%s", prompt); fflush (stdout); } =================================================================== RCS file: /local/cvsfiles/devo/gdb/printcmd.c,v retrieving revision 1.28 diff -c -r1.28 printcmd.c *** 1.28 1992/06/13 18:20:41 --- printcmd.c 1992/06/14 22:11:35 *************** *** 778,783 **** --- 778,792 ---- { int histindex = record_latest_value (val); + if (cadillac) + { + char buf[20]; + + sprintf(buf, "$%d", histindex); + cadillac_start_variable_annotation(buf, NULL, VALUE_TYPE(val), + VALUE_ADDRESS(val), ""); + } + if (inspect) printf ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex); else *************** *** 784,789 **** --- 793,800 ---- if (histindex >= 0) printf_filtered ("$%d = ", histindex); print_formatted (val, format, fmt.size); + if (cadillac) + cadillac_end_variable_annotation(); printf_filtered ("\n"); if (inspect) printf("\") )\030"); *************** *** 1608,1618 **** --- 1619,1639 ---- standard indentation here is 4 spaces, and val_print indents 2 for each recurse. */ val = read_var_value (sym, FRAME_INFO_ID (fi)); + + if (cadillac) + cadillac_start_variable_annotation(SYMBOL_NAME(sym), sym, + VALUE_TYPE(val), + VALUE_ADDRESS(val), ""); + if (val) val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val), stream, 0, 0, 2, Val_no_prettyprint); else fputs_filtered ("???", stream); + + if (cadillac) + cadillac_end_variable_annotation(); + first = 0; } =================================================================== RCS file: /local/cvsfiles/devo/gdb/stack.c,v retrieving revision 1.30 diff -c -r1.30 stack.c *** 1.30 1992/06/20 23:30:33 --- stack.c 1992/06/23 04:19:48 *************** *** 159,165 **** if (addressprint) printf_filtered ("%s in ", local_hex_string(fi->pc)); ! fputs_demangled (fname, stdout, 0); fputs_filtered (" (...)\n", stdout); return; --- 159,168 ---- if (addressprint) printf_filtered ("%s in ", local_hex_string(fi->pc)); ! if (cadillac) ! cadillac_annotate_function(fname, 0, level); ! else ! fputs_demangled (fname, stdout, 0); fputs_filtered (" (...)\n", stdout); return; *************** *** 218,224 **** if (addressprint) if (fi->pc != sal.pc || !sal.symtab) printf_filtered ("%s in ", local_hex_string(fi->pc)); ! fputs_demangled (funname ? funname : "??", stdout, 0); wrap_here (" "); fputs_filtered (" (", stdout); if (args) --- 221,230 ---- if (addressprint) if (fi->pc != sal.pc || !sal.symtab) printf_filtered ("%s in ", local_hex_string(fi->pc)); ! if (cadillac) ! cadillac_annotate_function(funname ? funname : "??", 0, level); ! else ! fputs_demangled (funname ? funname : "??", stdout, 0); wrap_here (" "); fputs_filtered (" (", stdout); if (args) *************** *** 255,261 **** { if (addressprint && mid_statement) printf_filtered ("%s\t", local_hex_string(fi->pc)); ! print_source_lines (sal.symtab, sal.line, sal.line + 1, 0); } current_source_line = max (sal.line - lines_to_list/2, 1); } --- 261,268 ---- { if (addressprint && mid_statement) printf_filtered ("%s\t", local_hex_string(fi->pc)); ! if (!cadillac) ! print_source_lines (sal.symtab, sal.line, sal.line + 1, 0); } current_source_line = max (sal.line - lines_to_list/2, 1); } *************** *** 429,435 **** if (funname) { printf_filtered (" in "); ! fputs_demangled (funname, stdout, DMGL_ANSI | DMGL_PARAMS); } wrap_here (" "); if (sal.symtab) --- 436,446 ---- if (funname) { printf_filtered (" in "); ! if (cadillac) ! cadillac_annotate_function(funname, DMGL_ANSI | DMGL_PARAMS, ! selected_frame_level); ! else ! fputs_demangled (funname, stdout, DMGL_ANSI | DMGL_PARAMS); } wrap_here (" "); if (sal.symtab) =================================================================== RCS file: /local/cvsfiles/devo/gdb/symfile.c,v retrieving revision 1.53 diff -c -r1.53 symfile.c *** 1.53 1992/06/13 16:20:12 --- symfile.c 1992/06/14 22:11:39 *************** *** 555,560 **** --- 555,563 ---- fflush (stdout); } + if (cadillac) + cadillac_symbol_file(objfile); + return (objfile); } =================================================================== RCS file: /local/cvsfiles/devo/gdb/utils.c,v retrieving revision 1.50 diff -c -r1.50 utils.c *** 1.50 1992/06/15 14:27:07 --- utils.c 1992/06/16 01:24:28 *************** *** 96,101 **** --- 96,102 ---- char *error_pre_print; char *warning_pre_print = "\nwarning: "; + /* Add a new cleanup to the cleanup_chain, and return the previous chain pointer *************** *** 694,700 **** register int ans2; /* Automatically answer "yes" if input is not from a terminal. */ ! if (!input_from_terminal_p ()) return 1; while (1) --- 695,701 ---- register int ans2; /* Automatically answer "yes" if input is not from a terminal. */ ! if (!input_from_terminal_p () && !cadillac) return 1; while (1) *************** *** 701,721 **** { va_start (args); ctlstr = va_arg (args, char *); vfprintf_filtered (stdout, ctlstr, args); - va_end (args); printf_filtered ("(y or n) "); ! fflush (stdout); ! answer = fgetc (stdin); ! clearerr (stdin); /* in case of C-d */ ! if (answer == EOF) /* C-d */ ! return 1; ! if (answer != '\n') /* Eat rest of input line, to EOF or newline */ ! do ! { ! ans2 = fgetc (stdin); ! clearerr (stdin); ! } ! while (ans2 != EOF && ans2 != '\n'); if (answer >= 'a') answer -= 040; if (answer == 'Y') --- 702,734 ---- { va_start (args); ctlstr = va_arg (args, char *); + if (cadillac) + cadillac_query (ctlstr, args); vfprintf_filtered (stdout, ctlstr, args); printf_filtered ("(y or n) "); ! if (cadillac) ! { ! char *buf; ! ! buf = cadillac_command_line_input(); ! answer = buf ? *buf : 'Y'; ! cadillac_acknowledge_query(buf); ! } ! else ! { ! fflush (stdout); ! answer = fgetc (stdin); ! clearerr (stdin); /* in case of C-d */ ! if (answer == EOF) /* C-d */ ! return 1; ! if (answer != '\n') /* Eat rest of input line, to EOF or newline */ ! do ! { ! ans2 = fgetc (stdin); ! clearerr (stdin); ! } ! while (ans2 != EOF && ans2 != '\n'); ! } if (answer >= 'a') answer -= 040; if (answer == 'Y') *************** *** 723,728 **** --- 736,742 ---- if (answer == 'N') return 0; printf_filtered ("Please answer y or n.\n"); + va_end (args); } } *************** *** 989,994 **** --- 1003,1014 ---- if (linebuffer == 0) return; + if (cadillac) + { + cadillac_fputs(linebuffer); + return; + } + /* Don't do any filtering if it is disabled. */ if (stream != stdout || (lines_per_page == UINT_MAX && chars_per_line == UINT_MAX)) =================================================================== RCS file: /local/cvsfiles/devo/gdb/valprint.c,v retrieving revision 1.42 diff -c -r1.42 valprint.c *** 1.42 1992/06/23 03:33:47 --- valprint.c 1992/06/23 04:19:55 *************** *** 485,490 **** --- 485,491 ---- struct type **dont_print; { int i, len, n_baseclasses; + char expr_tag[100]; /* Cadillac */ check_stub_type (type); *************** *** 549,554 **** --- 550,563 ---- fputs_filtered (TYPE_FIELD_NAME (type, i), stream); fputs_filtered (" = ", stream); } + + sprintf(expr_tag, ".%s", TYPE_FIELD_NAME(type, i)); + + if (cadillac) + cadillac_start_variable_annotation(expr_tag, NULL, + TYPE_FIELD_TYPE(type, i), + (CORE_ADDR) (valaddr + TYPE_FIELD_BITPOS(type, i) / 8), + ""); if (TYPE_FIELD_PACKED (type, i)) { value v; *************** *** 567,572 **** --- 576,583 ---- valaddr + TYPE_FIELD_BITPOS (type, i) / 8, 0, stream, format, 0, recurse + 1, pretty); } + if (cadillac) + cadillac_end_variable_annotation(); } if (pretty) { *************** *** 801,806 **** --- 812,818 ---- unsigned int rep1; /* Number of repetitions we have detected so far. */ unsigned int reps; + char expr_tag[100]; /* Cadillac */ if (i != 0) if (arrayprint) *************** *** 822,827 **** --- 834,845 ---- ++rep1; } + sprintf(expr_tag, "[%d]", i); + if (cadillac) + cadillac_start_variable_annotation(expr_tag, NULL, + elttype, + (CORE_ADDR) (valaddr + i * eltlen), + ""); if (reps > REPEAT_COUNT_THRESHOLD) { val_print (elttype, valaddr + i * eltlen, *************** *** 838,843 **** --- 856,863 ---- recurse + 1, pretty); things_printed++; } + if (cadillac) + cadillac_end_variable_annotation(); } if (i < len) fprintf_filtered (stream, "..."); =================================================================== RCS file: /local/cvsfiles/devo/gdb/config/ncr3000.mh,v retrieving revision 1.4 diff -c -r1.4 config/ncr3000.mh *** 1.4 1992/06/15 19:25:13 --- config/ncr3000.mh 1992/06/16 01:28:40 *************** *** 38,40 **** --- 38,46 ---- # The /usr/ucb/install program is incompatible (complains about unknown # group staff). Use good old cp... INSTALL = cp + + # These are the libs that are needed for the Cadillac version of gdb on + # SVR4. Note that we MUST include the standard C library before libucb.a, + # otherwise we get lots of broken stuff we don't want. + CADILLAC_LIBS = ${srcdir}/deblib/connection/libconn.a -L/usr/lib -lm -lnet \ + -lresolv -lform -lsocket -lc /usr/ucblib/libucb.a -lnsl