generate-core-file for programs with large resident data. */
#define MAX_COPY_BYTES (1024 * 1024)
-static char *default_gcore_target (void);
+static const char *default_gcore_target (void);
static enum bfd_architecture default_gcore_arch (void);
static unsigned long default_gcore_mach (void);
static int gcore_memory_sections (bfd *);
return 0;
#else
- const struct bfd_arch_info *bfdarch = gdbarch_bfd_arch_info (current_gdbarch);
+ const struct bfd_arch_info *bfdarch = gdbarch_bfd_arch_info (target_gdbarch);
if (bfdarch != NULL)
return bfdarch->mach;
static enum bfd_architecture
default_gcore_arch (void)
{
- const struct bfd_arch_info * bfdarch = gdbarch_bfd_arch_info
- (current_gdbarch);
+ const struct bfd_arch_info *bfdarch = gdbarch_bfd_arch_info (target_gdbarch);
if (bfdarch != NULL)
return bfdarch->arch;
return bfd_get_arch (exec_bfd);
}
-static char *
+static const char *
default_gcore_target (void)
{
- /* FIXME: This may only work for ELF targets. */
+ /* The gdbarch may define a target to use for core files. */
+ if (gdbarch_gcore_bfd_target_p (target_gdbarch))
+ return gdbarch_gcore_bfd_target (target_gdbarch);
+
+ /* Otherwise, try to fall back to the exec_bfd target. This will probably
+ not work for non-ELF targets. */
if (exec_bfd == NULL)
return NULL;
else
{
if (info_verbose)
{
- fprintf_filtered (gdb_stdout, "Ignore segment, %s bytes at 0x%s\n",
- plongest (size), paddr_nz (vaddr));
+ fprintf_filtered (gdb_stdout, "Ignore segment, %s bytes at %s\n",
+ plongest (size), paddress (target_gdbarch, vaddr));
}
return 0;
if (info_verbose)
{
- fprintf_filtered (gdb_stdout, "Save segment, %s bytes at 0x%s\n",
- plongest (size), paddr_nz (vaddr));
+ fprintf_filtered (gdb_stdout, "Save segment, %s bytes at %s\n",
+ plongest (size), paddress (target_gdbarch, vaddr));
}
bfd_set_section_size (obfd, osec, size);
if (target_read_memory (bfd_section_vma (obfd, osec) + offset,
memhunk, size) != 0)
{
- warning (_("Memory read failed for corefile section, %s bytes at 0x%s."),
- plongest (size), paddr (bfd_section_vma (obfd, osec)));
+ warning (_("Memory read failed for corefile section, %s bytes at %s."),
+ plongest (size),
+ paddress (target_gdbarch, bfd_section_vma (obfd, osec)));
break;
}
if (!bfd_set_section_contents (obfd, osec, memhunk, offset, size))
return 1;
}
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_gcore;
+
void
_initialize_gcore (void)
{