public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* potential patch for gdb bug c++/20020
       [not found] <CAOhs8xKxGGTqpuFd40wWA8O6i97Odc_dmG=csK1DAFf=TCnYbg@mail.gmail.com>
@ 2018-12-06 18:29 ` Bob Steagall
  2018-12-06 19:20   ` Andrew Burgess
  0 siblings, 1 reply; 5+ messages in thread
From: Bob Steagall @ 2018-12-06 18:29 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 284 bytes --]

Description: This patch, against released version 8.2, fixes the
problem reported in gdb bug c++/20020, using the approach described in
comment 1 of that report.

Changelog entry:

2018-12-06  Bob Steagall   <bob.steagall.cpp@gmail.com>

        * cp-valprint.c: Fixes bug c++/20020.

[-- Attachment #2: fix-for-20020.patch --]
[-- Type: application/x-patch, Size: 790 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: potential patch for gdb bug c++/20020
  2018-12-06 18:29 ` potential patch for gdb bug c++/20020 Bob Steagall
@ 2018-12-06 19:20   ` Andrew Burgess
  2018-12-06 20:49     ` Bob Steagall
  0 siblings, 1 reply; 5+ messages in thread
From: Andrew Burgess @ 2018-12-06 19:20 UTC (permalink / raw)
  To: Bob Steagall; +Cc: gdb-patches

* Bob Steagall <bob.steagall.cpp@gmail.com> [2018-12-06 13:29:31 -0500]:

> Description: This patch, against released version 8.2, fixes the
> problem reported in gdb bug c++/20020, using the approach described in
> comment 1 of that report.
> 
> Changelog entry:
> 
> 2018-12-06  Bob Steagall   <bob.steagall.cpp@gmail.com>
> 
>         * cp-valprint.c: Fixes bug c++/20020.

> --- gdb/cp-valprint.c	2018-09-05 03:27:13.000000000 -0400
> +++ gdb/cp-valprint.c.new	2018-12-06 13:01:06.819266165 -0500
> @@ -326,12 +326,16 @@ cp_print_value_fields (struct type *type
>  		      fprintf_filtered (stream,
>  					_("<error reading variable: %s>"),
>  					ex.message);
> +                      v = NULL;

I don't think this NULL assignment should be needed.  `v` starts as
NULL, and we only end in this block if `value_static_field` throws an
exception, which will be before `v` is assigned too.

>  		    }
>  		  END_CATCH
>  
> -		  cp_print_static_field (TYPE_FIELD_TYPE (type, i),
> -					 v, stream, recurse + 1,
> -					 options);
> +                  if (v != NULL)
> +                    {

You should drop the '{' and '}' here for a single statement block.

> +                      cp_print_static_field (TYPE_FIELD_TYPE (type, i),
> +                                             v, stream, recurse + 1,
> +                                             options);
> +                    }
>  		}
>  	      else if (i == vptr_fieldno && type == vptr_basetype)
>  		{

I'm not a maintainer so can't approve patches, but this seems sensible
to me.

Thanks,
Andrew

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: potential patch for gdb bug c++/20020
  2018-12-06 19:20   ` Andrew Burgess
@ 2018-12-06 20:49     ` Bob Steagall
  2018-12-06 21:07       ` Tom Tromey
  0 siblings, 1 reply; 5+ messages in thread
From: Bob Steagall @ 2018-12-06 20:49 UTC (permalink / raw)
  To: andrew.burgess; +Cc: gdb-patches

On Thu, Dec 6, 2018 at 2:20 PM Andrew Burgess
<andrew.burgess@embecosm.com> wrote:
>
> * Bob Steagall <bob.steagall.cpp@gmail.com> [2018-12-06 13:29:31 -0500]:
>
> > Description: This patch, against released version 8.2, fixes the
> > problem reported in gdb bug c++/20020, using the approach described in
> > comment 1 of that report.
> >
> > Changelog entry:
> >
> > 2018-12-06  Bob Steagall   <bob.steagall.cpp@gmail.com>
> >
> >         * cp-valprint.c: Fixes bug c++/20020.
>
> > --- gdb/cp-valprint.c 2018-09-05 03:27:13.000000000 -0400
> > +++ gdb/cp-valprint.c.new     2018-12-06 13:01:06.819266165 -0500
> > @@ -326,12 +326,16 @@ cp_print_value_fields (struct type *type
> >                     fprintf_filtered (stream,
> >                                       _("<error reading variable: %s>"),
> >                                       ex.message);
> > +                      v = NULL;
>
> I don't think this NULL assignment should be needed.  `v` starts as
> NULL, and we only end in this block if `value_static_field` throws an
> exception, which will be before `v` is assigned too.

Agreed.  I was being, perhaps, too paranoid here.

> >                   }
> >                 END_CATCH
> >
> > -               cp_print_static_field (TYPE_FIELD_TYPE (type, i),
> > -                                      v, stream, recurse + 1,
> > -                                      options);
> > +                  if (v != NULL)
> > +                    {
>
> You should drop the '{' and '}' here for a single statement block.

Disagree.  The gdb coding standard document specifically calls out
lines of code,
not statements:

    "Any two or more lines in code should be wrapped in braces, even if they
     are comments, as they look like separate statements"

> > +                      cp_print_static_field (TYPE_FIELD_TYPE (type, i),
> > +                                             v, stream, recurse + 1,
> > +                                             options);
> > +                    }
> >               }
> >             else if (i == vptr_fieldno && type == vptr_basetype)
> >               {
>
> I'm not a maintainer so can't approve patches, but this seems sensible
> to me.
>
> Thanks,
> Andrew

I will update and re-send.

Thanks for the review,
--Bob

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: potential patch for gdb bug c++/20020
  2018-12-06 20:49     ` Bob Steagall
@ 2018-12-06 21:07       ` Tom Tromey
  2018-12-07 12:52         ` Bob Steagall
  0 siblings, 1 reply; 5+ messages in thread
From: Tom Tromey @ 2018-12-06 21:07 UTC (permalink / raw)
  To: Bob Steagall; +Cc: andrew.burgess, gdb-patches

>>>>> "Bob" == Bob Steagall <bob.steagall.cpp@gmail.com> writes:

>> You should drop the '{' and '}' here for a single statement block.

Bob> Disagree.  The gdb coding standard document specifically calls out
Bob> lines of code,
Bob> not statements:

Bob>     "Any two or more lines in code should be wrapped in braces, even if they
Bob>      are comments, as they look like separate statements"

I think this is just slightly mis-worded -- Andrew's interpretation is
the prevailing one.  That is, no brace for:

  if (blah)
     function_call (spanning,
                    multiple,
                    lines);

... but do have braces for:

  if (blah)
    {
      /* Just a comment.  */
      anything ();
    }

I agree the patch is good.  I think a test case would be good to have,
unless for some reason it's difficult to write one.

Tom

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: potential patch for gdb bug c++/20020
  2018-12-06 21:07       ` Tom Tromey
@ 2018-12-07 12:52         ` Bob Steagall
  0 siblings, 0 replies; 5+ messages in thread
From: Bob Steagall @ 2018-12-07 12:52 UTC (permalink / raw)
  To: tom; +Cc: andrew.burgess, gdb-patches

OK, I will update to include both suggestions.

Regarding the test case, I don't know how to write a unit test case if
that's what you're asking for.  However, there are directions for
reproducing the problem I experience in my original bug report
c++/23953 (subsequently closed as a duplicate of 20020).

I'll send the updated patch momentarily.

--Bob
On Thu, Dec 6, 2018 at 4:07 PM Tom Tromey <tom@tromey.com> wrote:
>
> >>>>> "Bob" == Bob Steagall <bob.steagall.cpp@gmail.com> writes:
>
> >> You should drop the '{' and '}' here for a single statement block.
>
> Bob> Disagree.  The gdb coding standard document specifically calls out
> Bob> lines of code,
> Bob> not statements:
>
> Bob>     "Any two or more lines in code should be wrapped in braces, even if they
> Bob>      are comments, as they look like separate statements"
>
> I think this is just slightly mis-worded -- Andrew's interpretation is
> the prevailing one.  That is, no brace for:
>
>   if (blah)
>      function_call (spanning,
>                     multiple,
>                     lines);
>
> ... but do have braces for:
>
>   if (blah)
>     {
>       /* Just a comment.  */
>       anything ();
>     }
>
> I agree the patch is good.  I think a test case would be good to have,
> unless for some reason it's difficult to write one.
>
> Tom

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-12-07 12:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CAOhs8xKxGGTqpuFd40wWA8O6i97Odc_dmG=csK1DAFf=TCnYbg@mail.gmail.com>
2018-12-06 18:29 ` potential patch for gdb bug c++/20020 Bob Steagall
2018-12-06 19:20   ` Andrew Burgess
2018-12-06 20:49     ` Bob Steagall
2018-12-06 21:07       ` Tom Tromey
2018-12-07 12:52         ` Bob Steagall

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).