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

Reply via email to