* configure.tgt: Mark v850 as multi-arched.
[deliverable/binutils-gdb.git] / gdb / gcore.c
index 48ed6a3b59485756c2705666cfadd30cef735091..25d1ed70e2494f29b5944c40f7938f3cc8ded3a6 100644 (file)
@@ -19,7 +19,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
-#include "command.h"
+#include "cli/cli-decode.h"
 #include "inferior.h"
 #include "gdbcore.h"
 #include "elf-bfd.h"
@@ -40,7 +40,7 @@ gcore_command (char *args, int from_tty)
 {
   struct cleanup *old_chain;
   char *corefilename, corefilename_buffer[40];
-  asection *note_sec;
+  asection *note_sec = NULL;
   bfd *obfd;
   void *note_data = NULL;
   int note_size = 0;
@@ -63,7 +63,7 @@ gcore_command (char *args, int from_tty)
                      "Opening corefile '%s' for output.\n", corefilename);
 
   /* Open the output file. */
-  if (!(obfd = bfd_openw (corefilename, NULL /*default_gcore_target ()*/)))
+  if (!(obfd = bfd_openw (corefilename, default_gcore_target ())))
     {
       error ("Failed to open '%s' for output.", corefilename);
     }
@@ -117,16 +117,20 @@ gcore_command (char *args, int from_tty)
 static unsigned long
 default_gcore_mach (void)
 {
+#if 1  /* See if this even matters... */
+  return 0;
+#else
 #ifdef TARGET_ARCHITECTURE
   const struct bfd_arch_info * bfdarch = TARGET_ARCHITECTURE;
 
   if (bfdarch != NULL)
     return bfdarch->mach;
-#endif
+#endif /* TARGET_ARCHITECTURE */
   if (exec_bfd == NULL)
     error ("Can't find default bfd machine type (need execfile).");
 
   return bfd_get_mach (exec_bfd);
+#endif /* 1 */
 }
 
 static enum bfd_architecture
@@ -149,9 +153,9 @@ default_gcore_target (void)
 {
   /* FIXME -- this may only work for ELF targets.  */
   if (exec_bfd == NULL)
-    error ("Can't find default bfd target for corefile (need execfile).");
-
-  return bfd_get_target (exec_bfd);
+    return NULL;
+  else
+    return bfd_get_target (exec_bfd);
 }
 
 /*
@@ -265,7 +269,7 @@ default_derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top)
   for (sec = abfd->sections; sec; sec = sec->next)
     {
       if (bfd_get_section_flags (abfd, sec) & SEC_DATA ||
-         strcmp (".bss", bfd_get_section_name (abfd, sec)) == 0)
+         strcmp (".bss", bfd_section_name (abfd, sec)) == 0)
        {
          sec_vaddr = bfd_get_section_vma (abfd, sec);
          sec_size = bfd_get_section_size_before_reloc (sec);
@@ -274,8 +278,19 @@ default_derive_heap_segment (bfd *abfd, bfd_vma *bottom, bfd_vma *top)
        }
     }
   /* Now get the top-of-heap by calling sbrk in the inferior.  */
-  if ((sbrk = find_function_in_inferior ("sbrk")) == NULL)
+  if (lookup_minimal_symbol ("sbrk", NULL, NULL) != NULL)
+    {
+      if ((sbrk = find_function_in_inferior ("sbrk")) == NULL)
+       return 0;
+    }
+  else if (lookup_minimal_symbol ("_sbrk", NULL, NULL) != NULL)
+    {
+      if ((sbrk = find_function_in_inferior ("_sbrk")) == NULL)
+       return 0;
+    }
+  else
     return 0;
+
   if ((zero = value_from_longest (builtin_type_int, (LONGEST) 0)) == NULL)
     return 0;
   if ((sbrk = call_function_by_hand (sbrk, 1, &zero)) == NULL)
@@ -310,7 +325,7 @@ make_output_phdrs (bfd *obfd, asection *osec, void *ignored)
   int p_type;
 
   /* FIXME: these constants may only be applicable for ELF.  */
-  if (strncmp (osec->name, "load", 4) == 0)
+  if (strncmp (bfd_section_name (obfd, osec), "load", 4) == 0)
     p_type = PT_LOAD;
   else
     p_type = PT_NOTE;
@@ -344,8 +359,8 @@ make_mem_sec (bfd *obfd,
   if (info_verbose)
     {
       fprintf_filtered (gdb_stdout, 
-                       "Save segment, %ld bytes at 0x%s\n",
-                       size, paddr_nz (addr));
+                       "Save segment, %lld bytes at 0x%s\n",
+                       (long long) size, paddr_nz (addr));
     }
 
   bfd_set_section_size (obfd, osec, size);
@@ -448,7 +463,7 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored)
   if (size == 0)
     return;    /* Read-only sections are marked as zero-size.
                   We don't have to copy their contents. */
-  if (strncmp ("load", bfd_get_section_name (obfd, osec), 4) != 0)
+  if (strncmp ("load", bfd_section_name (obfd, osec), 4) != 0)
     return;    /* Only interested in "load" sections. */
 
   if ((memhunk = xmalloc (size)) == NULL)
This page took 0.041533 seconds and 4 git commands to generate.