On Fri, Feb 08, 2008 at 08:28:21AM +1300, Nick Roberts wrote:
> 
>  > > I would say they are pretty stable, because we have a stable ABI which
>  > > we are not going to break until C++0x: that means we can only implement
>  > > limited span changes, we cannot add data members, for example neither
>  > > change the memory layout of the classes.
> 
> Probably an ignorant question, but how does this particular ABI get used?
> 
>  > Yes, it would certainly make sense to teach gdb (not just the Emacs
>  > interface of gdb) to recognize STL containers and give a better display.
>  > The members of std::vector have been stable since gcc-3.0, I'm pretty
>  > sure (certainly since 3.2).
> 
> I was thinking of doing it in Emacs, not Gdb.  AFAIK, Gdb can't tell
> what compiler created the executable.

It doesn't need to know that.  Any compiler that follows the ABI, whether gcc,
icc, or SGI's compiler, will produce the same data members on a GNU/Linux
or BSD platform.  It's a portable specification.

gdb could cross-check to see if the class has the expected members.
So, if gdb sees the class std::vector<int> has the members _M_start
_M_finish, and _M_end_of_storage, and it's on a platform that supports
the standard ABI, it can assume that it has a standard vector<int>,
and could safely supply advanced methods.


Reply via email to