* [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
@ 2022-05-25 20:26 François Dumont
2022-05-25 23:34 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: François Dumont @ 2022-05-25 20:26 UTC (permalink / raw)
To: libstdc++; +Cc: gcc-patches
[-- Attachment #1: Type: text/plain, Size: 635 bytes --]
Hi
Here is a patch to fix std::span pretty printer in versioned
namespace mode.
Note that there is still a problem with std::atomic after this patch.
got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
FAIL: libstdc++-prettyprinters/cxx20.cc print spe
libstdc++: [_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
libstdc++-v3/ChangeLog:
* python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
Strip typename from version namespace.
Tested under Linux x86_64 _GLIBCXX_INLINE_VERSION mode.
Ok to commit ?
François
[-- Attachment #2: span_printers.patch --]
[-- Type: text/x-patch, Size: 991 bytes --]
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index 0bd793c0897..fafdff3e5c0 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -1687,7 +1687,7 @@ class StdSpanPrinter:
return '[%d]' % count, (self.begin + count).dereference()
def __init__(self, typename, val):
- self.typename = typename
+ self.typename = strip_versioned_namespace(typename)
self.val = val
if val.type.template_argument(1) == gdb.parse_and_eval('static_cast<std::size_t>(-1)'):
self.size = val['_M_extent']['_M_extent_value']
@@ -1994,7 +1994,7 @@ class FilteringTypePrinter(object):
self.enabled = True
class _recognizer(object):
- "The recognizer class for TemplateTypePrinter."
+ "The recognizer class for FilteringTypePrinter."
def __init__(self, match, name):
self.match = match
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
2022-05-25 20:26 [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer François Dumont
@ 2022-05-25 23:34 ` Jonathan Wakely
2022-05-25 23:38 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Wakely @ 2022-05-25 23:34 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
On Wed, 25 May 2022 at 21:29, François Dumont via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> Hi
>
> Here is a patch to fix std::span pretty printer in versioned
> namespace mode.
>
> Note that there is still a problem with std::atomic after this patch.
>
> got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
> FAIL: libstdc++-prettyprinters/cxx20.cc print spe
>
> libstdc++: [_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
>
> libstdc++-v3/ChangeLog:
>
> * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
> Strip typename from version namespace.
>
> Tested under Linux x86_64 _GLIBCXX_INLINE_VERSION mode.
>
> Ok to commit ?
OK, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
2022-05-25 23:34 ` Jonathan Wakely
@ 2022-05-25 23:38 ` Jonathan Wakely
2022-05-26 9:21 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Wakely @ 2022-05-25 23:38 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
On Thu, 26 May 2022 at 00:34, Jonathan Wakely <jwakely@redhat.com> wrote:
>
> On Wed, 25 May 2022 at 21:29, François Dumont via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
> >
> > Hi
> >
> > Here is a patch to fix std::span pretty printer in versioned
> > namespace mode.
> >
> > Note that there is still a problem with std::atomic after this patch.
> >
> > got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
> > FAIL: libstdc++-prettyprinters/cxx20.cc print spe
Does this fix it?
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -1734,6 +1734,7 @@ class StdAtomicPrinter:
impl = val['_M_impl']
self.shptr_printer = SharedPointerPrinter(typename, impl)
self.children = self._shptr_children
+ self.typename = self.typename.replace(self.value_type.tag, typ)
def _shptr_children(self):
return SmartPtrIterator(self.shptr_printer.pointer)
I'll test it with a versioned-namespace build tomorrow.
> >
> > libstdc++: [_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
> >
> > libstdc++-v3/ChangeLog:
> >
> > * python/libstdcxx/v6/printers.py (StdSpanPrinter.__init__):
> > Strip typename from version namespace.
> >
> > Tested under Linux x86_64 _GLIBCXX_INLINE_VERSION mode.
> >
> > Ok to commit ?
>
> OK, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
2022-05-25 23:38 ` Jonathan Wakely
@ 2022-05-26 9:21 ` Jonathan Wakely
2022-05-26 9:40 ` François Dumont
0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Wakely @ 2022-05-26 9:21 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++, gcc-patches
[-- Attachment #1: Type: text/plain, Size: 1294 bytes --]
On Thu, 26 May 2022 at 00:38, Jonathan Wakely <jwakely@redhat.com> wrote:
>
> On Thu, 26 May 2022 at 00:34, Jonathan Wakely <jwakely@redhat.com> wrote:
> >
> > On Wed, 25 May 2022 at 21:29, François Dumont via Libstdc++
> > <libstdc++@gcc.gnu.org> wrote:
> > >
> > > Hi
> > >
> > > Here is a patch to fix std::span pretty printer in versioned
> > > namespace mode.
> > >
> > > Note that there is still a problem with std::atomic after this patch.
> > >
> > > got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
> > > FAIL: libstdc++-prettyprinters/cxx20.cc print spe
>
> Does this fix it?
>
> --- a/libstdc++-v3/python/libstdcxx/v6/printers.py
> +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
> @@ -1734,6 +1734,7 @@ class StdAtomicPrinter:
> impl = val['_M_impl']
> self.shptr_printer = SharedPointerPrinter(typename, impl)
> self.children = self._shptr_children
> + self.typename = self.typename.replace(self.value_type.tag, typ)
>
> def _shptr_children(self):
> return SmartPtrIterator(self.shptr_printer.pointer)
>
>
> I'll test it with a versioned-namespace build tomorrow.
No, that didn't work, but the attached patch does. Pushed to trunk.
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 1375 bytes --]
commit 634b0089f664cca96d71262b295025e057054f2c
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu May 26 09:49:40 2022
libstdc++: Fix printing of std::atomic<shared_ptr<T>> for versioned namespace
libstdc++-v3/ChangeLog:
* python/libstdcxx/v6/printers.py (SharedPointerPrinter): Strip
versioned namespace from the template argument too.
diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py
index 0bd793c0897..17d5e5b5731 100644
--- a/libstdc++-v3/python/libstdcxx/v6/printers.py
+++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
@@ -242,6 +242,7 @@ class SharedPointerPrinter:
state = 'empty'
refcounts = self._get_refcounts()
targ = self.val.type.template_argument(0)
+ targ = strip_versioned_namespace(str(targ))
if refcounts != 0:
usecount = refcounts['_M_use_count']
@@ -250,7 +251,7 @@ class SharedPointerPrinter:
state = 'expired, weak count %d' % weakcount
else:
state = 'use count %d, weak count %d' % (usecount, weakcount - 1)
- return '%s<%s> (%s)' % (self.typename, str(targ), state)
+ return '%s<%s> (%s)' % (self.typename, targ, state)
def _tuple_impl_get(val):
"Return the tuple element stored in a _Tuple_impl<N, T> base class."
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
2022-05-26 9:21 ` Jonathan Wakely
@ 2022-05-26 9:40 ` François Dumont
2022-05-26 14:49 ` Jonathan Wakely
0 siblings, 1 reply; 6+ messages in thread
From: François Dumont @ 2022-05-26 9:40 UTC (permalink / raw)
To: Jonathan Wakely; +Cc: libstdc++
On 26/05/22 11:21, Jonathan Wakely wrote:
> On Thu, 26 May 2022 at 00:38, Jonathan Wakely <jwakely@redhat.com> wrote:
>> On Thu, 26 May 2022 at 00:34, Jonathan Wakely <jwakely@redhat.com> wrote:
>>> On Wed, 25 May 2022 at 21:29, François Dumont via Libstdc++
>>> <libstdc++@gcc.gnu.org> wrote:
>>>> Hi
>>>>
>>>> Here is a patch to fix std::span pretty printer in versioned
>>>> namespace mode.
>>>>
>>>> Note that there is still a problem with std::atomic after this patch.
>>>>
>>>> got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
>>>> FAIL: libstdc++-prettyprinters/cxx20.cc print spe
>> Does this fix it?
>>
>> --- a/libstdc++-v3/python/libstdcxx/v6/printers.py
>> +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
>> @@ -1734,6 +1734,7 @@ class StdAtomicPrinter:
>> impl = val['_M_impl']
>> self.shptr_printer = SharedPointerPrinter(typename, impl)
>> self.children = self._shptr_children
>> + self.typename = self.typename.replace(self.value_type.tag, typ)
>>
>> def _shptr_children(self):
>> return SmartPtrIterator(self.shptr_printer.pointer)
>>
>>
>> I'll test it with a versioned-namespace build tomorrow.
> No, that didn't work, but the attached patch does. Pushed to trunk.
Great, I just pushed mine too.
Thanks
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer
2022-05-26 9:40 ` François Dumont
@ 2022-05-26 14:49 ` Jonathan Wakely
0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Wakely @ 2022-05-26 14:49 UTC (permalink / raw)
To: François Dumont; +Cc: libstdc++
On Thu, 26 May 2022 at 10:40, François Dumont wrote:
>
> On 26/05/22 11:21, Jonathan Wakely wrote:
> > On Thu, 26 May 2022 at 00:38, Jonathan Wakely <jwakely@redhat.com> wrote:
> >> On Thu, 26 May 2022 at 00:34, Jonathan Wakely <jwakely@redhat.com> wrote:
> >>> On Wed, 25 May 2022 at 21:29, François Dumont via Libstdc++
> >>> <libstdc++@gcc.gnu.org> wrote:
> >>>> Hi
> >>>>
> >>>> Here is a patch to fix std::span pretty printer in versioned
> >>>> namespace mode.
> >>>>
> >>>> Note that there is still a problem with std::atomic after this patch.
> >>>>
> >>>> got: $13 = std::atomic<std::__8::shared_ptr<int>> (empty) = {get() = 0x0}
> >>>> FAIL: libstdc++-prettyprinters/cxx20.cc print spe
> >> Does this fix it?
> >>
> >> --- a/libstdc++-v3/python/libstdcxx/v6/printers.py
> >> +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py
> >> @@ -1734,6 +1734,7 @@ class StdAtomicPrinter:
> >> impl = val['_M_impl']
> >> self.shptr_printer = SharedPointerPrinter(typename, impl)
> >> self.children = self._shptr_children
> >> + self.typename = self.typename.replace(self.value_type.tag, typ)
> >>
> >> def _shptr_children(self):
> >> return SmartPtrIterator(self.shptr_printer.pointer)
> >>
> >>
> >> I'll test it with a versioned-namespace build tomorrow.
> > No, that didn't work, but the attached patch does. Pushed to trunk.
>
> Great, I just pushed mine too.
I have patches to fix the cxx11.cc printer test for
std::__v8::iostream_category() and std::__v8::atomic too.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-05-26 14:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-25 20:26 [PATCH][_GLIBCXX_INLINE_VERSION] Fix std::span pretty printer François Dumont
2022-05-25 23:34 ` Jonathan Wakely
2022-05-25 23:38 ` Jonathan Wakely
2022-05-26 9:21 ` Jonathan Wakely
2022-05-26 9:40 ` François Dumont
2022-05-26 14:49 ` Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).