From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7158 invoked by alias); 30 Apr 2014 19:18:19 -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 7134 invoked by uid 89); 30 Apr 2014 19:18:17 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,FROM_12LTRDOM autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 30 Apr 2014 19:18:15 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1Wfa1E-0004yQ-K9 from donb@codesourcery.com for gdb-patches@sourceware.org; Wed, 30 Apr 2014 12:18:12 -0700 Received: from SVR-ORW-FEM-04.mgc.mentorg.com ([147.34.97.41]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Wed, 30 Apr 2014 12:18:12 -0700 Received: from build4-lucid-cs (147.34.91.1) by svr-orw-fem-04.mgc.mentorg.com (147.34.97.41) with Microsoft SMTP Server id 14.2.247.3; Wed, 30 Apr 2014 12:18:10 -0700 Received: by build4-lucid-cs (Postfix, from userid 1905) id E7EB040E1F; Wed, 30 Apr 2014 12:18:10 -0700 (PDT) From: Don Breazeal To: Subject: [PATCH 0/0][REPOST] Exec events in gdbserver on Linux Date: Wed, 30 Apr 2014 19:18:00 -0000 Message-ID: <1398885482-8449-1-git-send-email-donb@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00648.txt.bz2 [Reposting to eliminate unexpected attachment type.] This patch implements support for exec events in gdbserver on GNU/Linux. This is a step towards the "follow fork/exec" item in the local/remote debugging feature parity project: (https://sourceware.org/gdb/wiki/LocalRemoteFeatureParity). Luis had started work on this last year, and handed it off to me at the end of January. (BTW, thanks to Luis for his advice on this, although any problems with this patch are entirely mine.) Follow-exec-mode and rerun behave as expected in multiprocess mode (target extended-remote), where follow-exec-mode maintains the specified inferiors and rerun runs the last executable file to be exec'd. Catchpoints for exec are not implemented in this patch series, since this will be easier to do once fork and vfork events are also supported. - Patch 1/4 implements support for the extended ptrace event PTRACE_EVENT_EXIT, which is a prerequisite for the exec event support. - Patch 2/4 implements the exec event support. - Patch 3/4 adds documentation for the new RSP "Stop Reply" message. - Patch 4/4 extends the tests gdb.threads/non-ldr-exc-[1-4].exp to test in non-stop mode as well as in all-stop mode. There are a couple of significant aspects to this patch. First, it uses the ptrace extension PTRACE_EVENT_EXIT to detect thread exit, in particular the exit of a thread group leader when a non-leader calls exec. Use of this event was necessary due to a race condition in the two-thread case. It is only used internally; exit events detected this way are not exposed to the user, and exit processing was changed as little as possible. Second, it sends a signal to each lwp after an exec event in order to identify and clean up the lwp entry for the exec'ing thread. This happens in the normal course of things for all-stop mode, but in non-stop mode gdbserver uses SIGSTOP to stop, then resume all of the non-leader threads to accomplish this. More detailed explanations of these issues are included in the patch 2/4 email. My intent is to follow up with implementations of remote fork/vfork events and associated catchpoints. Thanks, --Don gdb/common/linux-ptrace.c | 45 ++++- gdb/doc/gdb.texinfo | 6 + gdb/gdbserver/linux-low.c | 274 +++++++++++++++++++++++++--- gdb/gdbserver/linux-low.h | 5 + gdb/gdbserver/remote-utils.c | 28 ++- gdb/remote.c | 27 ++- gdb/testsuite/gdb.threads/non-ldr-exc-1.exp | 15 +- gdb/testsuite/gdb.threads/non-ldr-exc-2.exp | 15 +- gdb/testsuite/gdb.threads/non-ldr-exc-3.exp | 15 +- gdb/testsuite/gdb.threads/non-ldr-exc-4.exp | 15 +- 10 files changed, 395 insertions(+), 50 deletions(-)