From: Kung Hsu Date: Fri, 23 Jun 1995 18:54:56 +0000 (+0000) Subject: * remote-nindy (nindy_load): Put in target specific load, it's X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8a7143f461b36ad82db0d8880f0e2690206b631f;p=binutils-gdb.git * remote-nindy (nindy_load): Put in target specific load, it's 20 times faster. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f55121d9e44..c65bcee9e04 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Fri Jun 23 11:51:58 1995 Kung Hsu + + * remote-nindy (nindy_load): Put in target specific load, it's + 20 times faster. + Thu Jun 22 20:21:59 1995 Stan Shebs * utils.c (error): Move local `args' outside conditional, diff --git a/gdb/remote-nindy.c b/gdb/remote-nindy.c index 0fcaf2fce60..1ced9cc9699 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,