[RFA,5/5,v2] Darwin: fix SIGTRAP when debugging

Message ID 1536499653-10033-1-git-send-email-roirand@adacore.com
State New, archived
Headers

Commit Message

Xavier Roirand Sept. 9, 2018, 1:27 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, initialize)
single_step value in the same structure at the same time.

gdb/ChangeLog:

        * darwin-nat.h (struct darwin_thread_info) <signaled>: Change
        type and initialize.
        (struct darwin_thread_info) <single_step>: Change type and
        initialize.

Change-Id: I0fe2a6985df9d0dfcc8a2a258a3ef70cfa19b403
---
 gdb/darwin-nat.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Tom Tromey Sept. 9, 2018, 6:20 p.m. UTC | #1
>>>>> "Xavier" == Xavier Roirand <roirand@adacore.com> writes:

Xavier> +  bool single_step = 0;
 
Xavier> +  bool signaled = 0;
 
I would use = false here.

Tom
  

Patch

diff --git a/gdb/darwin-nat.h b/gdb/darwin-nat.h
index 5965df08ab6..4232b5e0365 100644
--- a/gdb/darwin-nat.h
+++ b/gdb/darwin-nat.h
@@ -126,10 +126,10 @@  struct darwin_thread_info : public private_thread_info
   enum darwin_msg_state msg_state;
 
   /* True if this thread is single-stepped.  */
-  unsigned char single_step;
+  bool single_step = 0;
 
   /* True if a signal was manually sent to the thread.  */
-  unsigned char signaled;
+  bool signaled = 0;
 
   /* The last exception received.  */
   struct darwin_exception_msg event;