aboutsummaryrefslogtreecommitdiff
path: root/gdb/core.c
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1991-10-16 19:42:05 +0000
committerJohn Gilmore <gnu@cygnus>1991-10-16 19:42:05 +0000
commit45e6027024086f9c13a6f86e38ed75073556faca (patch)
treec3a108d1e073e3f0361e7d44d7ee2a324e63179b /gdb/core.c
parenta13f8a2f23aefd86970f2b56557b0d62b62d2bed (diff)
downloadgdb-45e6027024086f9c13a6f86e38ed75073556faca.zip
gdb-45e6027024086f9c13a6f86e38ed75073556faca.tar.gz
gdb-45e6027024086f9c13a6f86e38ed75073556faca.tar.bz2
* core.c (core_open): Improve error message for bad file.
Pass .reg virtual memory address to fetch_core_registers to help it find the registers in the core-file header. * coredep.c (fetch_core_registers): Take new argument, use it, and pass it to register_addr to locate the block of registers.
Diffstat (limited to 'gdb/core.c')
-rw-r--r--gdb/core.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/gdb/core.c b/gdb/core.c
index ad2830c..2ec4244 100644
--- a/gdb/core.c
+++ b/gdb/core.c
@@ -131,8 +131,8 @@ core_open (filename, from_tty)
if (!bfd_check_format (temp_bfd, bfd_core))
{
- bfd_close (temp_bfd);
- error ("\"%s\" does not appear to be a core dump", filename);
+ make_cleanup (bfd_close, temp_bfd); /* Do it after the err msg */
+ error ("\"%s\" is not a core dump: %s", filename, bfd_errmsg(bfd_error));
}
/* Looks semi-reasonable. Toss the old core file and work on the new. */
@@ -399,10 +399,10 @@ get_core_registers (regno)
if (!reg_sec) goto cant;
size = bfd_section_size (core_bfd, reg_sec);
the_regs = alloca (size);
- if (bfd_get_section_contents (core_bfd, reg_sec, the_regs,
- (unsigned)0, size))
+ if (bfd_get_section_contents (core_bfd, reg_sec, the_regs, (file_ptr)0, size))
{
- fetch_core_registers (the_regs, size, 0);
+ fetch_core_registers (the_regs, size, 0,
+ (unsigned) bfd_section_vma (abfd,reg_sec));
}
else
{
@@ -416,10 +416,11 @@ cant:
if (reg_sec) {
size = bfd_section_size (core_bfd, reg_sec);
the_regs = alloca (size);
- if (bfd_get_section_contents (core_bfd, reg_sec, the_regs,
- (unsigned)0, size))
+ if (bfd_get_section_contents (core_bfd, reg_sec, the_regs, (file_ptr)0,
+ size))
{
- fetch_core_registers (the_regs, size, 2);
+ fetch_core_registers (the_regs, size, 2,
+ (unsigned) bfd_section_vma (abfd,reg_sec));
}
else
{