gdb/testsuite/
[binutils-gdb.git] / gdb / target.c
index 5657f89b945478eb350312ef669f9982386e51c6..35a29b7480a666a244fd033c22ef96cf3c8605af 100644 (file)
@@ -56,7 +56,7 @@ static int default_region_ok_for_hw_watchpoint (CORE_ADDR, int);
 
 static int nosymbol (char *, CORE_ADDR *);
 
-static void tcomplain (void) ATTR_NORETURN;
+static void tcomplain (void) ATTRIBUTE_NORETURN;
 
 static int nomemory (CORE_ADDR, char *, int, int, struct target_ops *);
 
@@ -457,6 +457,7 @@ target_create_inferior (char *exec_file, char *args,
                        char **env, int from_tty)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_create_inferior != NULL)       
@@ -660,6 +661,7 @@ update_current_target (void)
       INHERIT (to_get_raw_trace_data, t);
       INHERIT (to_set_disconnected_tracing, t);
       INHERIT (to_set_circular_trace_buffer, t);
+      INHERIT (to_get_tib_address, t);
       INHERIT (to_magic, t);
       /* Do not inherit to_memory_map.  */
       /* Do not inherit to_flash_erase.  */
@@ -831,7 +833,7 @@ update_current_target (void)
            tcomplain);
   de_fault (to_trace_find,
            (int (*) (enum trace_find_type, int, ULONGEST, ULONGEST, int *))
-           return_zero);
+           return_minus_one);
   de_fault (to_get_trace_state_variable_value,
            (int (*) (int, LONGEST *))
            return_zero);
@@ -853,6 +855,9 @@ update_current_target (void)
   de_fault (to_set_circular_trace_buffer,
            (void (*) (int))
            target_ignore);
+  de_fault (to_get_tib_address,
+           (int (*) (ptid_t, CORE_ADDR *))
+           tcomplain);
 #undef de_fault
 
   /* Finally, position the target-stack beneath the squashed
@@ -867,14 +872,11 @@ update_current_target (void)
 /* Push a new target type into the stack of the existing target accessors,
    possibly superseding some of the existing accessors.
 
-   Result is zero if the pushed target ended up on top of the stack,
-   nonzero if at least one target is on top of it.
-
    Rather than allow an empty stack, we always have the dummy target at
    the bottom stratum, so we can call the function vectors without
    checking them.  */
 
-int
+void
 push_target (struct target_ops *t)
 {
   struct target_ops **cur;
@@ -904,6 +906,7 @@ push_target (struct target_ops *t)
       /* There's already something at this stratum level.  Close it,
          and un-hook it from the stack.  */
       struct target_ops *tmp = (*cur);
+
       (*cur) = (*cur)->beneath;
       tmp->beneath = NULL;
       target_close (tmp, 0);
@@ -914,9 +917,6 @@ push_target (struct target_ops *t)
   (*cur) = t;
 
   update_current_target ();
-
-  /* Not on top?  */
-  return (t != target_stack);
 }
 
 /* Remove a target_ops vector from the stack, wherever it may be.
@@ -972,7 +972,8 @@ pop_target (void)
   fprintf_unfiltered (gdb_stderr,
                      "pop_target couldn't find target %s\n",
                      current_target.to_shortname);
-  internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
+  internal_error (__FILE__, __LINE__,
+                 _("failed internal consistency check"));
 }
 
 void
@@ -1144,6 +1145,7 @@ target_read_string (CORE_ADDR memaddr, char **string, int len, int *errnop)
       if (bufptr - buffer + tlen > buffer_allocated)
        {
          unsigned int bytes;
+
          bytes = bufptr - buffer;
          buffer_allocated *= 2;
          buffer = xrealloc (buffer, buffer_allocated);
@@ -1227,11 +1229,13 @@ memory_xfer_partial (struct target_ops *ops, enum target_object object,
   if (readbuf != NULL && overlay_debugging)
     {
       struct obj_section *section = find_pc_overlay (memaddr);
+
       if (pc_in_unmapped_range (memaddr, section))
        {
          struct target_section_table *table
            = target_get_section_table (ops);
          const char *section_name = section->the_bfd_section->name;
+
          memaddr = overlay_mapped_address (memaddr, section);
          return section_table_xfer_memory_partial (readbuf, writebuf,
                                                    memaddr, len,
@@ -1382,8 +1386,8 @@ struct cleanup *
 make_show_memory_breakpoints_cleanup (int show)
 {
   int current = show_memory_breakpoints;
-  show_memory_breakpoints = show;
 
+  show_memory_breakpoints = show;
   return make_cleanup (restore_show_memory_breakpoints,
                       (void *) (uintptr_t) current);
 }
@@ -1577,13 +1581,13 @@ target_flash_erase (ULONGEST address, LONGEST length)
 
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_flash_erase != NULL)
-       {
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
-                                hex_string (address), phex (length, 0));
-         t->to_flash_erase (t, address, length);
-         return;
-       }
+      {
+       if (targetdebug)
+         fprintf_unfiltered (gdb_stdlog, "target_flash_erase (%s, %s)\n",
+                             hex_string (address), phex (length, 0));
+       t->to_flash_erase (t, address, length);
+       return;
+      }
 
   tcomplain ();
 }
@@ -1595,12 +1599,12 @@ target_flash_done (void)
 
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     if (t->to_flash_done != NULL)
-       {
-         if (targetdebug)
-           fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
-         t->to_flash_done (t);
-         return;
-       }
+      {
+       if (targetdebug)
+         fprintf_unfiltered (gdb_stdlog, "target_flash_done\n");
+       t->to_flash_done (t);
+       return;
+      }
 
   tcomplain ();
 }
@@ -1627,11 +1631,13 @@ default_xfer_partial (struct target_ops *ops, enum target_object object,
        "deprecated_xfer_memory" method.  */
     {
       int xfered = -1;
+
       errno = 0;
       if (writebuf != NULL)
        {
          void *buffer = xmalloc (len);
          struct cleanup *cleanup = make_cleanup (xfree, buffer);
+
          memcpy (buffer, writebuf, len);
          xfered = ops->deprecated_xfer_memory (offset, buffer, len,
                                                1/*write*/, NULL, ops);
@@ -1703,11 +1709,13 @@ target_read (struct target_ops *ops,
             ULONGEST offset, LONGEST len)
 {
   LONGEST xfered = 0;
+
   while (xfered < len)
     {
       LONGEST xfer = target_read_partial (ops, object, annex,
                                          (gdb_byte *) buf + xfered,
                                          offset + xfered, len - xfered);
+
       /* Call an observer, notifying them of the xfer progress?  */
       if (xfer == 0)
        return xfered;
@@ -1726,11 +1734,13 @@ target_read_until_error (struct target_ops *ops,
                         ULONGEST offset, LONGEST len)
 {
   LONGEST xfered = 0;
+
   while (xfered < len)
     {
       LONGEST xfer = target_read_partial (ops, object, annex,
                                          (gdb_byte *) buf + xfered,
                                          offset + xfered, len - xfered);
+
       /* Call an observer, notifying them of the xfer progress?  */
       if (xfer == 0)
        return xfered;
@@ -1947,8 +1957,8 @@ get_target_memory (struct target_ops *ops, CORE_ADDR addr, gdb_byte *buf,
 }
 
 ULONGEST
-get_target_memory_unsigned (struct target_ops *ops,
-                           CORE_ADDR addr, int len, enum bfd_endian byte_order)
+get_target_memory_unsigned (struct target_ops *ops, CORE_ADDR addr,
+                           int len, enum bfd_endian byte_order)
 {
   gdb_byte buf[sizeof (ULONGEST)];
 
@@ -2188,6 +2198,7 @@ target_resume (ptid_t ptid, int step, enum target_signal signal)
                                step ? "step" : "continue",
                                target_signal_to_name (signal));
 
+         registers_changed_ptid (ptid);
          set_executing (ptid, 1);
          set_running (ptid, 1);
          clear_inline_frame_state (ptid);
@@ -2210,6 +2221,7 @@ target_follow_fork (int follow_child)
       if (t->to_follow_fork != NULL)
        {
          int retval = t->to_follow_fork (t, follow_child);
+
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog, "target_follow_fork (%d) = %d\n",
                                follow_child, retval);
@@ -2226,6 +2238,7 @@ void
 target_mourn_inferior (void)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_mourn_inferior != NULL)        
@@ -2326,6 +2339,7 @@ simple_search_memory (struct target_ops *ops,
       if (found_ptr != NULL)
        {
          CORE_ADDR found_addr = start_addr + (found_ptr - search_buf);
+
          *found_addrp = found_addr;
          do_cleanups (old_cleanups);
          return 1;
@@ -2559,6 +2573,7 @@ int
 target_supports_non_stop (void)
 {
   struct target_ops *t;
+
   for (t = &current_target; t != NULL; t = t->beneath)
     if (t->to_supports_non_stop)
       return t->to_supports_non_stop ();
@@ -2570,7 +2585,6 @@ target_supports_non_stop (void)
 char *
 target_get_osdata (const char *type)
 {
-  char *document;
   struct target_ops *t;
 
   /* If we're already connected to something that can get us OS
@@ -2877,6 +2891,7 @@ void
 target_attach (char *args, int from_tty)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_attach != NULL)        
@@ -2897,6 +2912,7 @@ int
 target_thread_alive (ptid_t ptid)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_thread_alive != NULL)
@@ -2919,6 +2935,7 @@ void
 target_find_new_threads (void)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_find_new_threads != NULL)
@@ -2987,6 +3004,7 @@ debug_print_register (const char * func,
                      struct regcache *regcache, int regno)
 {
   struct gdbarch *gdbarch = get_regcache_arch (regcache);
+
   fprintf_unfiltered (gdb_stdlog, "%s ", func);
   if (regno >= 0 && regno < gdbarch_num_regs (gdbarch)
       && gdbarch_register_name (gdbarch, regno) != NULL
@@ -3000,6 +3018,7 @@ debug_print_register (const char * func,
       enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
       int i, size = register_size (gdbarch, regno);
       unsigned char buf[MAX_REGISTER_SIZE];
+
       regcache_raw_collect (regcache, regno, buf);
       fprintf_unfiltered (gdb_stdlog, " = ");
       for (i = 0; i < size; i++)
@@ -3009,6 +3028,7 @@ debug_print_register (const char * func,
       if (size <= sizeof (LONGEST))
        {
          ULONGEST val = extract_unsigned_integer (buf, size, byte_order);
+
          fprintf_unfiltered (gdb_stdlog, " %s %s",
                              core_addr_to_string_nz (val), plongest (val));
        }
@@ -3020,6 +3040,7 @@ void
 target_fetch_registers (struct regcache *regcache, int regno)
 {
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_fetch_registers != NULL)
@@ -3035,8 +3056,8 @@ target_fetch_registers (struct regcache *regcache, int regno)
 void
 target_store_registers (struct regcache *regcache, int regno)
 {
-
   struct target_ops *t;
+
   for (t = current_target.beneath; t != NULL; t = t->beneath)
     {
       if (t->to_store_registers != NULL)
@@ -3063,6 +3084,7 @@ target_core_of_thread (ptid_t ptid)
       if (t->to_core_of_thread != NULL)
        {
          int retval = t->to_core_of_thread (t, ptid);
+
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog, "target_core_of_thread (%d) = %d\n",
                                PIDGET (ptid), retval);
@@ -3083,6 +3105,7 @@ target_verify_memory (const gdb_byte *data, CORE_ADDR memaddr, ULONGEST size)
       if (t->to_verify_memory != NULL)
        {
          int retval = t->to_verify_memory (t, data, memaddr, size);
+
          if (targetdebug)
            fprintf_unfiltered (gdb_stdlog, "target_verify_memory (%s, %s) = %d\n",
                                paddress (target_gdbarch, memaddr),