Message ID | 1536582779-12182-1-git-send-email-roirand@adacore.com |
---|---|
State | New, archived |
Headers |
Received: (qmail 36085 invoked by alias); 10 Sep 2018 12:33:09 -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 35944 invoked by uid 89); 10 Sep 2018 12:33:08 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_NEUTRAL autolearn=ham version=3.3.2 spammy=H*RU:sk:static-, Hx-spam-relays-external:sk:static-, H*r:sk:static-, terminated X-HELO: mail-wm0-f68.google.com Received: from mail-wm0-f68.google.com (HELO mail-wm0-f68.google.com) (74.125.82.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 10 Sep 2018 12:33:06 +0000 Received: by mail-wm0-f68.google.com with SMTP id f21-v6so21367499wmc.5 for <gdb-patches@sourceware.org>; Mon, 10 Sep 2018 05:33:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=Euhg6F5JzJSESmBz4e4IFPZgCTB7Zf1+d15RBNWqe6U=; b=NyY0d3EIop3dyRlkt6bVl0N4RDjRVieGIushTDrXWo40FxBwZU9WKB5uC0qmvatzrW AEqLvSW4pOMHzzRaF/WckHRWB3k7VRHDv+F1eEpdkZeC/IGtCHMxSdPAbUljRyOzlCOp nkfSp4fOtMvjCsUqgjHO68nERYRvw3LJPljnHV1YlLe3CHsRXCoW9siF1bpHsxQmkYSx Cntie/+qfiM997Q14Z/z7UVG8BktIAB/Ja8/OG1SIIIdGwsejC1XgHII1DHw4OWbKJ7i RaM80UMMdzPAyyZK0QQq2RgnqrZjEr62wSisFTxwrtR89Xn9M8P5Ci7CxBu5eBPEG4VJ fGSA== Return-Path: <roirand@adacore.com> Received: from adacore.com (static-css-csd-010062.business.bouyguestelecom.com. [176.162.10.62]) by smtp.gmail.com with ESMTPSA id s131-v6sm18244450wmf.2.2018.09.10.05.33.01 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 10 Sep 2018 05:33:03 -0700 (PDT) Received: by adacore.com (sSMTP sendmail emulation); Mon, 10 Sep 2018 14:33:01 +0200 From: Xavier Roirand <roirand@adacore.com> To: gdb-patches@sourceware.org Cc: brobecker@adacore.com, simon.marchi@polymtl.ca, tom@tromey.com, Xavier Roirand <roirand@adacore.com> Subject: [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging Date: Mon, 10 Sep 2018 14:32:59 +0200 Message-Id: <1536582779-12182-1-git-send-email-roirand@adacore.com> X-IsSubscribed: yes |
Commit Message
Xavier Roirand
Sept. 10, 2018, 12:32 p.m. UTC
Debugging a program under Darwin does not work: (gdb) start Temporary breakpoint 1 at 0x100000fb4: file /tmp/helloworld.c, line 1. Starting program: /private/tmp/helloworld [New Thread 0x2903 of process 60326] During startup program terminated with signal SIGTRAP, Trace/breakpoint trap. Field signaled from darwin_thread_info is not initialized thus signal sent to the debuggee is considered as not sent by GDB whereas it should. This patch fixes this problem and also updates (change type and/or initialize) other fields in the same structure at the same time. gdb/ChangeLog: * darwin-nat.h (struct darwin_thread_info) <gdb_port, inf_port, msg_state>: Initialize. (struct darwin_thread_info) <signaled, single_step>: Change type and initialize. (struct darwin_thread_info) <event>: Initialize. Change-Id: I0fe2a6985df9d0dfcc8a2a258a3ef70cfa19b403 --- gdb/darwin-nat.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
Comments
On 2018-09-10 13:32, Xavier Roirand wrote: > Debugging a program under Darwin does not work: > > (gdb) start > Temporary breakpoint 1 at 0x100000fb4: file /tmp/helloworld.c, line 1. > Starting program: /private/tmp/helloworld > [New Thread 0x2903 of process 60326] > During startup program terminated with signal SIGTRAP, Trace/breakpoint > trap. > > Field signaled from darwin_thread_info is not initialized thus signal > sent to the debuggee is considered as not sent by GDB whereas it > should. > > This patch fixes this problem and also updates (change type and/or > initialize) other fields in the same structure at the same time. > > gdb/ChangeLog: > > * darwin-nat.h (struct darwin_thread_info) <gdb_port, > inf_port, msg_state>: Initialize. > (struct darwin_thread_info) <signaled, single_step>: Change > type and initialize. > (struct darwin_thread_info) <event>: Initialize. > > Change-Id: I0fe2a6985df9d0dfcc8a2a258a3ef70cfa19b403 > --- > gdb/darwin-nat.h | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/gdb/darwin-nat.h b/gdb/darwin-nat.h > index 5965df08ab6..89a7c06f6a1 100644 > --- a/gdb/darwin-nat.h > +++ b/gdb/darwin-nat.h > @@ -114,25 +114,25 @@ enum darwin_msg_state > struct darwin_thread_info : public private_thread_info > { > /* The thread port from a GDB point of view. */ > - thread_t gdb_port; > + thread_t gdb_port = 0; > > /* The thread port from the inferior point of view. Not to be used > inside > gdb except for get_ada_task_ptid. */ > - thread_t inf_port; > + thread_t inf_port = 0; > > /* Current message state. > If the kernel has sent a message it expects a reply and the > inferior > can't be killed before. */ > - enum darwin_msg_state msg_state; > + enum darwin_msg_state msg_state = DARWIN_RUNNING; > > /* True if this thread is single-stepped. */ > - unsigned char single_step; > + bool single_step = false; > > /* True if a signal was manually sent to the thread. */ > - unsigned char signaled; > + bool signaled = false; > > /* The last exception received. */ > - struct darwin_exception_msg event; > + struct darwin_exception_msg event {}; > }; > typedef struct darwin_thread_info darwin_thread_t; LGTM. You do have push access I believe, is that right? Simon
Le 9/10/18 à 2:52 PM, Simon Marchi a écrit : > On 2018-09-10 13:32, Xavier Roirand wrote: >> Debugging a program under Darwin does not work: >> >> (gdb) start >> Temporary breakpoint 1 at 0x100000fb4: file /tmp/helloworld.c, line 1. >> Starting program: /private/tmp/helloworld >> [New Thread 0x2903 of process 60326] >> During startup program terminated with signal SIGTRAP, Trace/breakpoint >> trap. >> >> Field signaled from darwin_thread_info is not initialized thus signal >> sent to the debuggee is considered as not sent by GDB whereas it should. >> >> This patch fixes this problem and also updates (change type and/or >> initialize) other fields in the same structure at the same time. >> >> gdb/ChangeLog: >> >> * darwin-nat.h (struct darwin_thread_info) <gdb_port, >> inf_port, msg_state>: Initialize. >> (struct darwin_thread_info) <signaled, single_step>: Change >> type and initialize. >> (struct darwin_thread_info) <event>: Initialize. >> >> Change-Id: I0fe2a6985df9d0dfcc8a2a258a3ef70cfa19b403 >> --- >> gdb/darwin-nat.h | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/gdb/darwin-nat.h b/gdb/darwin-nat.h >> index 5965df08ab6..89a7c06f6a1 100644 >> --- a/gdb/darwin-nat.h >> +++ b/gdb/darwin-nat.h >> @@ -114,25 +114,25 @@ enum darwin_msg_state >> struct darwin_thread_info : public private_thread_info >> { >> /* The thread port from a GDB point of view. */ >> - thread_t gdb_port; >> + thread_t gdb_port = 0; >> >> /* The thread port from the inferior point of view. Not to be used >> inside >> gdb except for get_ada_task_ptid. */ >> - thread_t inf_port; >> + thread_t inf_port = 0; >> >> /* Current message state. >> If the kernel has sent a message it expects a reply and the >> inferior >> can't be killed before. */ >> - enum darwin_msg_state msg_state; >> + enum darwin_msg_state msg_state = DARWIN_RUNNING; >> >> /* True if this thread is single-stepped. */ >> - unsigned char single_step; >> + bool single_step = false; >> >> /* True if a signal was manually sent to the thread. */ >> - unsigned char signaled; >> + bool signaled = false; >> >> /* The last exception received. */ >> - struct darwin_exception_msg event; >> + struct darwin_exception_msg event {}; >> }; >> typedef struct darwin_thread_info darwin_thread_t; > > LGTM. You do have push access I believe, is that right? Yes, I do. I'll push it. Thanks. > > Simon
Thanks. Pushed to master. https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=de1ec836c8cc4eeb68e3e4eb8223eeff9840546e Le 9/10/18 à 2:52 PM, Simon Marchi a écrit : > On 2018-09-10 13:32, Xavier Roirand wrote: >> Debugging a program under Darwin does not work: >> >> (gdb) start >> Temporary breakpoint 1 at 0x100000fb4: file /tmp/helloworld.c, line 1. >> Starting program: /private/tmp/helloworld >> [New Thread 0x2903 of process 60326] >> During startup program terminated with signal SIGTRAP, Trace/breakpoint >> trap. >> >> Field signaled from darwin_thread_info is not initialized thus signal >> sent to the debuggee is considered as not sent by GDB whereas it should. >> >> This patch fixes this problem and also updates (change type and/or >> initialize) other fields in the same structure at the same time. >> >> gdb/ChangeLog: >> >> * darwin-nat.h (struct darwin_thread_info) <gdb_port, >> inf_port, msg_state>: Initialize. >> (struct darwin_thread_info) <signaled, single_step>: Change >> type and initialize. >> (struct darwin_thread_info) <event>: Initialize. >> >> Change-Id: I0fe2a6985df9d0dfcc8a2a258a3ef70cfa19b403 >> --- >> gdb/darwin-nat.h | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/gdb/darwin-nat.h b/gdb/darwin-nat.h >> index 5965df08ab6..89a7c06f6a1 100644 >> --- a/gdb/darwin-nat.h >> +++ b/gdb/darwin-nat.h >> @@ -114,25 +114,25 @@ enum darwin_msg_state >> struct darwin_thread_info : public private_thread_info >> { >> /* The thread port from a GDB point of view. */ >> - thread_t gdb_port; >> + thread_t gdb_port = 0; >> >> /* The thread port from the inferior point of view. Not to be used >> inside >> gdb except for get_ada_task_ptid. */ >> - thread_t inf_port; >> + thread_t inf_port = 0; >> >> /* Current message state. >> If the kernel has sent a message it expects a reply and the >> inferior >> can't be killed before. */ >> - enum darwin_msg_state msg_state; >> + enum darwin_msg_state msg_state = DARWIN_RUNNING; >> >> /* True if this thread is single-stepped. */ >> - unsigned char single_step; >> + bool single_step = false; >> >> /* True if a signal was manually sent to the thread. */ >> - unsigned char signaled; >> + bool signaled = false; >> >> /* The last exception received. */ >> - struct darwin_exception_msg event; >> + struct darwin_exception_msg event {}; >> }; >> typedef struct darwin_thread_info darwin_thread_t; > > LGTM. You do have push access I believe, is that right? > > Simon
diff --git a/gdb/darwin-nat.h b/gdb/darwin-nat.h index 5965df08ab6..89a7c06f6a1 100644 --- a/gdb/darwin-nat.h +++ b/gdb/darwin-nat.h @@ -114,25 +114,25 @@ enum darwin_msg_state struct darwin_thread_info : public private_thread_info { /* The thread port from a GDB point of view. */ - thread_t gdb_port; + thread_t gdb_port = 0; /* The thread port from the inferior point of view. Not to be used inside gdb except for get_ada_task_ptid. */ - thread_t inf_port; + thread_t inf_port = 0; /* Current message state. If the kernel has sent a message it expects a reply and the inferior can't be killed before. */ - enum darwin_msg_state msg_state; + enum darwin_msg_state msg_state = DARWIN_RUNNING; /* True if this thread is single-stepped. */ - unsigned char single_step; + bool single_step = false; /* True if a signal was manually sent to the thread. */ - unsigned char signaled; + bool signaled = false; /* The last exception received. */ - struct darwin_exception_msg event; + struct darwin_exception_msg event {}; }; typedef struct darwin_thread_info darwin_thread_t;