This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi,
I just encountered a problem with using the "load" command with a remote avr target. The first packet would be sent to the remote target and then gdb would just give up with this error message:
(gdb) load Loading section .text, size 0x1f8 lma 0x0 Sending packet: $M0,a:0c9446000c9463000c94#d7...Ack Packet received: OK Memory access error while loading section .text.
It looks like load_section_callback() in symfile.c is assuming that a call to target_write_memory_partial() will set the err variable. Unfortunately, that is not a valid assumption.
The attached patch got things working again, but this feels like a hack to me since target_write_memory_partial() should really be setting err to a sane value before returning.
Patch is against today's cvs mainline.
Here's the contract: /* Make a single attempt at transfering LEN bytes. On a successful transfer, the number of bytes actually transfered is returned and ERR is set to 0. When a transfer fails, -1 is returned (the number of bytes actually transfered is not defined) and ERR is set to a non-zero error indication. */ So the bug is further down the target stack.
2004-10-19 Theodore A. Roth <troth@openavr.org>
* symfile.c (load_section_callback): Initialize err to zero since target_write_memory_partial() may not set it in all situations.
Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.143
diff -u -p -p -r1.143 symfile.c
--- symfile.c 1 Oct 2004 10:23:09 -0000 1.143
+++ symfile.c 19 Oct 2004 20:07:58 -0000
@@ -1405,7 +1405,7 @@ load_section_callback (bfd *abfd, asecti
struct cleanup *old_chain;
CORE_ADDR lma = bfd_section_lma (abfd, asec) + args->load_offset;
bfd_size_type block_size;
- int err;
+ int err = 0;
const char *sect_name = bfd_get_section_name (abfd, asec);
bfd_size_type sent;
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |