From patchwork Tue Apr 16 10:17:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Hayward X-Patchwork-Id: 32298 Received: (qmail 61026 invoked by alias); 16 Apr 2019 10:17:53 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 60957 invoked by uid 89); 16 Apr 2019 10:17:53 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, MIME_BASE64_BLANKS, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-eopbgr150082.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (40.107.15.82) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 16 Apr 2019 10:17:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E06JC8sAQ3XG1R1Gs2oah6vfcXUWT9ri7xXGREHZVUU=; b=NKUV6WhEIs4JOn6FSHffVrJD+tXEj1SMdB8QPmPRm0XSB52O6KEJaqL++lJWwOhyiqrj9SaMHZXOw348CwRIltcDGZJBYR/B+BjNTm05SGDH+oewcF14YvV9/C4IaDSYP5yPyoY1GEvOZ6OKRRGP79/sQidGTRsgEvLraIEJIjc= Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com (10.172.227.22) by DB6PR0802MB2597.eurprd08.prod.outlook.com (10.172.247.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.19; Tue, 16 Apr 2019 10:17:42 +0000 Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::399b:3a32:bff9:827e]) by DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::399b:3a32:bff9:827e%11]) with mapi id 15.20.1792.018; Tue, 16 Apr 2019 10:17:42 +0000 From: Alan Hayward To: "gdb-patches@sourceware.org" CC: nd , Alan Hayward Subject: [PATCH 3/4] gdbserver: Ensure all debug output uses debug functions Date: Tue, 16 Apr 2019 10:17:42 +0000 Message-ID: <20190416101729.16176-4-alan.hayward@arm.com> References: <20190416101729.16176-1-alan.hayward@arm.com> In-Reply-To: <20190416101729.16176-1-alan.hayward@arm.com> authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alan.Hayward@arm.com; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-IsSubscribed: yes All debug output needs to go via debug functions to ensure it writes to the correct output stream. gdb/ChangeLog: 2019-04-16 Alan Hayward * nat/linux-waitpid.c (linux_debug): Call debug_vprintf. gdb/gdbserver/ChangeLog: 2019-04-16 Alan Hayward * ax.c (ax_vdebug): Call debug_printf. * debug.c (debug_write): New function. * debug.h (debug_write): New declaration. * linux-low.c (sigchld_handler): Call debug_write. --- gdb/gdbserver/ax.c | 4 ++++ gdb/gdbserver/debug.c | 9 +++++++++ gdb/gdbserver/debug.h | 3 +++ gdb/gdbserver/linux-low.c | 7 +++---- gdb/nat/linux-waitpid.c | 2 +- 5 files changed, 20 insertions(+), 5 deletions(-) -- 2.20.1 (Apple Git-117) diff --git a/gdb/gdbserver/ax.c b/gdb/gdbserver/ax.c index a16fba1ccd..7b8df91749 100644 --- a/gdb/gdbserver/ax.c +++ b/gdb/gdbserver/ax.c @@ -36,7 +36,11 @@ ax_vdebug (const char *fmt, ...) va_start (ap, fmt); vsprintf (buf, fmt, ap); +#ifdef IN_PROCESS_AGENT fprintf (stderr, PROG "/ax: %s\n", buf); +#else + debug_printf (PROG "/ax: %s\n", buf); +#endif va_end (ap); } diff --git a/gdb/gdbserver/debug.c b/gdb/gdbserver/debug.c index 53647c1ea6..adb35292eb 100644 --- a/gdb/gdbserver/debug.c +++ b/gdb/gdbserver/debug.c @@ -131,3 +131,12 @@ do_debug_exit (const char *function_name) if (function_name != NULL) debug_printf ("<<<< exiting %s\n", function_name); } + +/* See debug.h. */ + +size_t +debug_write (const void *buf, size_t nbyte) +{ + int fd = fileno (debug_file); + return write (fd, buf, nbyte); +} diff --git a/gdb/gdbserver/debug.h b/gdb/gdbserver/debug.h index f65c91c9eb..29e58ad8a4 100644 --- a/gdb/gdbserver/debug.h +++ b/gdb/gdbserver/debug.h @@ -35,6 +35,9 @@ void debug_flush (void); void do_debug_enter (const char *function_name); void do_debug_exit (const char *function_name); +/* Async signal safe debug output function that calls write directly. */ +size_t debug_write (const void *buf, size_t nbyte); + /* These macros are for use in major functions that produce a lot of debugging output. They help identify in the mass of debugging output when these functions enter and exit. debug_enter is intended to be diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 168f4b2abc..917b1c290b 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -6185,10 +6185,9 @@ sigchld_handler (int signo) { do { - /* fprintf is not async-signal-safe, so call write - directly. */ - if (write (2, "sigchld_handler\n", - sizeof ("sigchld_handler\n") - 1) < 0) + /* Use the async signal safe debug function. */ + if (debug_write ("sigchld_handler\n", + sizeof ("sigchld_handler\n") - 1) < 0) break; /* just ignore */ } while (0); } diff --git a/gdb/nat/linux-waitpid.c b/gdb/nat/linux-waitpid.c index e31c088f66..a7d11ab8d3 100644 --- a/gdb/nat/linux-waitpid.c +++ b/gdb/nat/linux-waitpid.c @@ -42,7 +42,7 @@ linux_debug (const char *format, ...) { va_list args; va_start (args, format); - vfprintf (stderr, format, args); + debug_vprintf (format, args); va_end (args); } #endif