diff options
author | Jim Blandy <jimb@codesourcery.com> | 2001-11-14 21:55:21 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2001-11-14 21:55:21 +0000 |
commit | 0d43edd16b169d15b68057598cf970436fc2c6f8 (patch) | |
tree | ed5e83b48bb833e38b538be5a9ed228a80d6246a | |
parent | 1c00926451110033d3d2c02fbb47b39855f885c4 (diff) | |
download | gdb-0d43edd16b169d15b68057598cf970436fc2c6f8.zip gdb-0d43edd16b169d15b68057598cf970436fc2c6f8.tar.gz gdb-0d43edd16b169d15b68057598cf970436fc2c6f8.tar.bz2 |
* symfile.c (simple_read_overlay_table): Make sure we can find
both `_novlys' and `_ovly_table' before we try anything else;
print a helpful error message.
(simple_overlay_update): No need to print error message here.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/symfile.c | 53 |
2 files changed, 35 insertions, 25 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a6a0195..4fd08d7 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2001-11-14 Jim Blandy <jimb@redhat.com> + + * symfile.c (simple_read_overlay_table): Make sure we can find + both `_novlys' and `_ovly_table' before we try anything else; + print a helpful error message. + (simple_overlay_update): No need to print error message here. + 2001-11-14 Michael Snyder <msnyder@redhat.com> * Makefile.in (doublest.o): Add dependency on gdbtypes.h. diff --git a/gdb/symfile.c b/gdb/symfile.c index b460862..d5aeba3 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -3023,30 +3023,35 @@ read_target_long_array (CORE_ADDR memaddr, unsigned int *myaddr, int len) static int simple_read_overlay_table (void) { - struct minimal_symbol *msym; + struct minimal_symbol *novlys_msym, *ovly_table_msym; simple_free_overlay_table (); - msym = lookup_minimal_symbol ("_novlys", 0, 0); - if (msym != NULL) - cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (msym), 4); - else - return 0; /* failure */ - cache_ovly_table = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table)); - if (cache_ovly_table != NULL) + novlys_msym = lookup_minimal_symbol ("_novlys", 0, 0); + if (! novlys_msym) { - msym = lookup_minimal_symbol ("_ovly_table", 0, 0); - if (msym != NULL) - { - cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (msym); - read_target_long_array (cache_ovly_table_base, - (int *) cache_ovly_table, - cache_novlys * 4); - } - else - return 0; /* failure */ + error ("Error reading inferior's overlay table: " + "couldn't find `_novlys' variable\n" + "in inferior. Use `overlay manual' mode."); + return 0; } - else - return 0; /* failure */ + + ovly_table_msym = lookup_minimal_symbol ("_ovly_table", 0, 0); + if (! ovly_table_msym) + { + error ("Error reading inferior's overlay table: couldn't find " + "`_ovly_table' array\n" + "in inferior. Use `overlay manual' mode."); + return 0; + } + + cache_novlys = read_memory_integer (SYMBOL_VALUE_ADDRESS (novlys_msym), 4); + cache_ovly_table + = (void *) xmalloc (cache_novlys * sizeof (*cache_ovly_table)); + cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (ovly_table_msym); + read_target_long_array (cache_ovly_table_base, + (int *) cache_ovly_table, + cache_novlys * 4); + return 1; /* SUCCESS */ } @@ -3147,11 +3152,9 @@ simple_overlay_update (struct obj_section *osect) Or else we want all the sections, in which case it's actually more efficient to read the whole table in one block anyway. */ - if (simple_read_overlay_table () == 0) /* read failed? No table? */ - { - warning ("Failed to read the target overlay mapping table."); - return; - } + if (! simple_read_overlay_table ()) + return; + /* Now may as well update all sections, even if only one was requested. */ ALL_OBJSECTIONS (objfile, osect) if (section_is_overlay (osect->the_bfd_section)) |