bfd *abfd = exec_bfd;
char *name = bfd_get_filename (abfd);
- if (!bfd_close (abfd))
- warning (_("cannot close \"%s\": %s"),
- name, bfd_errmsg (bfd_get_error ()));
+ gdb_bfd_close_or_warn (abfd);
xfree (name);
/* Removing target sections may close the exec_ops target.
}
else if (vp->bfd != exec_bfd)
/* FIXME-leak: We should be freeing vp->name too, I think. */
- if (!bfd_close (vp->bfd))
- warning (_("cannot close \"%s\": %s"),
- vp->name, bfd_errmsg (bfd_get_error ()));
+ gdb_bfd_close_or_warn (vp->bfd);
xfree (vp);
}
char *scratch_pathname;
int scratch_chan;
struct target_section *sections = NULL, *sections_end = NULL;
+ char **matching;
scratch_chan = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, filename,
write_files ? O_RDWR | O_BINARY : O_RDONLY | O_BINARY,
if (scratch_chan < 0)
{
char *exename = alloca (strlen (filename) + 5);
+
strcat (strcpy (exename, filename), ".exe");
scratch_chan = openp (getenv ("PATH"), OPF_TRY_CWD_FIRST, exename,
write_files ? O_RDWR | O_BINARY : O_RDONLY | O_BINARY,
scratch_pathname = xstrdup (scratch_pathname);
cleanups = make_cleanup (xfree, scratch_pathname);
- if (!bfd_check_format (exec_bfd, bfd_object))
+ if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching))
{
/* Make sure to close exec_bfd, or else "run" might try to use
it. */
exec_close ();
error (_("\"%s\": not in executable format: %s"),
- scratch_pathname, bfd_errmsg (bfd_get_error ()));
+ scratch_pathname,
+ gdb_bfd_errmsg (bfd_get_error (), matching));
}
/* FIXME - This should only be run for RS6000, but the ifdef is a poor
if (count > 0)
{
int space = resize_section_table (table, count);
+
memcpy (table->sections + space,
sections, count * sizeof (sections[0]));
remove_target_sections (bfd *abfd)
{
struct target_section *src, *dest;
-
struct target_section_table *table = current_target_sections;
dest = table->sections;
{
/* gcc-3.4 does not like the initialization in <p == t->sections_end>. */
bfd_vma displacement = 0;
+ bfd_vma entry_point;
for (p = t->sections; p < t->sections_end; p++)
{
warning (_("Cannot find section for the entry point of %s.\n"),
bfd_get_filename (abfd));
+ entry_point = gdbarch_addr_bits_remove (gdbarch,
+ bfd_get_start_address (abfd)
+ + displacement);
printf_filtered (_("\tEntry point: %s\n"),
- paddress (gdbarch, (bfd_get_start_address (abfd)
- + displacement)));
+ paddress (gdbarch, entry_point));
}
for (p = t->sections; p < t->sections_end; p++)
{