This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch libstdc++] Add xmethods for std::vector and std::unique_ptr


On Mon, Jun 30, 2014 at 8:00 AM, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> "Siva" == Siva Chandra <sivachandra@google.com> writes:
>
> Siva> +# Load the xmethods.
> Siva> +from libstdcxx.v6.xmethods import register_libstdcxx_xmethods
> Siva> +register_libstdcxx_xmethods (gdb.current_objfile ())
>
> I don't think any addition to the hook file should be needed.

I removed it in the attached patch.

> Siva> +        # The object to be returned is the 0-th element in the tuple _m_t.
> Siva> +        # The following retrieves the 0-th element of this tuple.
> Siva> +        _m_t_base = _m_t[_m_t.type.fields()[0]] # std::tuple has a single base
> Siva> +                                                # class and no data members.
> Siva> +        for f in _m_t_base.type.fields():
> Siva> +            # The object is embedded in the _Head_base<> base class of
> Siva> +            # _m_t_base.
> Siva> +            if f.is_base_class and f.name.find('std::_Head_base<') == 0:
> Siva> +                _head_base = _m_t_base[f]
>
> Did you investigate sharing any code with the printers?
> If so, why did you choose not to?
> If not, could you please look into that?

I have considered this. I tried to be too smart in the above snippet.
But, look at the attached patch; All that can be replaced by a simple
one-liner. In which case, would trying to make it common for
prettyprinters and xmethods become an overkill? For std::vector, I do
not think there is an overlap between xmethods and prettyprinters. I
will keep this in mind for future xmethods though.

ChangeLog

libstdc++-v3/

2014-06-30  Siva Chandra Reddy  <sivachandra@google.com>

        * python/libstdcxx/v6/xmethods.py: New file.
        * testsuite/lib/gdb-test.exp (gdb_version_check_xmethods): New
        function.
        (gdb-test): New optional argument LOAD_XMETHODS.  Load xmethods
        python script if LOAD_XMETHODS is true.
        * testsuite/libstdc++-xmethods/unique_ptr.cc: New file.
        * testsuite/libstdc++-xmethods/vector.cc: New file.
        * testsuite/libstdc++-xmethods/xmethods.exp: New file.

Attachment: libstdcxx-xmethods-v2.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]