X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fremote-sim.c;h=7875f77076c48c67332217ffd2a242e18fdec422;hb=91158a569dc571a9916dfad98c6c95ce789ad18d;hp=2031116b09606bc7c68340c2f4f962fe50105db2;hpb=6c95b8df7fef5273da71c34775918c554aae0ea8;p=binutils-gdb.git diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index 2031116b096..7875f77076c 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -1,7 +1,7 @@ /* Generic remote debugging interface for simulators. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. Steve Chamberlain (sac@cygnus.com). @@ -70,7 +70,8 @@ static void gdb_os_vprintf_filtered (host_callback *, const char *, va_list); static void gdb_os_evprintf_filtered (host_callback *, const char *, va_list); -static void gdb_os_error (host_callback *, const char *, ...) ATTR_NORETURN; +static void gdb_os_error (host_callback *, const char *, ...) + ATTRIBUTE_NORETURN; static void gdbsim_kill (struct target_ops *); @@ -122,6 +123,7 @@ dump_mem (char *buf, int len) if (len == 8 || len == 4) { long l[2]; + memcpy (l, buf, len); printf_filtered ("\t0x%lx", l[0]); if (len == 8) @@ -131,6 +133,7 @@ dump_mem (char *buf, int len) else { int i; + printf_filtered ("\t"); for (i = 0; i < len; i++) printf_filtered ("0x%x ", buf[i]); @@ -228,10 +231,9 @@ static void gdb_os_printf_filtered (host_callback * p, const char *format,...) { va_list args; - va_start (args, format); + va_start (args, format); vfprintf_filtered (gdb_stdout, format, args); - va_end (args); } @@ -257,6 +259,7 @@ static void gdb_os_error (host_callback * p, const char *format, ...) { va_list args; + va_start (args, format); verror (format, args); va_end (args); @@ -275,6 +278,7 @@ gdbsim_fetch_register (struct target_ops *ops, struct regcache *regcache, int regno) { struct gdbarch *gdbarch = get_regcache_arch (regcache); + if (regno == -1) { for (regno = 0; regno < gdbarch_num_regs (gdbarch); regno++) @@ -292,6 +296,7 @@ gdbsim_fetch_register (struct target_ops *ops, as an ``unavailable'' register. */ char buf[MAX_REGISTER_SIZE]; int nr_bytes; + memset (buf, 0, MAX_REGISTER_SIZE); regcache_raw_supply (regcache, regno, buf); break; @@ -302,6 +307,7 @@ gdbsim_fetch_register (struct target_ops *ops, static int warn_user = 1; char buf[MAX_REGISTER_SIZE]; int nr_bytes; + gdb_assert (regno >= 0 && regno < gdbarch_num_regs (gdbarch)); memset (buf, 0, MAX_REGISTER_SIZE); nr_bytes = sim_fetch_register (gdbsim_desc, @@ -354,6 +360,7 @@ gdbsim_store_register (struct target_ops *ops, { char tmp[MAX_REGISTER_SIZE]; int nr_bytes; + regcache_cooked_read (regcache, regno, tmp); nr_bytes = sim_store_register (gdbsim_desc, gdbarch_register_sim_regno @@ -471,7 +478,7 @@ gdbsim_create_inferior (struct target_ops *target, char *exec_file, char *args, sim_create_inferior (gdbsim_desc, exec_bfd, argv, env); inferior_ptid = remote_sim_ptid; - inferior_appeared_silent (current_inferior (), ptid_get_pid (inferior_ptid)); + inferior_appeared (current_inferior (), ptid_get_pid (inferior_ptid)); add_thread_silent (inferior_ptid); insert_breakpoints (); /* Needed to get correct instruction in cache */ @@ -793,7 +800,7 @@ gdbsim_xfer_inferior_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, static void gdbsim_files_info (struct target_ops *target) { - char *file = "nothing"; + const char *file = "nothing"; if (exec_bfd) file = bfd_get_filename (exec_bfd);