From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2879 invoked by alias); 26 Sep 2011 18:23:51 -0000 Received: (qmail 2869 invoked by uid 22791); 26 Sep 2011 18:23:48 -0000 X-SWARE-Spam-Status: No, hits=-6.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 26 Sep 2011 18:23:25 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p8QINNkf022941 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 26 Sep 2011 14:23:23 -0400 Received: from valrhona.uglyboxes.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p8QINKSk004434 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 26 Sep 2011 14:23:22 -0400 Message-ID: <4E80C318.1000800@redhat.com> Date: Mon, 26 Sep 2011 19:12:00 -0000 From: Keith Seitz User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0.2) Gecko/20110906 Thunderbird/6.0.2 MIME-Version: 1.0 To: Abhijit Halder CC: "gdb-patches@sourceware.org ml" Subject: Re: PING: [PATCH] Fixing parse errors in c-exp.y References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-09/txt/msg00449.txt.bz2 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