aboutsummaryrefslogtreecommitdiff
path: root/gdb/somsolib.c
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>1999-09-28 21:55:21 +0000
committerJason Molenda <jmolenda@apple.com>1999-09-28 21:55:21 +0000
commit6426a772a2645ef6afa596319dba0ff966bff050 (patch)
tree315b42018fc08aad8fc85d0833b1ed983d747de8 /gdb/somsolib.c
parentf4bda9848fb4c4ae3e4cccba77d5ef26099e451e (diff)
downloadgdb-6426a772a2645ef6afa596319dba0ff966bff050.zip
gdb-6426a772a2645ef6afa596319dba0ff966bff050.tar.gz
gdb-6426a772a2645ef6afa596319dba0ff966bff050.tar.bz2
import gdb-1999-09-28 snapshot
Diffstat (limited to 'gdb/somsolib.c')
-rw-r--r--gdb/somsolib.c44
1 files changed, 3 insertions, 41 deletions
diff --git a/gdb/somsolib.c b/gdb/somsolib.c
index 924fa52..65793bd 100644
--- a/gdb/somsolib.c
+++ b/gdb/somsolib.c
@@ -375,49 +375,11 @@ som_solib_load_symbols (so, name, from_tty, text_addr, target)
if (status != 0)
{
int old, new;
- int update_coreops;
- int update_execops;
-
- /* We must update the to_sections field in the core_ops structure
- here, otherwise we dereference a potential dangling pointer
- for each call to target_read/write_memory within this routine. */
- update_coreops = core_ops.to_sections == target->to_sections;
-
- /* Ditto exec_ops (this was a bug).
- */
- update_execops = exec_ops.to_sections == target->to_sections;
new = so->sections_end - so->sections;
- /* Add sections from the shared library to the core target. */
- if (target->to_sections)
- {
- old = target->to_sections_end - target->to_sections;
- target->to_sections = (struct section_table *)
- xrealloc ((char *) target->to_sections,
- ((sizeof (struct section_table)) * (old + new)));
- }
- else
- {
- old = 0;
- target->to_sections = (struct section_table *)
- xmalloc ((sizeof (struct section_table)) * new);
- }
- target->to_sections_end = (target->to_sections + old + new);
-
- /* Update the to_sections field in the core_ops structure
- if needed, ditto exec_ops. */
- if (update_coreops)
- {
- core_ops.to_sections = target->to_sections;
- core_ops.to_sections_end = target->to_sections_end;
- }
-
- if (update_execops)
- {
- exec_ops.to_sections = target->to_sections;
- exec_ops.to_sections_end = target->to_sections_end;
- }
-
+
+ old = target_resize_to_sections (target, new);
+
/* Copy over the old data before it gets clobbered. */
memcpy ((char *) (target->to_sections + old),
so->sections,