This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB 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] Add proper handling for non-local references in nested functions


On Thu, 23 Jul 2015 18:14:12 +0200
Pierre-Marie de Rodat <derodat@adacore.com> wrote:

> On 07/23/2015 03:44 PM, Kevin Buettner wrote:
>
> > I'll test your new patch today.  I've encountered a GDB bug related to
> > examining variables with within a nested function.  I'm hoping that
> > your patch will fix it...
> 
> I am as well: keep me updated! ;-)

Your patch did indeed fix my problem.

Given this test case (which I cobbled together while looking at another
matter)...

--- nested.c ---
int
main ()
{
  static int a = 1, b = 2, c = 3;
  int d = 4, e = 5, f = 6;

  void p (void)
  {
    c = 7;
    f = 8;
    __builtin_printf ("%d %d %d %d\n", b, c, e, f);
  }

  p ();

  a = 101; b = 102; c = 103;
  d = 104; e = 105; f = 106;

  p ();

  return 0;
}
--- end nested.c ---

...this is the behavior that I was seeing (without your patch):

Breakpoint 1, p () at nested.c:11
11          __builtin_printf ("%d %d %d %d\n", b, c, e, f);
(gdb) p a
$1 = 1
(gdb) p b
$2 = 2
(gdb) p c
$3 = 7
(gdb) p d
$4 = 32767
(gdb) p e
$5 = 5
(gdb) p f
$6 = 8

Note that the value of d is wrong.

Now, with your patch, this is what I see:

Breakpoint 1, p () at nested.c:11
11          __builtin_printf ("%d %d %d %d\n", b, c, e, f);
(gdb) p a
$1 = 1
(gdb) p b
$2 = 2
(gdb) p c
$3 = 7
(gdb) p d
$4 = 4
(gdb) p e
$5 = 5
(gdb) p f
$6 = 8

So, with your patch, the value of d is correct.

I don't know why, but with your patch from yesterday, I was still
seeing the faulty behavior.  (It is possible that I messed up with
my testing...)

Kevin


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