X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fremote-e7000.c;h=16a6690e92cfb399a4855822273560977b5d0306;hb=90c1602c0f6f430e52d84ec03d321df108301f25;hp=6022c4d065e379f07824f896ccb4c0696565221a;hpb=fba45db2faf619e71856ee38ec63949c0ef6903e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c index 6022c4d065..16a6690e92 100644 --- a/gdb/remote-e7000.c +++ b/gdb/remote-e7000.c @@ -1,5 +1,8 @@ -/* Remote debugging interface for Hitachi E7000 ICE, for GDB - Copyright 1993, 1994, 1996, 1997, 1998, 2000 Free Software Foundation, Inc. +/* Remote debugging interface for Renesas E7000 ICE, for GDB + + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003, 2004 Free Software Foundation, Inc. + Contributed by Cygnus Support. Written by Steve Chamberlain for Cygnus Support. @@ -21,8 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* The E7000 is an in-circuit emulator for the Hitachi H8/300-H and - Hitachi-SH processor. It has serial port and a lan port. +/* The E7000 is an in-circuit emulator for the Renesas H8/300-H and + Renesas-SH processor. It has serial port and a lan port. The monitor command set makes it difficult to load large ammounts of data over the lan without using ftp - so try not to issue load @@ -37,16 +40,15 @@ #include "gdbarch.h" #include "inferior.h" #include "target.h" -#include "gdb_wait.h" #include "value.h" #include "command.h" -#include #include "gdb_string.h" #include "gdbcmd.h" #include #include "serial.h" #include "remote-utils.h" #include "symfile.h" +#include "regcache.h" #include #include @@ -86,8 +88,6 @@ #define SR_REGNUM -1 #endif -extern void notice_quit (void); - extern void report_transfer_performance (unsigned long, time_t, time_t); extern char *sh_processor_type; @@ -117,7 +117,7 @@ static void expect_prompt (void); static int e7000_parse_device (char *args, char *dev_name, int baudrate); /* Variables. */ -static serial_t e7000_desc; +static struct serial *e7000_desc; /* Allow user to chose between using hardware breakpoints or memory. */ static int use_hard_breakpoints = 0; /* use sw breakpoints by default */ @@ -156,8 +156,8 @@ puts_e7000debug (char *buf) if (remote_debug) printf_unfiltered ("Sending %s\n", buf); - if (SERIAL_WRITE (e7000_desc, buf, strlen (buf))) - fprintf_unfiltered (gdb_stderr, "SERIAL_WRITE failed: %s\n", safe_strerror (errno)); + if (serial_write (e7000_desc, buf, strlen (buf))) + fprintf_unfiltered (gdb_stderr, "serial_write failed: %s\n", safe_strerror (errno)); /* And expect to see it echoed, unless using the pc interface */ #if 0 @@ -172,13 +172,13 @@ putchar_e7000 (int x) char b[1]; b[0] = x; - SERIAL_WRITE (e7000_desc, b, 1); + serial_write (e7000_desc, b, 1); } static void write_e7000 (char *s) { - SERIAL_WRITE (e7000_desc, s, strlen (s)); + serial_write (e7000_desc, s, strlen (s)); } static int @@ -200,7 +200,7 @@ readchar (int timeout) do { - c = SERIAL_READCHAR (e7000_desc, timeout); + c = serial_readchar (e7000_desc, timeout); } while (c > 127); @@ -260,21 +260,6 @@ expect (char *string) while (1) { c = readchar (timeout); -#if 0 - notice_quit (); - if (quit_flag == 1) - { - if (ctrl_c) - { - putchar_e7000 (CTRLC); - --ctrl_c; - } - else - { - quit (); - } - } -#endif if (echo) { @@ -386,7 +371,8 @@ get_hex_regs (int n, int regno) user types "run" after having attached. */ static void -e7000_create_inferior (char *execfile, char *args, char **env) +e7000_create_inferior (char *execfile, char *args, char **env, + int from_tty) { int entry_pt; @@ -543,7 +529,7 @@ or \t\ttarget e7000 tcp_remote [:]\n\ or \t\ttarget e7000 pc\n"); } -#if !defined(__GO32__) && !defined(_WIN32) +#if !defined(__GO32__) && !defined(_WIN32) && !defined(__CYGWIN__) /* FIXME! test for ':' is ambiguous */ if (n == 1 && strchr (dev_name, ':') == 0) { @@ -562,14 +548,14 @@ or \t\ttarget e7000 pc\n"); /* Stub for catch_errors. */ static int -e7000_start_remote (char *dummy) +e7000_start_remote (void *dummy) { int loop; int sync; int try; int quit_trying; - immediate_quit = 1; /* Allow user to interrupt it */ + immediate_quit++; /* Allow user to interrupt it */ /* Hello? Are you there? */ sync = 0; @@ -627,7 +613,7 @@ e7000_start_remote (char *dummy) if (!sync) { fprintf_unfiltered (gdb_stderr, "Giving up after %d tries...\n", try); - error ("Unable to syncronize with target.\n"); + error ("Unable to synchronize with target.\n"); } puts_e7000debug ("\r"); @@ -635,7 +621,7 @@ e7000_start_remote (char *dummy) puts_e7000debug ("b -\r"); /* Clear breakpoints */ expect_prompt (); - immediate_quit = 0; + immediate_quit--; /* This is really the job of start_remote however, that makes an assumption that the target is about to print out a status message of some sort. That @@ -644,9 +630,7 @@ e7000_start_remote (char *dummy) flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - set_current_frame (create_new_frame (read_fp (), stop_pc)); - select_frame (get_current_frame (), 0); - print_stack_frame (selected_frame, -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); return 1; } @@ -662,17 +646,17 @@ e7000_open (char *args, int from_tty) push_target (&e7000_ops); - e7000_desc = SERIAL_OPEN (dev_name); + e7000_desc = serial_open (dev_name); if (!e7000_desc) perror_with_name (dev_name); - SERIAL_SETBAUDRATE (e7000_desc, baudrate); - SERIAL_RAW (e7000_desc); - -#ifdef GDB_TARGET_IS_H8300 - h8300hmode = 1; -#endif + if (serial_setbaudrate (e7000_desc, baudrate)) + { + serial_close (e7000_desc); + perror_with_name (dev_name); + } + serial_raw (e7000_desc); /* Start the remote connection; if error (0), discard this target. In particular, if the user quits, be sure to discard it @@ -691,7 +675,7 @@ e7000_close (int quitting) { if (e7000_desc) { - SERIAL_CLOSE (e7000_desc); + serial_close (e7000_desc); e7000_desc = 0; } } @@ -700,7 +684,7 @@ e7000_close (int quitting) when you want to detach and do something else with your gdb. */ static void -e7000_detach (int from_tty) +e7000_detach (char *arg, int from_tty) { pop_target (); /* calls e7000_close to do the real work */ if (from_tty) @@ -710,7 +694,7 @@ e7000_detach (int from_tty) /* Tell the remote machine to resume. */ static void -e7000_resume (int pid, int step, int sig) +e7000_resume (ptid_t ptid, int step, enum target_signal sigal) { if (step) puts_e7000debug ("S\r"); @@ -794,16 +778,17 @@ gbyte (void) return (high << 4) + low; } -void -fetch_regs_from_dump (nextchar, want) - int (*nextchar) (); - char *want; +static void +fetch_regs_from_dump (int (*nextchar) (), char *want) { int regno; - char buf[MAX_REGISTER_RAW_SIZE]; + char buf[MAX_REGISTER_SIZE]; int thischar = nextchar (); + if (want == NULL) + internal_error (__FILE__, __LINE__, "Register set not selected."); + while (*want) { switch (*want) @@ -868,9 +853,9 @@ fetch_regs_from_dump (nextchar, want) want++; break; #endif -#ifdef FP_REGNUM +#ifdef DEPRECATED_FP_REGNUM case 'f': - regno = FP_REGNUM; + regno = DEPRECATED_FP_REGNUM; want++; break; #endif @@ -891,11 +876,11 @@ fetch_regs_from_dump (nextchar, want) } else - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); } store_signed_integer (buf, - REGISTER_RAW_SIZE (regno), - (LONGEST) get_hex (&thischar, nextchar)); + DEPRECATED_REGISTER_RAW_SIZE (regno), + (LONGEST) get_hex (&thischar)); supply_register (regno, buf); break; } @@ -906,7 +891,7 @@ static void e7000_fetch_registers (void) { int regno; - char *wanted; + char *wanted = NULL; puts_e7000debug ("R\r"); @@ -921,15 +906,18 @@ e7000_fetch_registers (void) wanted = want_sh3; } } -#ifdef GDB_TARGET_IS_H8300 if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300) { - if (h8300smode) - wanted = want_h8300s; - else - wanted = want_h8300h; + wanted = want_h8300h; + switch (TARGET_ARCHITECTURE->mach) + { + case bfd_mach_h8300s: + case bfd_mach_h8300sn: + case bfd_mach_h8300sx: + case bfd_mach_h8300sxn: + wanted = want_h8300s; + } } -#endif fetch_regs_from_dump (gch, wanted); @@ -981,18 +969,18 @@ e7000_store_register (int regno) { if (regno <= 7) { - sprintf (buf, ".ER%d %lx\r", regno, read_register (regno)); + sprintf (buf, ".ER%d %s\r", regno, phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == PC_REGNUM) { - sprintf (buf, ".PC %lx\r", read_register (regno)); + sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } #ifdef CCR_REGNUM else if (regno == CCR_REGNUM) { - sprintf (buf, ".CCR %lx\r", read_register (regno)); + sprintf (buf, ".CCR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } #endif @@ -1002,48 +990,48 @@ e7000_store_register (int regno) { if (regno == PC_REGNUM) { - sprintf (buf, ".PC %lx\r", read_register (regno)); + sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == SR_REGNUM) { - sprintf (buf, ".SR %lx\r", read_register (regno)); + sprintf (buf, ".SR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == PR_REGNUM) { - sprintf (buf, ".PR %lx\r", read_register (regno)); + sprintf (buf, ".PR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == GBR_REGNUM) { - sprintf (buf, ".GBR %lx\r", read_register (regno)); + sprintf (buf, ".GBR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == VBR_REGNUM) { - sprintf (buf, ".VBR %lx\r", read_register (regno)); + sprintf (buf, ".VBR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == MACH_REGNUM) { - sprintf (buf, ".MACH %lx\r", read_register (regno)); + sprintf (buf, ".MACH %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == MACL_REGNUM) { - sprintf (buf, ".MACL %lx\r", read_register (regno)); + sprintf (buf, ".MACL %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else { - sprintf (buf, ".R%d %lx\r", regno, read_register (regno)); + sprintf (buf, ".R%d %s\r", regno, phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } } @@ -1064,7 +1052,7 @@ e7000_prepare_to_store (void) } static void -e7000_files_info (void) +e7000_files_info (struct target_ops *ops) { printf_unfiltered ("\tAttached to %s at %d baud.\n", dev_name, baudrate); } @@ -1093,15 +1081,15 @@ write_small (CORE_ADDR memaddr, unsigned char *myaddr, int len) if (((memaddr + i) & 3) == 0 && (i + 3 < len)) { /* Can be done with a long word */ - sprintf (buf, "m %lx %x%02x%02x%02x;l\r", - memaddr + i, + sprintf (buf, "m %s %x%02x%02x%02x;l\r", + paddr_nz (memaddr + i), myaddr[i], myaddr[i + 1], myaddr[i + 2], myaddr[i + 3]); puts_e7000debug (buf); i += 3; } else { - sprintf (buf, "m %lx %x\r", memaddr + i, myaddr[i]); + sprintf (buf, "m %s %x\r", paddr_nz (memaddr + i), myaddr[i]); puts_e7000debug (buf); } } @@ -1182,7 +1170,7 @@ write_large (CORE_ADDR memaddr, unsigned char *myaddr, int len) compose[where++] = '\n'; compose[where++] = 0; - SERIAL_WRITE (e7000_desc, compose, where); + serial_write (e7000_desc, compose, where); j = readchar (0); if (j == -1) { @@ -1254,7 +1242,7 @@ e7000_read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) return 0; } - sprintf (buf, "m %lx;l\r", memaddr); + sprintf (buf, "m %s;l\r", paddr_nz (memaddr)); puts_e7000debug (buf); for (count = 0; count < len; count += 4) @@ -1333,7 +1321,7 @@ e7000_read_inferior_memory_large (CORE_ADDR memaddr, unsigned char *myaddr, return 0; } - sprintf (buf, "d %lx %lx\r", memaddr, memaddr + len - 1); + sprintf (buf, "d %s %s\r", paddr_nz (memaddr), paddr_nz (memaddr + len - 1)); puts_e7000debug (buf); count = 0; @@ -1468,13 +1456,16 @@ fast_but_for_the_pause_e7000_read_inferior_memory (CORE_ADDR memaddr, #endif +/* Transfer LEN bytes between GDB address MYADDR and target address + MEMADDR. If WRITE is non-zero, transfer them to the target, + otherwise transfer them from the target. TARGET is unused. + + Returns the number of bytes transferred. */ + static int -e7000_xfer_inferior_memory (memaddr, myaddr, len, write, target) - CORE_ADDR memaddr; - unsigned char *myaddr; - int len; - int write; - struct target_ops *target; /* ignored */ +e7000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len, + int write, struct mem_attrib *attrib, + struct target_ops *target) { if (write) return e7000_write_inferior_memory (memaddr, myaddr, len); @@ -1485,7 +1476,7 @@ e7000_xfer_inferior_memory (memaddr, myaddr, len, write, target) } static void -e7000_kill (char *args, int from_tty) +e7000_kill (void) { } @@ -1578,13 +1569,13 @@ e7000_load (char *args, int from_tty) file_ptr fptr; section_address = bfd_get_section_vma (pbfd, section); - section_size = bfd_get_section_size_before_reloc (section); + section_size = bfd_get_section_size (section); if (!quiet) - printf_filtered ("[Loading section %s at 0x%x (%ud bytes)]\n", + printf_filtered ("[Loading section %s at 0x%s (%s bytes)]\n", bfd_get_section_name (pbfd, section), - section_address, - section_size); + paddr_nz (section_address), + paddr_u (section_size)); fptr = 0; @@ -1612,9 +1603,9 @@ e7000_load (char *args, int from_tty) bfd_get_section_contents (pbfd, section, buf + 10, fptr, count); - if (SERIAL_WRITE (e7000_desc, buf, count + 10)) + if (serial_write (e7000_desc, buf, count + 10)) fprintf_unfiltered (gdb_stderr, - "e7000_load: SERIAL_WRITE failed: %s\n", + "e7000_load: serial_write failed: %s\n", safe_strerror (errno)); expect ("OK"); @@ -1643,7 +1634,7 @@ e7000_load (char *args, int from_tty) if (exec_bfd) write_pc (bfd_get_start_address (exec_bfd)); - inferior_pid = 0; /* No process now */ + inferior_ptid = null_ptid; /* No process now */ /* This is necessary because many things were based on the PC at the time that we attached to the monitor, which is no longer valid now that we have loaded @@ -1658,7 +1649,7 @@ e7000_load (char *args, int from_tty) entry = bfd_get_start_address (pbfd); if (!quiet) - printf_unfiltered ("[Starting %s at 0x%x]\n", filename, entry); + printf_unfiltered ("[Starting %s at 0x%s]\n", filename, paddr_nz (entry)); /* start_routine (entry); */ } @@ -1696,7 +1687,7 @@ static CORE_ADDR breakaddr[MAX_BREAKPOINTS] = {0}; static int -e7000_insert_breakpoint (CORE_ADDR addr, unsigned char *shadow) +e7000_insert_breakpoint (CORE_ADDR addr, char *shadow) { int i; char buf[200]; @@ -1712,12 +1703,12 @@ e7000_insert_breakpoint (CORE_ADDR addr, unsigned char *shadow) #ifdef HARD_BREAKPOINTS if (BC_BREAKPOINTS) { - sprintf (buf, "BC%d A=%lx\r", i + 1, addr); + sprintf (buf, "BC%d A=%s\r", i + 1, paddr_nz (addr)); puts_e7000debug (buf); } else { - sprintf (buf, "B %lx\r", addr); + sprintf (buf, "B %s\r", paddr_nz (addr)); puts_e7000debug (buf); } #else @@ -1739,7 +1730,7 @@ e7000_insert_breakpoint (CORE_ADDR addr, unsigned char *shadow) } static int -e7000_remove_breakpoint (CORE_ADDR addr, unsigned char *shadow) +e7000_remove_breakpoint (CORE_ADDR addr, char *shadow) { int i; char buf[200]; @@ -1756,12 +1747,12 @@ e7000_remove_breakpoint (CORE_ADDR addr, unsigned char *shadow) } else { - sprintf (buf, "B - %lx\r", addr); + sprintf (buf, "B - %s\r", paddr_nz (addr)); puts_e7000debug (buf); } expect_prompt (); #else - sprintf (buf, "B - %lx\r", addr); + sprintf (buf, "B - %s\r", paddr_nz (addr)); puts_e7000debug (buf); expect_prompt (); @@ -1773,8 +1764,8 @@ e7000_remove_breakpoint (CORE_ADDR addr, unsigned char *shadow) return 0; } - - warning ("Can't find breakpoint associated with 0x%lx\n", addr); + + warning ("Can't find breakpoint associated with 0x%s\n", paddr_nz (addr)); return 1; } @@ -1821,7 +1812,7 @@ e7000_drain_command (char *args, int fromtty) puts_e7000debug ("end\r"); putchar_e7000 (CTRLC); - while ((c = readchar (1) != -1)) + while ((c = readchar (1)) != -1) { if (quit_flag) { @@ -1882,7 +1873,7 @@ why_stop (void) /* Suck characters, if a string match, then return the strings index otherwise echo them. */ -int +static int expect_n (char **strings) { char *(ptr[10]); @@ -1973,10 +1964,10 @@ sub2_from_pc (void) char buf2[200]; store_signed_integer (buf, - REGISTER_RAW_SIZE (PC_REGNUM), + DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM), read_register (PC_REGNUM) - 2); supply_register (PC_REGNUM, buf); - sprintf (buf2, ".PC %lx\r", read_register (PC_REGNUM)); + sprintf (buf2, ".PC %s\r", phex_nz (read_register (PC_REGNUM), 0)); puts_e7000debug (buf2); } @@ -1997,15 +1988,15 @@ static char *estrings[] = /* Wait until the remote machine stops, then return, storing status in STATUS just as `wait' would. */ -static int -e7000_wait (int pid, struct target_waitstatus *status) +static ptid_t +e7000_wait (ptid_t ptid, struct target_waitstatus *status) { int stop_reason; int regno; int running_count = 0; int had_sleep = 0; int loop = 1; - char *wanted_nopc; + char *wanted_nopc = NULL; /* Then echo chars until PC= string seen */ gch (); /* Drop cr */ @@ -2055,15 +2046,18 @@ e7000_wait (int pid, struct target_waitstatus *status) wanted_nopc = want_nopc_sh3; } } -#ifdef GDB_TARGET_IS_H8300 if (TARGET_ARCHITECTURE->arch == bfd_arch_h8300) { - if (h8300smode) - wanted_nopc = want_nopc_h8300s; - else - wanted_nopc = want_nopc_h8300h; + wanted_nopc = want_nopc_h8300h; + switch (TARGET_ARCHITECTURE->mach) + { + case bfd_mach_h8300s: + case bfd_mach_h8300sn: + case bfd_mach_h8300sx: + case bfd_mach_h8300sxn: + wanted_nopc = want_nopc_h8300s; + } } -#endif fetch_regs_from_dump (gch, wanted_nopc); /* And supply the extra ones the simulator uses */ @@ -2117,10 +2111,10 @@ e7000_wait (int pid, struct target_waitstatus *status) break; default: /* Get the user's attention - this should never happen. */ - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); } - return 0; + return inferior_ptid; } /* Stop the running program. */ @@ -2140,8 +2134,8 @@ static void init_e7000_ops (void) { e7000_ops.to_shortname = "e7000"; - e7000_ops.to_longname = "Remote Hitachi e7000 target"; - e7000_ops.to_doc = "Use a remote Hitachi e7000 ICE connected by a serial line;\n\ + e7000_ops.to_longname = "Remote Renesas e7000 target"; + e7000_ops.to_doc = "Use a remote Renesas e7000 ICE connected by a serial line;\n\ or a network connection.\n\ Arguments are the name of the device for the serial line,\n\ the speed to connect at in bits per second.\n\ @@ -2150,14 +2144,9 @@ target e7000 /dev/ttya 9600\n\ target e7000 foobar"; e7000_ops.to_open = e7000_open; e7000_ops.to_close = e7000_close; - e7000_ops.to_attach = 0; - e7000_ops.to_post_attach = NULL; - e7000_ops.to_require_attach = NULL; e7000_ops.to_detach = e7000_detach; - e7000_ops.to_require_detach = NULL; e7000_ops.to_resume = e7000_resume; e7000_ops.to_wait = e7000_wait; - e7000_ops.to_post_wait = NULL; e7000_ops.to_fetch_registers = e7000_fetch_register; e7000_ops.to_store_registers = e7000_store_register; e7000_ops.to_prepare_to_store = e7000_prepare_to_store; @@ -2165,51 +2154,22 @@ target e7000 foobar"; e7000_ops.to_files_info = e7000_files_info; e7000_ops.to_insert_breakpoint = e7000_insert_breakpoint; e7000_ops.to_remove_breakpoint = e7000_remove_breakpoint; - e7000_ops.to_terminal_init = 0; - e7000_ops.to_terminal_inferior = 0; - e7000_ops.to_terminal_ours_for_output = 0; - e7000_ops.to_terminal_ours = 0; - e7000_ops.to_terminal_info = 0; e7000_ops.to_kill = e7000_kill; e7000_ops.to_load = e7000_load; - e7000_ops.to_lookup_symbol = 0; e7000_ops.to_create_inferior = e7000_create_inferior; - e7000_ops.to_post_startup_inferior = NULL; - e7000_ops.to_acknowledge_created_inferior = NULL; - e7000_ops.to_clone_and_follow_inferior = NULL; - e7000_ops.to_post_follow_inferior_by_clone = NULL; - e7000_ops.to_insert_fork_catchpoint = NULL; - e7000_ops.to_remove_fork_catchpoint = NULL; - e7000_ops.to_insert_vfork_catchpoint = NULL; - e7000_ops.to_remove_vfork_catchpoint = NULL; - e7000_ops.to_has_forked = NULL; - e7000_ops.to_has_vforked = NULL; - e7000_ops.to_can_follow_vfork_prior_to_exec = NULL; - e7000_ops.to_post_follow_vfork = NULL; - e7000_ops.to_insert_exec_catchpoint = NULL; - e7000_ops.to_remove_exec_catchpoint = NULL; - e7000_ops.to_has_execd = NULL; - e7000_ops.to_reported_exec_events_per_exec_call = NULL; - e7000_ops.to_has_exited = NULL; e7000_ops.to_mourn_inferior = e7000_mourn_inferior; - e7000_ops.to_can_run = 0; - e7000_ops.to_notice_signals = 0; - e7000_ops.to_thread_alive = 0; e7000_ops.to_stop = e7000_stop; - e7000_ops.to_pid_to_exec_file = NULL; - e7000_ops.to_core_file_to_sym_file = NULL; e7000_ops.to_stratum = process_stratum; - e7000_ops.DONT_USE = 0; e7000_ops.to_has_all_memory = 1; e7000_ops.to_has_memory = 1; e7000_ops.to_has_stack = 1; e7000_ops.to_has_registers = 1; e7000_ops.to_has_execution = 1; - e7000_ops.to_sections = 0; - e7000_ops.to_sections_end = 0; e7000_ops.to_magic = OPS_MAGIC; }; +extern initialize_file_ftype _initialize_remote_e7000; /* -Wmissing-prototypes */ + void _initialize_remote_e7000 (void) {