I think this is the interesting part: std::__uniq_ptr_impl<int,
std::default_delete<int> >

There is no such type in the example I posted. It looks like the
implementation of std::unique_ptr changed, and they added an extra
member object. This tells me the fix should be in the data formatter
for std::unique_ptr and not std::tuple (which makes sense, because
your std::tuple tests are still passing (?)). We should detect the new
layout and format based on that. It would also be good to know in
which libstdc++ version this changed, so we can leave a note to future
selves about when can this be cleaned up.

On 28 February 2018 at 05:25, Alexandre Yukio Yamashita
<alexandre.yamash...@eldorado.org.br> wrote:
> All the test cases in TestDataFormatterStdUniquePtr were failing.
> My std::unique_ptr layout is:
>
>     (std::unique_ptr<int, std::default_delete<int> >) iup = {
>       (std::__uniq_ptr_impl<int, std::default_delete<int> >) _M_t = {
>         (std::tuple<int *, std::default_delete<int> >) _M_t = {
>           (std::_Tuple_impl<0, int *, std::default_delete<int> >)
> std::_Tuple_impl<0, int *, std::default_delete<int> > = {
>             (std::_Head_base<0, int *, false>) std::_Head_base<0, int *,
> false> = {
>               (int *) _M_head_impl = 0x0000000010041c20
>             }
>           }
>         }
>       }
>     }
>
> It is showing "std::tuple<int *, std::default_delete<int> >) _M_t"
> instead of "std::_Tuple_impl<0, int *, std::default_delete<int> >".
>
>
> Em 27/02/2018 19:34, Greg Clayton escreveu:
>
> Then the question becomes how can we identify the STL that is being used
> correctly so we can do the right thing. I worry that if std::unique_ptr
> isn't working that many many other STL things won't work as well. We are
> tuned for a specific STL
>
> On Feb 27, 2018, at 2:12 PM, Pavel Labath via lldb-dev
> <lldb-dev@lists.llvm.org> wrote:
>
> This probably isn't arch-dependent. More likely you just have a
> different version of libstdc++. Can you share how the std::unique_ptr
> layout looks like for you. This is how my std::unique_ptr looks like
> (from libstdc++.so.6.0.22):
>
> (lldb) fr var X -R -T
> (std::unique_ptr<int, std::default_delete<int> >) X = {
>  (std::unique_ptr<int, std::default_delete<int> >::__tuple_type) _M_t = {
>    (std::_Tuple_impl<0, int *, std::default_delete<int> >)
> std::_Tuple_impl<0, int *, std::default_delete<int> > = {
>      (std::_Head_base<0, int *, false>) std::_Head_base<0, int *, false> = {
>        (int *) _M_head_impl = 0x0000555555768c20
>      }
>    }
>  }
> }
>
> On 27 February 2018 at 12:26, Alexandre Yukio Yamashita via lldb-dev
> <lldb-dev@lists.llvm.org> wrote:
>
> Hi,
>
> LLDB is printing a empty value for unique pointers in PowerPC.
> And I am investigating a solution for this problem.
>
> The problem occurs because the ptr_obj variable has a empty value in
> Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp:73.
>
> I could solve it, changing this line
> Plugins/Language/CPlusPlus/LibStdcppTuple.cpp:68
> from:
>     if (name_str.startswith("std::_Tuple_impl<")) {
> to:
>     if (name_str.startswith("std::_Tuple_impl<") ||
> name_str.startswith("_M_t") ) {
>
> After this change, the test TestDataFormatterStdUniquePtr pass with success.
> And the unique pointers are displayed correctly.
>
> Is there a better solution for that?
>
> Thanks.
> Alexandre.
>
>
> --
> Alexandre Yukio Yamashita (DSB)
> Instituto de Pesquisas Eldorado
> www.eldorado.org.br
> +55 19 3757 3201 / +55 19 9 8336 5553
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
>
> --
> Alexandre Yukio Yamashita (DSB)
> Instituto de Pesquisas Eldorado
> www.eldorado.org.br
> +55 19 3757 3201 / +55 19 9 8336 5553
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to