mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
* remote-utils.c, remote-utils.h (gr_load_image): New function to
download to target.
This commit is contained in:
parent
1c50f634d1
commit
bf2429ab86
@ -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 ()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user