From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 57662 invoked by alias); 23 Apr 2015 11:47:51 -0000 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 Received: (qmail 57643 invoked by uid 89); 23 Apr 2015 11:47:51 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.3 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 23 Apr 2015 11:47:50 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 61925A10BC for ; Thu, 23 Apr 2015 11:47:49 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-116-27.ams2.redhat.com [10.36.116.27]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t3NBljHZ025216 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 23 Apr 2015 07:47:48 -0400 Date: Thu, 23 Apr 2015 11:47:00 -0000 From: Jan Kratochvil To: Phil Muldoon Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] compile: Use libcc1.so->libcc1.so.0 Message-ID: <20150423114745.GA5268@host1.jankratochvil.net> References: <20150421213616.14023.38329.stgit@host1.jankratochvil.net> <55380F04.9050909@redhat.com> <20150423052909.GA18986@host1.jankratochvil.net> <5538CF08.60801@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5538CF08.60801@redhat.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg00866.txt.bz2 On Thu, 23 Apr 2015 12:52:56 +0200, Phil Muldoon wrote: > On 23/04/15 06:29, Jan Kratochvil wrote: > > > > So you request forward/backward compatibilities, specifically: > > > > (1) Do you request future gdb-7.10 is compatible with existing gcc-5.x? > > > > (2) Do you request future gcc-6.0 is compatible with existing gdb-7.9? > > > > With an answer for (1) and (2) we can decide on how to implement it. > > Both! ;) While (1) could be possibly useful personally I do not find the compatibility (2) useful. > I don't think a version change merits that. And the change is tiny: > just one more parameter for a function. You could avoid it by having > two public methods exported in the vtable: foo (old params), foo (old > params, new params) and then re-factoring out the old function to > foo_worker_1 and have the two "foo" functions call foo_worker_1 with > the new parameter or NULL in its place. I do not see so clear how to implement it. If GDB changes: gdb/compile/compile-c-support.c:110: context = (*func) (GCC_FE_VERSION_0, GCC_C_FE_VERSION_0); -> gdb/compile/compile-c-support.c:110: context = (*func) (GCC_FE_VERSION_1, GCC_C_FE_VERSION_0); then compatibiity (1) is violated. Besides that you said no new API version should be introduced. If GCC returns larger vtable for: gdb/compile/compile-c-support.c:110: context = (*func) (GCC_FE_VERSION_0, GCC_C_FE_VERSION_0); then GDB has no way to figure out there is the new field at the end of vtable. Maybe GCC could return in such case 'gcc_base_vtable vtable' with GCC_FE_VERSION_1 which would be compatible with existing GDBs but I find that a hack, if GDB asked for GCC_FE_VERSION_0 then it should get version==GCC_FE_VERSION_0. Besides that you said no new API version should be introduced. Existing implementations only compare 'version' for equality. IMO for your requested compatibility (1)+(2) it would be most clean to have an additional field 'minor_version' which would be compared for less-or-equal (by GCC as a minimal functionality level requested by GDB and by GDB as a functionality level supported by GCC). This was omitted by the initial interface design. > What are your thoughts? I think that trunk versions of API should not be complicated by backward compatibility when we control trunk versions of both client and server. I can implement the variant I marked as "hack" above which satisfies both compatibilities (1) and (2). Jan