Hello - I 've come across a few things that make no sense and seem wrong.
===========================
(a) example - top part of "target.c' - target_init()
does this:
target->type->examined = 0;
Generally, the idea of "type" is a C version of a C++ method table.
(or what ever its you call it)
That I would think - should be *READONLY* - because
target->type->examined
is for *ALL* targets of that type.
*NOT* the specific target in question.
I would have expected: target->examined instead.
In effect, "target_type_t" should be a CONST... should it not?
===========================
(b) I have been burned by this a few times - GDB goes out in La-La Land..
In src/server/gdbserver.c - gdb_read_memory_packet()
If the requested address + the length causes it to wrap... GDB is
generally lost and should be told to pound sand.
This is really true @ startup - if the program counter is some how
reported as -2
(Why it is - I do not know.... but it happens some times for me - I
wish i knew)
And at that point - GCC appears to proceed to try to disassemble
4gig of memory...
I added this - it seems to help - but I am sure about it. If it is
obvious - I suggest someone fix it.
// about line 1050 in gdb_server.c
if( (addr+len) < addr ){
/* memory wraps! */
retval == ERROR_TARGET_DATA_ABORT;
} else {
retval = target_read_buffer(target, addr, len, buffer);
}
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development