diff options
author | Kung Hsu <kung@cygnus> | 1995-06-23 18:54:56 +0000 |
---|---|---|
committer | Kung Hsu <kung@cygnus> | 1995-06-23 18:54:56 +0000 |
commit | 8a7143f461b36ad82db0d8880f0e2690206b631f (patch) | |
tree | 6c184e3be51c7a38e9673738671b7d283864f7b8 /gdb | |
parent | 31bda44a6dcd39af8883880fb0d266b4beec3290 (diff) | |
download | gdb-8a7143f461b36ad82db0d8880f0e2690206b631f.zip gdb-8a7143f461b36ad82db0d8880f0e2690206b631f.tar.gz gdb-8a7143f461b36ad82db0d8880f0e2690206b631f.tar.bz2 |
* remote-nindy (nindy_load): Put in target specific load, it's
20 times faster.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/remote-nindy.c | 42 |
2 files changed, 46 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f55121d..c65bcee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Fri Jun 23 11:51:58 1995 Kung Hsu <kung@mexican.cygnus.com> + + * remote-nindy (nindy_load): Put in target specific load, it's + 20 times faster. + Thu Jun 22 20:21:59 1995 Stan Shebs <shebs@andros.cygnus.com> * utils.c (error): Move local `args' outside conditional, diff --git a/gdb/remote-nindy.c b/gdb/remote-nindy.c index 0fcaf2f..1ced9cc 100644 --- a/gdb/remote-nindy.c +++ b/gdb/remote-nindy.c @@ -675,6 +675,46 @@ nindy_open_stub (arg) return 1; } +static void +nindy_load( filename, from_tty ) + char *filename; + int from_tty; +{ + asection *s; + /* Can't do unix style forking on a VMS system, so we'll use bfd to do + all the work for us + */ + + bfd *file = bfd_openr(filename,0); + if (!file) + { + perror_with_name(filename); + return; + } + + if (!bfd_check_format(file, bfd_object)) + { + error("can't prove it's an object file\n"); + return; + } + + for ( s = file->sections; s; s=s->next) + { + if (s->flags & SEC_LOAD) + { + char *buffer = xmalloc(s->_raw_size); + bfd_get_section_contents(file, s, buffer, 0, s->_raw_size); + printf("Loading section %s, size %x vma %x\n", + s->name, + s->_raw_size, + s->vma); + ninMemPut(s->vma, buffer, s->_raw_size); + free(buffer); + } + } + bfd_close(file); +} + static int load_stub (arg) char *arg; @@ -754,7 +794,7 @@ specified when you started GDB.", memory_remove_breakpoint, 0, 0, 0, 0, 0, /* Terminal crud */ nindy_kill, - generic_load, + nindy_load, 0, /* lookup_symbol */ nindy_create_inferior, nindy_mourn_inferior, |