From b2a33439909493f5bf93ada871bd588f365d61f4 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Tue, 18 Aug 2015 11:04:30 +0100 Subject: [PATCH] x86/Linux: disable all-stop on top of non-stop Markus reported that ASNS breaks target record-btrace. In particular, the gdb.btrace/multi-thread-step.exp test fails (both with BTS and PT tracing) with a crash in py-inferior.c: Program received signal SIGSEGV, Segmentation fault. 0x00000000006aa40d in add_thread_object (tp=0x27d32d0) at /users/mmetzger/team/gdb/git/gdb/python/py-inferior.c:337 337 entry->next = inf_obj->threads; My machine doesn't support BTS nor PT, so I missed this... Disabling ASNS temporarily on x86 until this is addressed. Tested on x86_64 Fedora 20. gdb/ChangeLog: 2015-08-18 Pedro Alves * linux-nat.c (linux_nat_always_non_stop_p): If the linux_ops target implements to_always_non_stop_p, call it. * x86-linux-nat.c (x86_linux_always_non_stop_p): New function. (x86_linux_create_target): Install it as to_always_non_stop_p method. --- gdb/ChangeLog | 8 ++++++++ gdb/linux-nat.c | 2 ++ gdb/x86-linux-nat.c | 11 +++++++++++ 3 files changed, 21 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index be2ed4711b..38872b1bf8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2015-08-18 Pedro Alves + + * linux-nat.c (linux_nat_always_non_stop_p): If the linux_ops + target implements to_always_non_stop_p, call it. + * x86-linux-nat.c (x86_linux_always_non_stop_p): New function. + (x86_linux_create_target): Install it as to_always_non_stop_p + method. + 2015-08-17 Doug Evans * ui-out.c (default_ui_out_impl): Add comment. diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index be7a9150d3..a13fb9edad 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -4594,6 +4594,8 @@ linux_nat_supports_non_stop (struct target_ops *self) static int linux_nat_always_non_stop_p (struct target_ops *self) { + if (linux_ops->to_always_non_stop_p != NULL) + return linux_ops->to_always_non_stop_p (linux_ops); return 1; } diff --git a/gdb/x86-linux-nat.c b/gdb/x86-linux-nat.c index 34a9257ba3..fe52c1f2ec 100644 --- a/gdb/x86-linux-nat.c +++ b/gdb/x86-linux-nat.c @@ -357,6 +357,15 @@ x86_linux_get_thread_area (pid_t pid, void *addr, unsigned int *base_addr) } +/* to_always_non_stop_p implementation. */ + +static int +x86_linux_always_non_stop_p (struct target_ops *self) +{ + /* Enabling this breaks the btrace target. */ + return 0; +} + /* Create an x86 GNU/Linux target. */ struct target_ops * @@ -389,6 +398,8 @@ x86_linux_create_target (void) t->to_read_btrace = x86_linux_read_btrace; t->to_btrace_conf = x86_linux_btrace_conf; + t->to_always_non_stop_p = x86_linux_always_non_stop_p; + return t; }