From 836e343b0145663c08f87d6e0cfdf2d43c493e53 Mon Sep 17 00:00:00 2001 From: John Gilmore Date: Sat, 26 Sep 1992 05:20:24 +0000 Subject: [PATCH] Split non-target-dependent code out of target_attach routines. * target.h: Comments on target_attach args and results. * infcmd.c (attach_command): Check for existing execution, call target_attach, set up terminal status and wait_for_inferior, wait for the attach status, and do normal_stop. * inftarg.c (child_attach): Remove target independent stuff. * remote-adapt.c (adapt_attach): Ditto. * remote-mm.c (mm_attach): Ditto. * remote-udi.c (udi_attach): Ditto. * remote-vx.c (vx_attach): Ditto. Cleanup. * remote-hms.c (hms_attach): Remove completely, it was useless. * remote-mm.c, remote-hms.c, remote-udi.c, remote-adapt.c: Remove commented-out start_remote calls. * remote-hms.c, remote-adapt.c, remote-mm.c, remote-udi.c: Remove DENTER and DEXIT macros and their calls. Use a real debugger -- like gdb -- to see what functions are being called when. --- gdb/ChangeLog | 23 +++++++++++++ gdb/inftarg.c | 25 +------------- gdb/remote-adapt.c | 71 ++------------------------------------ gdb/remote-hms.c | 85 +++------------------------------------------- gdb/remote-mm.c | 77 ----------------------------------------- gdb/remote-udi.c | 49 ++------------------------ gdb/remote-vx.c | 22 +----------- gdb/target.h | 20 ++++++++++- 8 files changed, 52 insertions(+), 320 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2ce5bd36a3..7f7d4f9a41 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,26 @@ +Fri Sep 25 21:59:27 1992 John Gilmore (gnu@cygnus.com) + + Split non-target-dependent code out of target_attach routines. + + * target.h: Comments on target_attach args and results. + * infcmd.c (attach_command): Check for existing execution, call + target_attach, set up terminal status and wait_for_inferior, wait + for the attach status, and do normal_stop. + * inftarg.c (child_attach): Remove target independent stuff. + * remote-adapt.c (adapt_attach): Ditto. + * remote-mm.c (mm_attach): Ditto. + * remote-udi.c (udi_attach): Ditto. + * remote-vx.c (vx_attach): Ditto. + + Cleanup. + + * remote-hms.c (hms_attach): Remove completely, it was useless. + * remote-mm.c, remote-hms.c, remote-udi.c, remote-adapt.c: Remove + commented-out start_remote calls. + * remote-hms.c, remote-adapt.c, remote-mm.c, remote-udi.c: Remove + DENTER and DEXIT macros and their calls. Use a real debugger -- + like gdb -- to see what functions are being called when. + Fri Sep 25 18:48:20 1992 John Gilmore (gnu@cygnus.com) * infrun.c, inftarg.c, inferior.h: Comment and lint cleanups. diff --git a/gdb/inftarg.c b/gdb/inftarg.c index 5717408f65..e357c0ebbe 100644 --- a/gdb/inftarg.c +++ b/gdb/inftarg.c @@ -94,8 +94,7 @@ child_wait (status) } -/* Attach to process PID, then initialize for debugging it - and wait for the trace-trap that results from attaching. */ +/* Attach to process PID, then initialize for debugging it. */ static void child_attach (args, from_tty) @@ -105,8 +104,6 @@ child_attach (args, from_tty) char *exec_file; int pid; - dont_repeat(); - if (!args) error_no_arg ("process-id to attach"); @@ -118,14 +115,6 @@ child_attach (args, from_tty) if (pid == getpid()) /* Trying to masturbate? */ error ("I refuse to debug myself!"); - if (target_has_execution) - { - if (query ("A program is being debugged already. Kill it? ")) - target_kill (); - else - error ("Inferior not killed."); - } - if (from_tty) { exec_file = (char *) get_exec_file (0); @@ -141,18 +130,6 @@ child_attach (args, from_tty) attach (pid); inferior_pid = pid; push_target (&child_ops); - - mark_breakpoints_out (); - target_terminal_init (); - clear_proceed_status (); - stop_soon_quietly = 1; - /*proceed (-1, 0, -2);*/ - target_terminal_inferior (); - wait_for_inferior (); -#ifdef SOLIB_ADD - SOLIB_ADD ((char *)0, from_tty, (struct target_ops *)0); -#endif - normal_stop (); #endif /* ATTACH_DETACH */ } diff --git a/gdb/remote-adapt.c b/gdb/remote-adapt.c index 9241573eec..374c9dec49 100644 --- a/gdb/remote-adapt.c +++ b/gdb/remote-adapt.c @@ -68,16 +68,6 @@ static int processor_type=TYPE_UNKNOWN; #define FREEZE_MODE (read_register(CPS_REGNUM) && 0x400) #define USE_SHADOW_PC ((processor_type == TYPE_A29050) && FREEZE_MODE) - -/* #define DEBUG /* */ -#ifdef DEBUG -# define DENTER(NAME) (printf_filtered("Entering %s\n",NAME), fflush(stdout)) -# define DEXIT(NAME) (printf_filtered("Exiting %s\n",NAME), fflush(stdout)) -#else -# define DENTER(NAME) -# define DEXIT(NAME) -#endif - /* Can't seem to get binary coff working */ #define ASCII_COFF /* Adapt will be downloaded with ascii coff */ @@ -325,11 +315,9 @@ adapt_kill(arg,from_tty) char *arg; int from_tty; { - DENTER("adapt_kill()"); fprintf (adapt_stream, "K"); fprintf (adapt_stream, "\r"); expect_prompt (); - DEXIT("adapt_kill()"); } /* * Download a file specified in 'args', to the adapt. @@ -344,7 +332,6 @@ int fromtty; int n; char buffer[1024]; - DENTER("adapt_load()"); if (!adapt_stream) { printf_filtered("Adapt not open. Use 'target' command to open adapt\n"); return; @@ -384,7 +371,6 @@ int fromtty; expect_prompt (); /* Skip garbage that comes out */ fprintf (adapt_stream, "\r"); expect_prompt (); - DEXIT("adapt_load()"); } /* This is called not only when we first attach, but also when the @@ -397,8 +383,6 @@ adapt_create_inferior (execfile, args, env) { int entry_pt; - DENTER("adapt_create_inferior()"); - if (args && *args) error ("Can't pass arguments to remote adapt process."); @@ -439,7 +423,6 @@ adapt_create_inferior (execfile, args, env) } else { printf_filtered("Adapt not open yet.\n"); } - DEXIT("adapt_create_inferior()"); } /* Translate baud rates from integers to damn B_codes. Unix should @@ -498,7 +481,6 @@ adapt_open (name, from_tty) unsigned int prl; char *p; - DENTER("adapt_open()"); /* Find the first whitespace character, it separates dev_name from prog_name. */ if (name == 0) @@ -555,8 +537,6 @@ the baud rate, and the name of the program to run on the remote system."); adapt_stream = fdopen (adapt_desc, "r+"); push_target (&adapt_ops); - /* start_remote (); /* Initialize gdb process mechanisms */ - #ifndef HAVE_TERMIO #ifndef NO_SIGINTERRUPT @@ -615,7 +595,6 @@ the baud rate, and the name of the program to run on the remote system."); fprintf_filtered(stderr, "Freeze-mode debugging not available, and can only be done on an A29050.\n"); } - DEXIT("adapt_open()"); } /* Close out all files and local state before this target loses control. */ @@ -625,8 +604,6 @@ adapt_close (quitting) int quitting; { - DENTER("adapt_close()"); - /* Clear any break points */ adapt_clear_breakpoints(); @@ -658,7 +635,6 @@ adapt_close (quitting) log_file = NULL; } #endif - DEXIT("adapt_close()"); } /* Attach to the target that is already loaded and possibly running */ @@ -668,26 +644,12 @@ adapt_attach (args, from_tty) int from_tty; { - DENTER("adapt_attach()"); if (from_tty) printf_filtered ("Attaching to remote program %s.\n", prog_name); - /* push_target(&adapt_ops); /* This done in adapt_open() */ - - mark_breakpoints_out (); - /* Send the adapt a kill. It is ok if it is not already running */ fprintf(adapt_stream, "K\r"); fflush(adapt_stream); expect_prompt(); /* Slurp the echo */ - - /* We will get a task spawn event immediately. */ - init_wait_for_inferior (); - clear_proceed_status (); - stop_soon_quietly = 1; - wait_for_inferior (); - stop_soon_quietly = 0; - normal_stop (); - DEXIT("adapt_attach()"); } @@ -699,7 +661,7 @@ adapt_detach (args,from_tty) char *args; int from_tty; { - DENTER("adapt_detach()"); + if (adapt_stream) { /* Send it on its way (tell it to continue) */ adapt_clear_breakpoints(); fprintf(adapt_stream,"G\r"); @@ -708,7 +670,6 @@ adapt_detach (args,from_tty) pop_target(); /* calls adapt_close to do the real work */ if (from_tty) printf_filtered ("Ending remote %s debugging\n", target_shortname); - DEXIT("adapt_detach()"); } /* Tell the remote machine to resume. */ @@ -717,7 +678,6 @@ void adapt_resume (step, sig) int step, sig; { - DENTER("adapt_resume()"); if (step) { write (adapt_desc, "t 1,s\r", 6); @@ -739,7 +699,6 @@ adapt_resume (step, sig) /* Swallow the echo. */ expect_prompt(); } - DEXIT("adapt_resume()"); } /* Wait until the remote machine stops, then return, @@ -772,8 +731,6 @@ adapt_wait (status) int old_timeout = timeout; int old_immediate_quit = immediate_quit; - DENTER("adapt_wait()"); - WSETEXIT ((*status), 0); if (need_artificial_trap != 0) @@ -824,7 +781,6 @@ adapt_wait (status) WSETEXIT ((*status), 0); timeout = old_timeout; immediate_quit = old_immediate_quit; - DEXIT("adapt_wait()"); return 0; } @@ -876,8 +832,6 @@ adapt_fetch_registers () int sreg_buf[16]; int i,j; - DENTER("adapt_fetch_registers()"); - /* * Global registers */ @@ -979,8 +933,6 @@ adapt_fetch_registers () expect ("GR001 "); get_hex_regs (1, GR1_REGNUM); expect_prompt (); - - DEXIT("adapt_fetch_registers()"); } /* Fetch register REGNO, or all registers if REGNO is -1. @@ -989,7 +941,6 @@ static void adapt_fetch_register (regno) int regno; { - DENTER("adapt_fetch_register()"); if (regno == -1) adapt_fetch_registers (); else @@ -1001,7 +952,6 @@ adapt_fetch_register (regno) get_hex_regs (1, regno); expect_prompt (); } - DEXIT("adapt_fetch_register()"); } /* Store the remote registers from the contents of the block REGS. */ @@ -1011,7 +961,6 @@ adapt_store_registers () { int i, j; - DENTER("adapt_store_registers()"); fprintf (adapt_stream, "s gr1,%x\r", read_register (GR1_REGNUM)); expect_prompt (); @@ -1084,7 +1033,6 @@ adapt_store_register (regno) registers_changed (); expect_prompt (); } - DEXIT("adapt_store_registers()"); } /* Get ready to modify the registers array. On machines which store @@ -1157,9 +1105,7 @@ adapt_write_inferior_memory (memaddr, myaddr, len) int i; unsigned int cps; - /* DENTER("adapt_write_inferior_memory()"); */ - -/* Turn TU bit off so we can do 'sb' commands */ + /* Turn TU bit off so we can do 'sb' commands */ cps = read_register(CPS_REGNUM); if (cps & 0x00000800) write_register(CPS_REGNUM,cps&~(0x00000800)); @@ -1179,7 +1125,6 @@ adapt_write_inferior_memory (memaddr, myaddr, len) /* Restore the old value of cps if the TU bit was on */ if (cps & 0x00000800) write_register(CPS_REGNUM,cps); - /* DEXIT("adapt_write_inferior_memory()"); */ return len; } @@ -1211,7 +1156,6 @@ adapt_read_inferior_memory(memaddr, myaddr, len) adapt_read_bytes (CORE_ADDR_MAX - 3, foo, 4) doesn't need to work. Detect it and give up if there's an attempt to do that. */ - /* DENTER("adapt_read_inferior_memory()"); */ if (((memaddr - 1) + len) < memaddr) return EIO; @@ -1256,8 +1200,6 @@ adapt_read_inferior_memory(memaddr, myaddr, len) startaddr += len_this_pass; } - - /* DEXIT("adapt_read_inferior_memory()"); */ return count; } @@ -1268,18 +1210,15 @@ adapt_insert_breakpoint(addr, save) CORE_ADDR addr; char *save; /* Throw away, let adapt save instructions */ { - DENTER("adapt_insert_breakpoint()"); if (num_brkpts < MAX_BREAKS) { num_brkpts++; fprintf (adapt_stream, "B %x", addr); fprintf (adapt_stream, "\r"); expect_prompt (); - DEXIT("adapt_insert_breakpoint() success"); return(0); /* Success */ } else { fprintf_filtered(stderr, "Too many break points, break point not installed\n"); - DEXIT("adapt_insert_breakpoint() failure"); return(1); /* Failure */ } @@ -1289,7 +1228,6 @@ adapt_remove_breakpoint(addr, save) CORE_ADDR addr; char *save; /* Throw away, let adapt save instructions */ { - DENTER("adapt_remove_breakpoint()"); if (num_brkpts > 0) { num_brkpts--; fprintf (adapt_stream, "BR %x", addr); @@ -1297,7 +1235,6 @@ char *save; /* Throw away, let adapt save instructions */ fflush (adapt_stream); expect_prompt (); } - DEXIT("adapt_remove_breakpoint()"); return(0); } @@ -1305,7 +1242,6 @@ char *save; /* Throw away, let adapt save instructions */ static int adapt_clear_breakpoints() { - DENTER("adapt_clear_breakpoint()"); if (adapt_stream) { fprintf (adapt_stream, "BR"); /* Clear all break points */ fprintf (adapt_stream, "\r"); @@ -1313,16 +1249,13 @@ adapt_clear_breakpoints() expect_prompt (); } num_brkpts = 0; - DEXIT("adapt_clear_breakpoint()"); } static void adapt_mourn() { - DENTER("adapt_mourn()"); adapt_clear_breakpoints(); pop_target (); /* Pop back to no-child state */ generic_mourn_inferior (); - DEXIT("adapt_mourn()"); } /* Display everthing we read in from the adapt until we match/see the diff --git a/gdb/remote-hms.c b/gdb/remote-hms.c index fc260f1a57..23afa481da 100644 --- a/gdb/remote-hms.c +++ b/gdb/remote-hms.c @@ -49,15 +49,6 @@ extern struct target_ops hms_ops; static int quiet = 1; -#ifdef DEBUG -# define DENTER(NAME) if (!quiet) (printf_filtered("Entering %s\n",NAME), fflush(stdout)) -# define DEXIT(NAME) if (!quiet) (printf_filtered("Exiting %s\n",NAME), fflush(stdout)) -#else -# define DENTER(NAME) -# define DEXIT(NAME) -#endif - - /***********************************************************************/ /* Caching stuff stolen from remote-nindy.c */ @@ -417,8 +408,6 @@ int fromtty; int n; char buffer[1024]; - - DENTER("hms_load()"); check_open(); dcache_flush(); @@ -466,8 +455,6 @@ int fromtty; sprintf(buffer, "r PC=%x", abfd->start_address); hms_write_cr(buffer); expect_prompt(); - - DEXIT("hms_load()"); } /* This is called not only when we first attach, but also when the @@ -480,7 +467,6 @@ hms_create_inferior (execfile, args, env) { int entry_pt; char buffer[100]; - DENTER("hms_create_inferior()"); if (args && *args) error ("Can't pass arguments to remote hms process."); @@ -500,9 +486,6 @@ hms_create_inferior (execfile, args, env) insert_breakpoints (); /* Needed to get correct instruction in cache */ proceed(entry_pt, -1, 0); - - - DEXIT("hms_create_inferior()"); } @@ -605,27 +588,21 @@ hms_open (name, from_tty) unsigned int prl; char *p; - DENTER("hms_open()"); if(name == 0) { name = ""; - } if (is_open) - hms_close (0); + hms_close (0); if (name && strlen(name)) - dev_name = strdup(name); + dev_name = strdup(name); if (!serial_open(dev_name)) - perror_with_name ((char *)dev_name); + perror_with_name ((char *)dev_name); serial_raw(); is_open = 1; - dcache_init(); - - /* start_remote (); /* Initialize gdb process mechanisms */ - get_baudrate_right(); /* Hello? Are you there? */ @@ -635,10 +612,7 @@ hms_open (name, from_tty) /* Clear any break points */ hms_clear_breakpoints(); - printf_filtered("Connected to remote H8/300 HMS system.\n"); - - DEXIT("hms_open()"); } /* Close out all files and local state before this target loses control. */ @@ -648,7 +622,6 @@ hms_close (quitting) int quitting; { - DENTER("hms_close()"); /* Clear any break points */ hms_clear_breakpoints(); @@ -658,39 +631,8 @@ hms_close (quitting) serial_write("R\r", 2); serial_close(); is_open = 0; - - DEXIT("hms_close()"); } -/* Attach to the target that is already loaded and possibly running */ -static void -hms_attach (args, from_tty) - char *args; - int from_tty; -{ - - DENTER("hms_attach()"); - - /* push_target(&hms_ops); /* This done in hms_open() */ - - mark_breakpoints_out (); - - /* Send the hms a kill. It is ok if it is not already running */ -#if 0 - fprintf(hms_stream, "K\r"); - expect_prompt(); /* Slurp the echo */ -#endif - /* We will get a task spawn event immediately. */ - init_wait_for_inferior (); - clear_proceed_status (); - stop_soon_quietly = 1; - wait_for_inferior (); - stop_soon_quietly = 0; - normal_stop (); - DEXIT("hms_attach()"); -} - - /* Terminate the open connection to the remote debugger. Use this when you want to detach and do something else with your gdb. */ @@ -699,7 +641,6 @@ hms_detach (args,from_tty) char *args; int from_tty; { - DENTER("hms_detach()"); if (is_open) { hms_clear_breakpoints(); @@ -708,7 +649,6 @@ hms_detach (args,from_tty) pop_target(); /* calls hms_close to do the real work */ if (from_tty) printf_filtered ("Ending remote %s debugging\n", target_shortname); - DEXIT("hms_detach()"); } /* Tell the remote machine to resume. */ @@ -717,7 +657,6 @@ void hms_resume (step, sig) int step, sig; { - DENTER("hms_resume()"); dcache_flush(); if (step) @@ -735,7 +674,6 @@ hms_resume (step, sig) hms_write_cr("g"); expect("g"); } - DEXIT("hms_resume()"); } /* Wait until the remote machine stops, then return, @@ -769,8 +707,6 @@ hms_wait (status) int old_immediate_quit = immediate_quit; int swallowed_cr = 0; - DENTER("hms_wait()"); - WSETEXIT ((*status), 0); if (need_artificial_trap != 0) @@ -844,7 +780,6 @@ hms_wait (status) timeout = old_timeout; immediate_quit = old_immediate_quit; - DEXIT("hms_wait()"); return 0; } @@ -1009,9 +944,6 @@ hms_store_register (regno) hms_write_cr(buffer); expect_prompt(); } - - DEXIT("hms_store_registers()"); - } @@ -1296,7 +1228,6 @@ hms_insert_breakpoint(addr, save) CORE_ADDR addr; char *save; /* Throw away, let hms save instructions */ { - DENTER("hms_insert_breakpoint()"); check_open(); if (num_brkpts < MAX_BREAKS) @@ -1306,14 +1237,12 @@ char *save; /* Throw away, let hms save instructions */ sprintf(buffer,"b %x", addr & 0xffff); hms_write_cr(buffer); expect_prompt (); - DEXIT("hms_insert_breakpoint() success"); return(0); } else { fprintf_filtered(stderr, "Too many break points, break point not installed\n"); - DEXIT("hms_insert_breakpoint() failure"); return(1); } @@ -1324,7 +1253,6 @@ hms_remove_breakpoint(addr, save) CORE_ADDR addr; char *save; /* Throw away, let hms save instructions */ { - DENTER("hms_remove_breakpoint()"); if (num_brkpts > 0) { char buffer[100]; @@ -1335,7 +1263,6 @@ char *save; /* Throw away, let hms save instructions */ expect_prompt(); } - DEXIT("hms_remove_breakpoint()"); return(0); } @@ -1344,21 +1271,17 @@ static int hms_clear_breakpoints() { - DENTER("hms_clear_breakpoint()"); if (is_open) { hms_write_cr("b -"); expect_prompt (); } num_brkpts = 0; - DEXIT("hms_clear_breakpoint()"); } static void hms_mourn() { - DENTER("hms_mourn()"); hms_clear_breakpoints(); generic_mourn_inferior (); - DEXIT("hms_mourn()"); } @@ -1393,7 +1316,7 @@ struct target_ops hms_ops = { by a serial line.", hms_open, hms_close, - hms_attach, hms_detach, hms_resume, hms_wait, + 0, hms_detach, hms_resume, hms_wait, /* attach */ hms_fetch_register, hms_store_register, hms_prepare_to_store, hms_xfer_inferior_memory, diff --git a/gdb/remote-mm.c b/gdb/remote-mm.c index fb9060b015..f62b64d9fa 100644 --- a/gdb/remote-mm.c +++ b/gdb/remote-mm.c @@ -45,15 +45,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER) -/* #define DEBUG 1 /* */ -#ifdef DEBUG -# define DENTER(NAME) (printf("Entering %s\n",NAME), fflush(stdout)) -# define DEXIT(NAME) (printf("Exiting %s\n",NAME), fflush(stdout)) -#else -# define DENTER(NAME) -# define DEXIT(NAME) -#endif - #define DRAIN_INPUT() (msg_recv_serial((union msg_t*)0)) extern int stop_soon_quietly; /* for wait_for_inferior */ @@ -175,8 +166,6 @@ mm_create_inferior (execfile, args, env) char *token[MAX_TOKENS]; char cmd_line[BUFFER_SIZE]; - DENTER("mm_create_inferior()"); - if (args && *args) error ("Can't pass arguments to remote mm process (yet)."); @@ -196,26 +185,18 @@ mm_create_inferior (execfile, args, env) Assuming you are at NYU debuging a kernel, i.e., no need to download.\n\n"); /* We will get a task spawn event immediately. */ -#ifdef NOTDEF /* start_remote() now does a wait without a resume - so don't use it*/ - start_remote (); -#else init_wait_for_inferior (); clear_proceed_status (); stop_soon_quietly = 1; proceed(-1,-1,0); normal_stop (); -#endif - DEXIT("mm_create_inferior()"); } /**************************************************** REMOTE_MOURN_INFERIOR */ static void mm_mourn() { - DENTER("mm_mourn()"); pop_target (); /* Pop back to no-child state */ generic_mourn_inferior (); - DEXIT("mm_mourn()"); } /********************************************************************** damn_b @@ -279,8 +260,6 @@ mm_open (name, from_tty) unsigned int prl; char *p; - DENTER("mm_open()"); - /* Find the first whitespace character, it separates dev_name from prog_name. */ for (p = name; @@ -431,8 +410,6 @@ erroid: out_msg_buf->go_msg.length = 0; msg_send_serial(out_msg_buf); /* No message to expect after a GO */ - - DEXIT("mm_open()"); } /**************************************************************** REMOTE_CLOSE @@ -443,8 +420,6 @@ static void mm_close (quitting) /*FIXME: how is quitting used */ int quitting; { - DENTER("mm_close()"); - if (mm_desc < 0) error ("Can't close remote connection: not debugging remotely."); @@ -470,9 +445,6 @@ mm_close (quitting) /*FIXME: how is quitting used */ #endif printf ("Ending remote debugging\n"); - - DEXIT("mm_close()"); - } /************************************************************* REMOTE_ATACH */ @@ -485,17 +457,12 @@ mm_attach (args, from_tty) int from_tty; { - DENTER("mm_attach()"); - if (!mm_stream) error ("MiniMon not opened yet, use the 'target minimon' command.\n"); - dont_repeat(); - if (from_tty) printf ("Attaching to remote program %s...\n", prog_name); - /* Make sure the target is currently running, it is supposed to be. */ /* FIXME: is it ok to send MiniMon a BREAK if it is already stopped in * the dbg core. If so, we don't need to send this GO. @@ -509,16 +476,6 @@ mm_attach (args, from_tty) out_msg_buf->break_msg.code = BREAK; out_msg_buf->break_msg.length = 0; msg_send_serial(out_msg_buf); - - mark_breakpoints_out (); - init_wait_for_inferior (); - clear_proceed_status (); - stop_soon_quietly = 1; - wait_for_inferior (); - stop_soon_quietly = 0; - normal_stop (); - - DEXIT("mm_attach()"); } /********************************************************** REMOTE_DETACH */ /* Terminate the open connection to the remote debugger. @@ -529,13 +486,11 @@ mm_detach (args,from_tty) char *args; int from_tty; { - DENTER("mm_dettach()"); remove_breakpoints(); /* Just in case there were any left in */ out_msg_buf->go_msg.code = GO; out_msg_buf->go_msg.length = 0; msg_send_serial(out_msg_buf); pop_target(); /* calls mm_close to do the real work */ - DEXIT("mm_dettach()"); } @@ -546,8 +501,6 @@ static void mm_resume (step, sig) int step, sig; { - DENTER("mm_resume()"); - if (sig) error ("Can't send signals to a remote MiniMon system."); @@ -561,8 +514,6 @@ mm_resume (step, sig) out_msg_buf->go_msg.length = 0; msg_send_serial(out_msg_buf); } - - DEXIT("mm_resume()"); } /***************************************************************** REMOTE_WAIT @@ -577,7 +528,6 @@ mm_wait (status) int old_timeout = timeout; int old_immediate_quit = immediate_quit; - DENTER("mm_wait()"); WSETEXIT ((*status), 0); @@ -688,7 +638,6 @@ exit: timeout = old_timeout; /* Restore original timeout value */ immediate_quit = old_immediate_quit; - DEXIT("mm_wait()"); return 0; } @@ -707,8 +656,6 @@ int regno; return; } - DENTER("mm_fetch_registers()"); - /* Gr1/rsp */ out_msg_buf->read_req_msg.byte_count = 4*1; out_msg_buf->read_req_msg.memory_space = GLOBAL_REG; @@ -797,8 +744,6 @@ int regno; supply_register (FPS_REGNUM, &val); supply_register (EXO_REGNUM, &val); } - - DEXIT("mm_fetch_registerS()"); } @@ -819,7 +764,6 @@ int regno; return; } - DENTER("mm_store_registers()"); result = 0; out_msg_buf->write_r_msg.code= WRITE_REQ; @@ -930,8 +874,6 @@ int regno; } registers_changed (); - DEXIT("mm_store_registers()"); - /* FIXME return result; it is ignored by caller. */ } /*************************************************** REMOTE_PREPARE_TO_STORE */ @@ -982,7 +924,6 @@ mm_insert_breakpoint (addr, contents_cache) CORE_ADDR addr; char *contents_cache; { - DENTER("mm_insert_breakpoint()"); out_msg_buf->bkpt_set_msg.code = BKPT_SET; out_msg_buf->bkpt_set_msg.length = 4*4; out_msg_buf->bkpt_set_msg.memory_space = I_MEM; @@ -991,10 +932,8 @@ mm_insert_breakpoint (addr, contents_cache) out_msg_buf->bkpt_set_msg.bkpt_type = -1; /* use illop for 29000 */ msg_send_serial( out_msg_buf); if (expect_msg(BKPT_SET_ACK,in_msg_buf,1)) { - DEXIT("mm_insert_breakpoint() success"); return 0; /* Success */ } else { - DEXIT("mm_insert_breakpoint() failure"); return 1; /* Failure */ } } @@ -1005,17 +944,14 @@ mm_remove_breakpoint (addr, contents_cache) CORE_ADDR addr; char *contents_cache; { - DENTER("mm_remove_breakpoint()"); out_msg_buf->bkpt_rm_msg.code = BKPT_RM; out_msg_buf->bkpt_rm_msg.length = 4*3; out_msg_buf->bkpt_rm_msg.memory_space = I_MEM; out_msg_buf->bkpt_rm_msg.bkpt_addr = (ADDR32) addr; msg_send_serial( out_msg_buf); if (expect_msg(BKPT_RM_ACK,in_msg_buf,1)) { - DEXIT("mm_remove_breakpoint()"); return 0; /* Success */ } else { - DEXIT("mm_remove_breakpoint()"); return 1; /* Failure */ } } @@ -1029,7 +965,6 @@ int from_tty; { char buf[4]; - DENTER("mm_kill()"); #if defined(KERNEL_DEBUGGING) /* We don't ever kill the kernel */ if (from_tty) { @@ -1053,7 +988,6 @@ int from_tty; } pop_target(); #endif - DEXIT("mm_kill()"); } @@ -1100,7 +1034,6 @@ mm_write_inferior_memory (memaddr, myaddr, len) { int i,nwritten; - /* DENTER("mm_write_inferior_memory()"); */ out_msg_buf->write_req_msg.code= WRITE_REQ; out_msg_buf->write_req_msg.memory_space = mm_memory_space(memaddr); @@ -1121,7 +1054,6 @@ mm_write_inferior_memory (memaddr, myaddr, len) break; } } - /* DEXIT("mm_write_inferior_memory()"); */ return(nwritten); } @@ -1136,7 +1068,6 @@ mm_read_inferior_memory(memaddr, myaddr, len) { int i,nread; - /* DENTER("mm_read_inferior_memory()"); */ out_msg_buf->read_req_msg.code= READ_REQ; out_msg_buf->read_req_msg.memory_space = mm_memory_space(memaddr); @@ -1371,7 +1302,6 @@ fetch_register (regno) int regno; { int result; - DENTER("mm_fetch_register()"); out_msg_buf->read_req_msg.code= READ_REQ; out_msg_buf->read_req_msg.length = 4*3; out_msg_buf->read_req_msg.byte_count = 4; @@ -1412,7 +1342,6 @@ fetch_register (regno) } else { result = -1; } - DEXIT("mm_fetch_register()"); return result; } /*****************************************************************************/ @@ -1425,7 +1354,6 @@ store_register (regno) { int result; - DENTER("store_register()"); out_msg_buf->write_req_msg.code= WRITE_REQ; out_msg_buf->write_req_msg.length = 4*4; out_msg_buf->write_req_msg.byte_count = 4; @@ -1472,7 +1400,6 @@ store_register (regno) } else { result = -1; } - DEXIT("store_register()"); return result; } /****************************************************************************/ @@ -1612,13 +1539,11 @@ INT32 msgcode; /* Msg code we expect */ union msg_t *msg_buf; /* Where to put the message received */ int from_tty; /* Print message on error if non-zero */ { - /* DENTER("expect_msg()"); */ int retries=0; while(msg_recv_serial(msg_buf) && (retries++= MAX_RETRIES) { printf("Expected msg %s, ",msg_str(msgcode)); printf("no message received!\n"); - /* DEXIT("expect_msg() failure"); */ return(0); /* Failure */ } @@ -1629,10 +1554,8 @@ int from_tty; /* Print message on error if non-zero */ if (msg_buf->generic_msg.code == ERROR) printf("%s\n",error_msg_str(msg_buf->error_msg.error_code)); } - /* DEXIT("expect_msg() failure"); */ return(0); /* Failure */ } - /* DEXIT("expect_msg() success"); */ return(1); /* Success */ } /****************************************************************************/ diff --git a/gdb/remote-udi.c b/gdb/remote-udi.c index c54ef669d0..3f6dc788a8 100644 --- a/gdb/remote-udi.c +++ b/gdb/remote-udi.c @@ -50,18 +50,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "29k-share/udi/udiproc.h" /* access the register store directly, without going through - the normal handler functions. This avoids an extra data copy -*/ - -/* #define DEBUG 1 /* */ -#ifdef DEBUG -# define DENTER(NAME) (printf("Entering %s\n",NAME), fflush(stdout)) -# define DEXIT(NAME) (printf("Exiting %s\n",NAME), fflush(stdout)) -#else -# define DENTER(NAME) -# define DEXIT(NAME) -#endif - + the normal handler functions. This avoids an extra data copy. */ extern int stop_soon_quietly; /* for wait_for_inferior */ extern struct value *call_function_by_hand(); @@ -169,7 +158,6 @@ udi_create_inferior (execfile, args, env) char *args; char **env; { - DENTER("udi_create_inferior()"); if (execfile) { if (prog_name != NULL) @@ -196,25 +184,16 @@ udi_create_inferior (execfile, args, env) udi_load(args, 0); #endif /* !ULTRA3 */ - /* We will get a task spawn event immediately. */ -#ifdef NOTDEF /* start_remote() now does a wait without a resume - so don't use it*/ - start_remote (); -#else init_wait_for_inferior (); clear_proceed_status (); proceed(-1,-1,0); -#endif - DEXIT("udi_create_inferior()"); } /******************************************************* UDI_MOURN_INFERIOR */ static void udi_mourn() { - DENTER("udi_mourn()"); pop_target (); /* Pop back to no-child state */ generic_mourn_inferior (); - DEXIT("udi_mourn()"); } /******************************************************************** UDI_OPEN @@ -242,8 +221,6 @@ udi_open (name, from_tty) UDIPId PId; UDIUInt32 TIPId, TargetId, DFEId, DFE, TIP, DFEIPCId, TIPIPCId; - DENTER("udi_open()"); - target_preopen(from_tty); /* Find the first whitespace character, it separates udi_config_id @@ -379,7 +356,6 @@ udi_close (quitting) /*FIXME: how is quitting used */ int quitting; { int Terminate = -1; - DENTER("udi_close()"); if (udi_session_id < 0) error ("Can't close udi connection: not debugging remotely."); @@ -402,8 +378,6 @@ udi_close (quitting) /*FIXME: how is quitting used */ #endif printf_filtered (" Ending remote debugging\n"); - - DEXIT("udi_close()"); } /**************************************************************** UDI_ATACH */ @@ -421,7 +395,6 @@ udi_attach (args, from_tty) UDISizeT Size = 4; UDICount CountDone; UDIBool HostEndian = 0; - DENTER("udi_attach()"); if (udi_session_id < 0) error ("UDI connection not opened yet, use the 'target udi' command.\n"); @@ -429,15 +402,12 @@ udi_attach (args, from_tty) if (from_tty) printf ("Attaching to remote program %s...\n", prog_name); - mark_breakpoints_out (); UDIStop(); From.Space = 11; From.Offset = UDI29KSpecialRegs; if(UDIRead(From, &PC_adds, Count, Size, &CountDone, HostEndian)) error ("UDIRead failed in udi_attach"); printf ("Remote process is now halted, pc1 = 0x%x.\n", PC_adds); - - DEXIT("udi_attach()"); } /************************************************************* UDI_DETACH */ /* Terminate the open connection to the TIP process. @@ -448,14 +418,12 @@ udi_detach (args,from_tty) char *args; int from_tty; { - DENTER("udi_dettach()"); remove_breakpoints(); /* Just in case there were any left in */ if(UDIDisconnect(udi_session_id)) error ("UDIDisconnect() failed in udi_detach"); pop_target(); /* calls udi_close to do the real work */ if (from_tty) printf ("Ending remote debugging\n"); - DEXIT("udi_dettach()"); } @@ -470,7 +438,7 @@ udi_resume (step, sig) UDIUInt32 Steps = 1; UDIStepType StepType = UDIStepNatural; UDIRange Range; - DENTER("udi_resume()"); + if (step) /* step 1 instruction */ { tip_error = tip_error = UDIStep(Steps, StepType, Range); if(tip_error)fprintf(stderr, "UDIStep() error = %d\n", tip_error); @@ -481,8 +449,6 @@ udi_resume (step, sig) { if(UDIExecute()) error ("UDIExecute() failed in udi_resume"); } - - DEXIT("udi_resume()"); } /******************************************************************** UDI_WAIT @@ -501,7 +467,6 @@ udi_wait (status) int old_immediate_quit = immediate_quit; int i; - DENTER("udi_wait()"); WSETEXIT ((*status), 0); /* wait for message to arrive. It should be: @@ -619,7 +584,6 @@ exit: timeout = old_timeout; /* Restore original timeout value */ immediate_quit = old_immediate_quit; - DEXIT("udi_wait()"); return 0; } @@ -964,7 +928,6 @@ int from_tty; { char buf[4]; - DENTER("udi_kill()"); #if defined(ULTRA3) && defined(KERNEL_DEBUGGING) /* We don't ever kill the kernel */ if (from_tty) { @@ -979,7 +942,6 @@ int from_tty; } pop_target(); #endif - DEXIT("udi_kill()"); } @@ -1053,8 +1015,6 @@ udi_write_inferior_memory (memaddr, myaddr, len) UDICount CountDone = 0; UDIBool HostEndian = 0; - - /* DENTER("udi_write_inferior_memory()"); */ To.Space = udi_memory_space(memaddr); From = (UDIUInt32*)myaddr; @@ -1071,7 +1031,6 @@ udi_write_inferior_memory (memaddr, myaddr, len) From += CountDone; } } - /* DEXIT("udi_write_inferior_memory()"); */ return(nwritten); } @@ -1092,8 +1051,6 @@ udi_read_inferior_memory(memaddr, myaddr, len) UDICount CountDone = 0; UDIBool HostEndian = 0; - - /* DENTER("udi_read_inferior_memory()"); */ From.Space = udi_memory_space(memaddr); To = (UDIUInt32*)myaddr; @@ -1198,7 +1155,6 @@ store_register (regno) UDICount CountDone; UDIBool HostEndian = 0; - DENTER("store_register()"); From = read_register (regno); /* get data value */ if (regno == GR1_REGNUM) @@ -1240,7 +1196,6 @@ store_register (regno) result = UDIWrite(&From, To, Count, Size, &CountDone, HostEndian); } - DEXIT("store_register()"); if(result) { result = -1; error("UDIWrite() failed in store_registers"); diff --git a/gdb/remote-vx.c b/gdb/remote-vx.c index 39644f3ba1..ddb6955c7a 100644 --- a/gdb/remote-vx.c +++ b/gdb/remote-vx.c @@ -1126,8 +1126,7 @@ vx_open (args, from_tty) clnt_freeres (pClient, xdr_ldtabl, &loadTable); } -/* attach_command -- - takes a task started up outside of gdb and ``attaches'' to it. +/* Takes a task started up outside of gdb and ``attaches'' to it. This stops it cold in its tracks and allows us to start tracing it. */ static void @@ -1141,8 +1140,6 @@ vx_attach (args, from_tty) Ptrace_return ptrace_out; int status; - dont_repeat(); - if (!args) error_no_arg ("process-id to attach"); @@ -1170,23 +1167,6 @@ vx_attach (args, from_tty) push_target (&vx_run_ops); inferior_pid = pid; vx_running = 0; - - mark_breakpoints_out (); - - /* Set up the "saved terminal modes" of the inferior - based on what modes we are starting it with. */ - target_terminal_init (); - - /* Install inferior's terminal modes. */ - target_terminal_inferior (); - - /* We will get a task spawn event immediately. */ - init_wait_for_inferior (); - clear_proceed_status (); - stop_soon_quietly = 1; - wait_for_inferior (); - stop_soon_quietly = 0; - normal_stop (); } diff --git a/gdb/target.h b/gdb/target.h index 3ed9f8b90c..4a680b16a2 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -80,6 +80,7 @@ struct target_ops int (*to_lookup_symbol) PARAMS ((char *, CORE_ADDR *)); void (*to_create_inferior) PARAMS ((char *, char *, char **)); void (*to_mourn_inferior) PARAMS ((void)); + int (*to_can_run) PARAMS ((void)); enum strata to_stratum; struct target_ops *to_next; @@ -128,7 +129,13 @@ extern struct target_ops *current_target; #define target_close(quitting) \ (*current_target->to_close) (quitting) -/* Attaches to a process on the target side. */ +/* Attaches to a process on the target side. Arguments are as passed + to the `attach' command by the user. This routine can be called + when the target is not on the target-stack, if the target_can_run + routine returns 1; in that case, it must push itself onto the stack. + Upon exit, the target should be ready for normal operations, and + should be ready to deliver the status of the process immediately + (without waiting) to an upcoming target_wait call. */ #define target_attach(args, from_tty) \ (*current_target->to_attach) (args, from_tty) @@ -299,6 +306,11 @@ print_section_info PARAMS ((struct target_ops *, bfd *)); #define target_mourn_inferior() \ (*current_target->to_mourn_inferior) () +/* Does target have enough data to do a run or attach command? */ + +#define target_can_run(t) \ + ((t)->to_can_run) () + /* Pointer to next target in the chain, e.g. a core file and an exec file. */ #define target_next \ @@ -394,4 +406,10 @@ memory_insert_breakpoint PARAMS ((CORE_ADDR, char *)); void noprocess PARAMS ((void)); +void +find_default_attach PARAMS ((char *, int)); + +void +find_default_create_inferior PARAMS ((char *, char *, char **)); + #endif /* !defined (TARGET_H) */