* remote-utils.c, remote-utils.h (gr_load_image): New function to

download to target.
This commit is contained in:
Steve Chamberlain 1993-11-15 23:21:29 +00:00
parent 1c50f634d1
commit bf2429ab86
1 changed files with 57 additions and 2 deletions

View File

@ -37,8 +37,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
* a pass through mode a la kermit or telnet.
* autobaud.
* ask remote to change his baud rate.
* put generic load here.
*/
#include <ctype.h>
@ -620,6 +618,63 @@ gr_store_word (addr, word)
dcache_poke (gr_get_dcache(), addr, word);
}
/* general purpose load a file specified on the command line
into target memory. */
void
gr_load_image (args, fromtty)
char *args;
int fromtty;
{
bfd *abfd;
asection *s;
struct cleanup *old_cleanups;
int delta = 4096;
char *buffer = xmalloc (delta);
abfd = bfd_openr (args, (char *) 0);
if (!abfd)
perror_with_name (args);
old_cleanups = make_cleanup (bfd_close, abfd);
QUIT;
immediate_quit++;
if (!bfd_check_format (abfd, bfd_object))
error ("It doesn't seem to be an object file.\n");
for (s = abfd->sections; s; s = s->next)
{
if (bfd_get_section_flags (abfd, s) & SEC_LOAD)
{
int i;
printf_filtered ("%s\t: 0x%4x .. 0x%4x ",
s->name, s->vma, s->vma + s->_raw_size);
for (i = 0; i < s->_raw_size; i += delta)
{
int sub_delta = delta;
if (sub_delta > s->_raw_size - i)
sub_delta = s->_raw_size - i;
bfd_get_section_contents (abfd, s, buffer, i, sub_delta);
target_write_memory (s->vma + i, buffer, sub_delta);
printf_filtered ("*");
fflush (stdout);
}
printf_filtered ("\n");
}
}
immediate_quit--;
free (buffer);
write_pc (bfd_get_start_address (abfd));
bfd_close (abfd);
discard_cleanups (old_cleanups);
}
void
_initialize_sr_support ()
{