Hello all,
On my system I have added some asserts into GCC's stl_vector.h, which
check for
various mistakes like out of bounds access, call to std::vector::front
on empty
vector etc. to debug my own projects. After I built GDB with such
modifications, I've noticed that in some cases it accesses some vectors
out of
bound, namely element one past the end. Effectively the code is
something like
`auto*p=&someVector[someVector.size()];`, which, although may seem
legitimate
on the first glance since it simply takes address, is still Undefined
Behavior
according to the C++ Standard (see e.g. [1] and links in that page).
So I wonder whether GDB deliberately exploits undefined behavior here
knowing
that GCC might give(?) some guarantee that this will always work as
intended,
or it's simply a mistake, and my patch would be OK.
[1]: https://stackoverflow.com/a/27069592/673852
Regards,
Ruslan