This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Python: should gdb.Value array indexing check bounds?
- From: Tom Tromey <tromey at redhat dot com>
- To: Paul Koning <paulkoning at comcast dot net>
- Cc: ratmice at gmail dot com, gdb at sourceware dot org
- Date: Wed, 05 Oct 2011 12:08:19 -0600
- Subject: Re: Python: should gdb.Value array indexing check bounds?
- References: <09787EF419216C41A903FD14EE5506DD03094C6D5D@AUSX7MCPC103.AMER.DELL.COM> <CACTLOFoWxg5JRkLN0406RL1n7Ku2F6GQxYV_R8McJ2_dQeMhOw@mail.gmail.com> <09787EF419216C41A903FD14EE5506DD03094C6D7D@AUSX7MCPC103.AMER.DELL.COM> <7A2DB38D-692D-4E15-BBCE-EFFD115F47DA@comcast.net>
>>>>> "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