# Apply these patches to GDB to produce an Energize GDB. # To apply these patches, first cd to gdb-XX/gdb, run "patch -p0 m2-exp.tab.c -rm y.tab.c - main.o: ${srcdir}/main.c ${CC} -c ${INTERNAL_CFLAGS} -I${READLINE_DIR} $< --- 665,670 ---- =================================================================== RCS file: /local/cvsfiles/devo/gdb/breakpoint.c,v retrieving revision 1.40 diff -c -r1.40 breakpoint.c *** 1.40 1992/07/16 23:23:02 --- breakpoint.c 1992/07/16 23:23:58 *************** *** 273,278 **** --- 273,279 ---- b->cond_string = NULL; if (from_tty) printf_filtered ("Breakpoint %d now unconditional.\n", bnum); + energize_condition_breakpoint(b); } else { *************** *** 281,286 **** --- 282,288 ---- 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); + energize_condition_breakpoint(b); if (*arg) error ("Junk at end of expression"); } *************** *** 316,327 **** 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); l = read_command_lines (); free_command_lines (&b->commands); b->commands = l; return; } error ("No breakpoint number %d.", bnum); --- 318,330 ---- ALL_BREAKPOINTS (b) if (b->number == bnum) { ! if ((from_tty && input_from_terminal_p ()) || energize) 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; + energize_commands_breakpoint(b); return; } error ("No breakpoint number %d.", bnum); *************** *** 922,927 **** --- 925,931 ---- { b->ignore_count--; this_bp_stop = 0; + energize_ignore_breakpoint(b); } else { *************** *** 1366,1371 **** --- 1370,1377 ---- mention (b) struct breakpoint *b; { + energize_create_breakpoint(b); + switch (b->type) { case bp_watchpoint: *************** *** 2113,2118 **** --- 2119,2126 ---- register struct breakpoint *b; register bpstat bs; + energize_delete_breakpoint(bpt); + if (bpt->inserted) target_remove_breakpoint(bpt->address, bpt->shadow_contents); *************** *** 2284,2289 **** --- 2292,2298 ---- if (b->number == bptnum) { b->ignore_count = count; + energize_ignore_breakpoint(b); if (!from_tty) return; else if (count == 0) *************** *** 2308,2314 **** struct breakpoint *b; ALL_BREAKPOINTS (b) ! b->ignore_count = 0; } /* Command to set ignore-count of breakpoint N to COUNT. */ --- 2317,2326 ---- struct breakpoint *b; ALL_BREAKPOINTS (b) ! { ! b->ignore_count = 0; ! energize_ignore_breakpoint(b); ! } } /* Command to set ignore-count of breakpoint N to COUNT. */ *************** *** 2375,2380 **** --- 2387,2394 ---- { bpt->enable = enabled; + energize_enable_breakpoint(bpt); + if (xgdb_verbose && bpt->type == bp_breakpoint) printf ("breakpoint #%d enabled\n", bpt->number); *************** *** 2422,2427 **** --- 2436,2443 ---- disable_breakpoint (bpt) struct breakpoint *bpt; { + energize_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.18 diff -c -r1.18 command.c *** 1.18 1992/07/10 17:22:30 --- command.c 1992/07/16 22:44:12 *************** *** 1148,1154 **** } if (pid != -1) ! while ((rc = wait (&status)) != pid && rc != -1) ; else error ("Fork failed"); --- 1148,1154 ---- } if (pid != -1) ! while ((rc = energize_wait (&status)) != pid && rc != -1) ; else error ("Fork failed"); =================================================================== RCS file: /local/cvsfiles/devo/gdb/configure.in,v retrieving revision 1.51 diff -c -r1.51 configure.in *** 1.51 1992/07/07 07:22:33 --- configure.in 1992/07/16 22:44:14 *************** *** 1,4 **** ! configdirs="doc" srcname="GDB" srctrigger=main.c target_dependent=true --- 1,4 ---- ! configdirs="energize doc" srcname="GDB" srctrigger=main.c target_dependent=true =================================================================== RCS file: /local/cvsfiles/devo/gdb/defs.h,v retrieving revision 1.43 diff -c -r1.43 defs.h *** 1.43 1992/07/09 04:40:24 --- defs.h 1992/07/16 22:48:44 *************** *** 805,808 **** --- 805,810 ---- #define MAINTENANCE_CMDS 1 #endif + #include "energize.h" + #endif /* !defined (DEFS_H) */ =================================================================== RCS file: /local/cvsfiles/devo/gdb/inflow.c,v retrieving revision 1.27 diff -c -r1.27 inflow.c *** 1.27 1992/07/04 03:21:21 --- inflow.c 1992/07/05 12:58:31 *************** *** 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.52 diff -c -r1.52 infrun.c *** 1.52 1992/07/04 03:21:24 --- infrun.c 1992/07/05 13:46:46 *************** *** 617,622 **** --- 617,623 ---- Here we must get it up to actual execution of the real program. */ inferior_pid = pid; /* Needed for wait_for_inferior stuff below */ + energize_new_process(); clear_proceed_status (); *************** *** 755,760 **** --- 756,762 ---- attach (pid); inferior_pid = pid; + energize_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/07/05 13:48:05 *************** *** 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,64 ---- #ifdef USE_PROC_FS pid = proc_wait (status); #else ! pid = energize_wait (status); #endif if (pid == -1) /* No more children to wait for */ { =================================================================== RCS file: /local/cvsfiles/devo/gdb/main.c,v retrieving revision 1.51 diff -c -r1.51 main.c *** 1.51 1992/07/10 17:22:33 --- main.c 1992/07/17 23:22:19 *************** *** 426,431 **** --- 426,432 ---- char *corearg = NULL; char *cdarg = NULL; char *ttyarg = NULL; + char *energize_id = NULL; /* Pointers to all arguments of +command option. */ char **cmdarg; *************** *** 524,529 **** --- 525,531 ---- {"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 *************** *** 556,561 **** --- 558,566 ---- case 11: cdarg = optarg; break; + case 12: + energize_id = optarg; + break; case 's': symarg = optarg; break; *************** *** 736,741 **** --- 741,748 ---- free ((PTR)dirarg); do_cleanups (ALL_CLEANUPS); + energize_initialize (energize_id, execarg); + if (execarg != NULL && symarg != NULL && strcmp (execarg, symarg) == 0) *************** *** 850,856 **** if (!setjmp (to_top_level)) { do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */ ! command_loop (); quit_command ((char *)0, instream == stdin); } } --- 857,866 ---- if (!setjmp (to_top_level)) { do_cleanups (ALL_CLEANUPS); /* Do complete cleanup */ ! if (energize) ! energize_main_loop(); ! else ! command_loop (); quit_command ((char *)0, instream == stdin); } } *************** *** 912,918 **** 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). */ --- 922,928 ---- else if (c->function.cfunc == NO_FUNCTION) error ("That is not a command, just a help topic."); else ! energize_call_command (c, arg, from_tty & caution); } /* Tell the user if the language has changed (except first time). */ *************** *** 1564,1570 **** while (1) { dont_repeat (); ! p = command_line_input ((char *) NULL, instream == stdin); if (p == NULL) /* Treat end of file like "end". */ break; --- 1574,1580 ---- while (1) { dont_repeat (); ! p = energize_command_line_input ((char *) NULL, instream == stdin); if (p == NULL) /* Treat end of file like "end". */ break; *************** *** 1868,1874 **** void print_prompt () { ! printf ("%s", prompt); fflush (stdout); } --- 1878,1884 ---- void print_prompt () { ! printf_filtered ("%s", prompt); fflush (stdout); } =================================================================== RCS file: /local/cvsfiles/devo/gdb/printcmd.c,v retrieving revision 1.30 diff -c -r1.30 printcmd.c *** 1.30 1992/07/06 00:22:52 --- printcmd.c 1992/07/16 22:44:42 *************** *** 778,783 **** --- 778,792 ---- { int histindex = record_latest_value (val); + if (energize) + { + char buf[20]; + + sprintf(buf, "$%d", histindex); + energize_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,799 ---- if (histindex >= 0) printf_filtered ("$%d = ", histindex); print_formatted (val, format, fmt.size); + energize_end_variable_annotation(); printf_filtered ("\n"); if (inspect) printf("\") )\030"); *************** *** 1653,1663 **** --- 1663,1681 ---- standard indentation here is 4 spaces, and val_print indents 2 for each recurse. */ val = read_var_value (sym, FRAME_INFO_ID (fi)); + + energize_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); + + energize_end_variable_annotation(); + first = 0; } =================================================================== RCS file: /local/cvsfiles/devo/gdb/stack.c,v retrieving revision 1.33 diff -c -r1.33 stack.c *** 1.33 1992/07/04 03:21:45 --- stack.c 1992/07/05 14:13:23 *************** *** 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 (energize) ! energize_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 (energize) ! energize_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 (!energize) ! 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 (energize) ! energize_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.55 diff -c -r1.55 symfile.c *** 1.55 1992/07/04 13:58:46 --- symfile.c 1992/07/05 14:14:12 *************** *** 611,616 **** --- 611,618 ---- fflush (stdout); } + energize_symbol_file(objfile); + return (objfile); } =================================================================== RCS file: /local/cvsfiles/devo/gdb/utils.c,v retrieving revision 1.54 diff -c -r1.54 utils.c *** 1.54 1992/07/09 04:40:35 --- utils.c 1992/07/16 22:44:50 *************** *** 694,700 **** register int ans2; /* Automatically answer "yes" if input is not from a terminal. */ ! if (!input_from_terminal_p ()) return 1; while (1) --- 694,700 ---- register int ans2; /* Automatically answer "yes" if input is not from a terminal. */ ! if (!input_from_terminal_p () && !energize) 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') --- 701,732 ---- { va_start (args); ctlstr = va_arg (args, char *); + energize_query (ctlstr, args); vfprintf_filtered (stdout, ctlstr, args); printf_filtered ("(y or n) "); ! if (energize) ! { ! char *buf; ! ! buf = energize_command_line_input(0, 0); ! answer = buf ? *buf : 'Y'; ! energize_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 **** --- 734,740 ---- if (answer == 'N') return 0; printf_filtered ("Please answer y or n.\n"); + va_end (args); } } *************** *** 989,994 **** --- 1001,1012 ---- if (linebuffer == 0) return; + if (energize) + { + energize_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.48 diff -c -r1.48 valprint.c *** 1.48 1992/07/10 03:56:06 --- valprint.c 1992/07/16 22:44:53 *************** *** 485,490 **** --- 485,491 ---- struct type **dont_print; { int i, len, n_baseclasses; + char expr_tag[100]; /* Energize */ check_stub_type (type); *************** *** 549,554 **** --- 550,562 ---- fprint_symbol (stream, TYPE_FIELD_NAME (type, i)); fputs_filtered (" = ", stream); } + + sprintf(expr_tag, ".%s", TYPE_FIELD_NAME(type, i)); + + energize_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 **** --- 575,581 ---- valaddr + TYPE_FIELD_BITPOS (type, i) / 8, 0, stream, format, 0, recurse + 1, pretty); } + energize_end_variable_annotation(); } if (pretty) { *************** *** 801,806 **** --- 810,816 ---- unsigned int rep1; /* Number of repetitions we have detected so far. */ unsigned int reps; + char expr_tag[100]; /* Energize */ if (i != 0) if (arrayprint) *************** *** 822,827 **** --- 832,842 ---- ++rep1; } + sprintf(expr_tag, "[%d]", i); + energize_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 **** --- 853,859 ---- recurse + 1, pretty); things_printed++; } + energize_end_variable_annotation(); } if (i < len) fprintf_filtered (stream, "..."); =================================================================== RCS file: /local/cvsfiles/devo/gdb/config/amix.mh,v retrieving revision 1.4 diff -c -r1.4 amix.mh *** 1.4 1992/06/10 02:05:16 --- config/amix.mh 1992/07/05 17:47:19 *************** *** 22,24 **** --- 22,31 ---- # SVR4 puts the BSD compatible install in /usr/ucb. INSTALL = /usr/ucb/install -c + + # These are the libs that are needed for the Energize 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. + ENERGIZE_LIB = energize/libconn.a + ENERGIZE_LIBS = ${ENERGIZE_LIB} -L/usr/lib -lm -lnet -lresolv -lform \ + -lsocket -lc /usr/ucblib/libucb.a -lnsl =================================================================== RCS file: /local/cvsfiles/devo/gdb/config/ncr3000.mh,v retrieving revision 1.4 diff -c -r1.4 ncr3000.mh *** 1.4 1992/06/15 19:25:13 --- config/ncr3000.mh 1992/07/05 17:49:34 *************** *** 38,40 **** --- 38,47 ---- # 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 Energize 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. + ENERGIZE_LIB = energize/libconn.a + ENERGIZE_LIBS = ${ENERGIZE_LIB} -L/usr/lib -lm -lnet -lresolv -lform \ + -lsocket -lc /usr/ucblib/libucb.a -lnsl