public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging
@ 2018-09-10 12:33 Xavier Roirand
  2018-09-10 12:52 ` Simon Marchi
  0 siblings, 1 reply; 4+ messages in thread
From: Xavier Roirand @ 2018-09-10 12:33 UTC (permalink / raw)
  To: gdb-patches; +Cc: brobecker, simon.marchi, tom, Xavier Roirand

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;
 
-- 
2.15.2 (Apple Git-101.1)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging
  2018-09-10 12:33 [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging Xavier Roirand
@ 2018-09-10 12:52 ` Simon Marchi
  2018-09-10 15:31   ` Xavier Roirand
  2018-09-11 13:40   ` Xavier Roirand
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Marchi @ 2018-09-10 12:52 UTC (permalink / raw)
  To: Xavier Roirand; +Cc: gdb-patches, brobecker, tom

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging
  2018-09-10 12:52 ` Simon Marchi
@ 2018-09-10 15:31   ` Xavier Roirand
  2018-09-11 13:40   ` Xavier Roirand
  1 sibling, 0 replies; 4+ messages in thread
From: Xavier Roirand @ 2018-09-10 15:31 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches, brobecker, tom



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging
  2018-09-10 12:52 ` Simon Marchi
  2018-09-10 15:31   ` Xavier Roirand
@ 2018-09-11 13:40   ` Xavier Roirand
  1 sibling, 0 replies; 4+ messages in thread
From: Xavier Roirand @ 2018-09-11 13:40 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches, brobecker, tom

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-09-11 13:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-10 12:33 [RFA 5/5 v3] Darwin: fix SIGTRAP when debugging Xavier Roirand
2018-09-10 12:52 ` Simon Marchi
2018-09-10 15:31   ` Xavier Roirand
2018-09-11 13:40   ` Xavier Roirand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).