Python: should gdb.Value array indexing check bounds?

Tom Tromey tromey@redhat.com
Wed Oct 5 18:08:00 GMT 2011


>>>>> "Paul" == Paul Koning <paulkoning@comcast.net> writes:

Paul> Currently, if a gdb.Value object corresponds to an array, array
Paul> indexing is done C-style: no bounds checking, just pointer
Paul> arithmetic.  That's somewhat unnatural to Python.  Should it do a
Paul> range check instead, and raise IndexError for out of range index
Paul> values?

I think it would be good if the bad cases could somehow be avoided.

Matt> I'd think no because of things like:
Matt> http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Zero-Length.html
Matt> (which is possible with non-zero length arrays also).

Paul> I suppose that could be handled by making the check not apply in that
Paul> case.

I think there are other bad cases -- e.g., the classic C struct hack
uses an array with 1 element.

Paul> Or the bounds could be made writable?  Right now the bounds go
Paul> with the type, not the value; for them to be writable they would have
Paul> to go with the value.

This sounds like Jan's VLA patchset.

I'm not sure how rewriting the bounds would work in practice.
I guess you could just cast the array to a pointer today.

Tom



More information about the Gdb mailing list