Message ID | 20161124152917.52189-1-jhb@FreeBSD.org |
---|---|
State | New, archived |
Headers |
Received: (qmail 8658 invoked by alias); 24 Nov 2016 15:31:26 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <gdb-patches.sourceware.org> List-Unsubscribe: <mailto:gdb-patches-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:gdb-patches-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 8647 invoked by uid 89); 24 Nov 2016 15:31:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL, BAYES_50, SPF_HELO_PASS, SPF_SOFTFAIL autolearn=no version=3.3.2 spammy=U*jhb, jhbfreebsdorg, jhb@freebsd.org, 3866 X-HELO: mail.baldwin.cx Received: from bigwig.baldwin.cx (HELO mail.baldwin.cx) (96.47.65.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 24 Nov 2016 15:31:15 +0000 Received: from ralph.com (c-73-231-226-104.hsd1.ca.comcast.net [73.231.226.104]) by mail.baldwin.cx (Postfix) with ESMTPSA id 842C510A81A for <gdb-patches@sourceware.org>; Thu, 24 Nov 2016 10:31:13 -0500 (EST) From: John Baldwin <jhb@FreeBSD.org> To: gdb-patches@sourceware.org Subject: [PATCH] Define an error function in the PPC simulator. Date: Thu, 24 Nov 2016 07:29:17 -0800 Message-Id: <20161124152917.52189-1-jhb@FreeBSD.org> X-IsSubscribed: yes |
Commit Message
John Baldwin
Nov. 24, 2016, 3:29 p.m. UTC
Previously this used the error function from GDB directly instead of the error method in the host callbacks structure. This was exposed via a link error when GDB was converted to C++. The error function invokes the error callback similar to sim_io_error. sim/ppc/ChangeLog: * sim_calls.c (error): New function. --- sim/ppc/ChangeLog | 4 ++++ sim/ppc/sim_calls.c | 10 ++++++++++ 2 files changed, 14 insertions(+)
Comments
On 24 Nov 2016 07:29, John Baldwin wrote: > Previously this used the error function from GDB directly instead of > the error method in the host callbacks structure. This was exposed via > a link error when GDB was converted to C++. The error function invokes > the error callback similar to sim_io_error. ppc/main.c and ppc/misc.c already have error() definitions -mike
On Friday, November 25, 2016 08:49:08 AM Mike Frysinger wrote: > On 24 Nov 2016 07:29, John Baldwin wrote: > > Previously this used the error function from GDB directly instead of > > the error method in the host callbacks structure. This was exposed via > > a link error when GDB was converted to C++. The error function invokes > > the error callback similar to sim_io_error. > > ppc/main.c and ppc/misc.c already have error() definitions Yes, though those are not included when libsim is linked into gdb itself. misc.o is explicitly included for certain binaries in sim/ppc/Makefile.in. Note that zalloc() is defined in both misc.c and sim_calls.c as well, I suspect for similar reasons. Looking at main.c, it overrides various symbols (sim_io_*, also zalloc) that are defined in sim_calls.c with local versions. (Perhaps psim should not be linking sim_calls.o in at all?) 'error' is another such symbol.
On 25 Nov 2016 09:21, John Baldwin wrote: > On Friday, November 25, 2016 08:49:08 AM Mike Frysinger wrote: > > On 24 Nov 2016 07:29, John Baldwin wrote: > > > Previously this used the error function from GDB directly instead of > > > the error method in the host callbacks structure. This was exposed via > > > a link error when GDB was converted to C++. The error function invokes > > > the error callback similar to sim_io_error. > > > > ppc/main.c and ppc/misc.c already have error() definitions > > Yes, though those are not included when libsim is linked into gdb itself. > misc.o is explicitly included for certain binaries in sim/ppc/Makefile.in. > Note that zalloc() is defined in both misc.c and sim_calls.c as well, I > suspect for similar reasons. > > Looking at main.c, it overrides various symbols (sim_io_*, also > zalloc) that are defined in sim_calls.c with local versions. (Perhaps > psim should not be linking sim_calls.o in at all?) 'error' is another > such symbol. yes, the ppc sim is a bit of mess due to its history. i'm not sure we should just keep throwing onto the pile though. if psim/main.c doesn't need it, then dropping it sounds easy enough. -mike
On Saturday, November 26, 2016 02:19:46 PM Mike Frysinger wrote: > On 25 Nov 2016 09:21, John Baldwin wrote: > > On Friday, November 25, 2016 08:49:08 AM Mike Frysinger wrote: > > > On 24 Nov 2016 07:29, John Baldwin wrote: > > > > Previously this used the error function from GDB directly instead of > > > > the error method in the host callbacks structure. This was exposed via > > > > a link error when GDB was converted to C++. The error function invokes > > > > the error callback similar to sim_io_error. > > > > > > ppc/main.c and ppc/misc.c already have error() definitions > > > > Yes, though those are not included when libsim is linked into gdb itself. > > misc.o is explicitly included for certain binaries in sim/ppc/Makefile.in. > > Note that zalloc() is defined in both misc.c and sim_calls.c as well, I > > suspect for similar reasons. > > > > Looking at main.c, it overrides various symbols (sim_io_*, also > > zalloc) that are defined in sim_calls.c with local versions. (Perhaps > > psim should not be linking sim_calls.o in at all?) 'error' is another > > such symbol. > > yes, the ppc sim is a bit of mess due to its history. i'm not sure we > should just keep throwing onto the pile though. > > if psim/main.c doesn't need it, then dropping it sounds easy enough. I misread the Makefiles a bit and psim doesn't link in sim_calls.o, so it still needs its own zalloc() and error() in main.c. In particular, ppc/Makefile generates the libsim.a that gdb links against which includes sim_calls.o (via GDB_OBJ) but not main.o or misc.o. The psim binary includes main.o (but not sim_calls.o or misc.o), and the other binaries (igen, dgen, tmp-filter) include misc.o (but not sim_calls.o or main.o). While it might make sense to merge bits of main.c with misc.c, I think the GDB-specific functions in sim_calls.c are always going to be required (including a custom error() that invokes GDB's error hook).
On Tuesday, December 06, 2016 11:08:07 AM John Baldwin wrote: > On Saturday, November 26, 2016 02:19:46 PM Mike Frysinger wrote: > > On 25 Nov 2016 09:21, John Baldwin wrote: > > > On Friday, November 25, 2016 08:49:08 AM Mike Frysinger wrote: > > > > On 24 Nov 2016 07:29, John Baldwin wrote: > > > > > Previously this used the error function from GDB directly instead of > > > > > the error method in the host callbacks structure. This was exposed via > > > > > a link error when GDB was converted to C++. The error function invokes > > > > > the error callback similar to sim_io_error. > > > > > > > > ppc/main.c and ppc/misc.c already have error() definitions > > > > > > Yes, though those are not included when libsim is linked into gdb itself. > > > misc.o is explicitly included for certain binaries in sim/ppc/Makefile.in. > > > Note that zalloc() is defined in both misc.c and sim_calls.c as well, I > > > suspect for similar reasons. > > > > > > Looking at main.c, it overrides various symbols (sim_io_*, also > > > zalloc) that are defined in sim_calls.c with local versions. (Perhaps > > > psim should not be linking sim_calls.o in at all?) 'error' is another > > > such symbol. > > > > yes, the ppc sim is a bit of mess due to its history. i'm not sure we > > should just keep throwing onto the pile though. > > > > if psim/main.c doesn't need it, then dropping it sounds easy enough. > > I misread the Makefiles a bit and psim doesn't link in sim_calls.o, so it > still needs its own zalloc() and error() in main.c. > > In particular, ppc/Makefile generates the libsim.a that gdb links against > which includes sim_calls.o (via GDB_OBJ) but not main.o or misc.o. The > psim binary includes main.o (but not sim_calls.o or misc.o), and the other > binaries (igen, dgen, tmp-filter) include misc.o (but not sim_calls.o or > main.o). > > While it might make sense to merge bits of main.c with misc.c, I think the > GDB-specific functions in sim_calls.c are always going to be required > (including a custom error() that invokes GDB's error hook). *ping* (This fixes PR sim/20863 btw)
diff --git a/sim/ppc/ChangeLog b/sim/ppc/ChangeLog index 7ed024e..f7d8ffb 100644 --- a/sim/ppc/ChangeLog +++ b/sim/ppc/ChangeLog @@ -1,3 +1,7 @@ +2016-11-24 John Baldwin <jhb@FreeBSD.org> + + * sim_calls.c (error): New function. + 2016-01-10 Mike Frysinger <vapier@gentoo.org> * configure.ac (sim-assert): Call AC_MSG_CHECKING, diff --git a/sim/ppc/sim_calls.c b/sim/ppc/sim_calls.c index 470c958..eb5d1a7 100644 --- a/sim/ppc/sim_calls.c +++ b/sim/ppc/sim_calls.c @@ -386,6 +386,16 @@ sim_io_error (SIM_DESC sd, const char *fmt, ...) /****/ +void NORETURN +error (const char *msg, ...) +{ + va_list ap; + va_start(ap, msg); + callbacks->evprintf_filtered (callbacks, msg, ap); + va_end(ap); + callbacks->error (callbacks, ""); +} + void * zalloc(long size) {