This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: PING: [PATCH] Fixing parse errors in c-exp.y
- From: Keith Seitz <keiths at redhat dot com>
- To: Abhijit Halder <abhijit dot k dot halder at gmail dot com>
- Cc: "gdb-patches at sourceware dot org ml" <gdb-patches at sourceware dot org>
- Date: Mon, 26 Sep 2011 11:23:20 -0700
- Subject: Re: PING: [PATCH] Fixing parse errors in c-exp.y
- References: <CAOhZP9yJmAhfHU_A_UR4xiVkijzbYKUb3tjbdNYnsYTZQHsk+g@mail.gmail.com>
On 09/24/2011 02:18 AM, Abhijit Halder wrote:
This patch is about fixing parse error coming when gdb tries to parse
a pointer to a function pointer. e.g. (int)(**)(int) and the
associated problem, defined in PR 9837, which says wrong parsing when
pointers appear in function argument e.g. (int)(*)(int*)
Thank you for looking into this issue -- I have recently stumbled upon
this (again), and I am glad someone is attempting to fix it. It is
definitely not an easy task (which is why this has been sitting broken
for so long).
Please review this.
I have applied your patch to HEAD and run the test suite. Unfortunately,
the proposed patch causes quite a few regressions:
! FAIL: gdb.base/code-expr.exp: (int ** @code)
! FAIL: gdb.base/cvexpr.exp: (int ** const)
! FAIL: gdb.cp/cpexprs.exp: print base::overload(base&) const
! FAIL: gdb.cp/cpexprs.exp: print base::overload(char*) const
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator*(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator%(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator-(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator>>(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator!=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator>(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator>=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator|(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator&&(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator+=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator*=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator%=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator>>=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator|=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator,(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator/(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator+(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator<<(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator==(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator<(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator<=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator&(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator^(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator||(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator-=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator/=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator<<=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator&=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator^=(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator->*(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator[](foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator()(foo&)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*)
! FAIL: gdb.cp/cplusfuncs.exp: print &foo::operator delete(void*)
! FAIL: gdb.cp/overload.exp: print foo::overload1arg(char***)
These will need to be fixed before a serious review of this patch can
proceed.
Keith