aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog11
-rw-r--r--gdb/breakpoint.c14
-rw-r--r--gdb/probe.h4
-rw-r--r--gdb/tracepoint.c6
4 files changed, 25 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ec05028..57ddd7b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,16 @@
2014-10-14 Sergio Durigan Junior <sergiodj@redhat.com>
+ * breakpoint.c (bkpt_probe_insert_location): Call set_semaphore
+ only if it is not NULL.
+ (bkpt_probe_remove_location): Likewise, for clear_semaphore.
+ * probe.h (struct probe_ops) <set_semaphore>: Update comment.
+ (struct probe_ops) <clear_semaphore>: Likewise.
+ * tracepoint.c (start_tracing): Call set_semaphore only if it is
+ not NULL.
+ (stop_tracing): Likewise, for clear_semaphore.
+
+2014-10-14 Sergio Durigan Junior <sergiodj@redhat.com>
+
* stap-probe.c (stap_parse_argument): Initialize expout explicitly
using language_c, instead of current_language.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index a144a7e..dc2e297 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -13696,9 +13696,10 @@ bkpt_probe_insert_location (struct bp_location *bl)
{
/* The insertion was successful, now let's set the probe's semaphore
if needed. */
- bl->probe.probe->pops->set_semaphore (bl->probe.probe,
- bl->probe.objfile,
- bl->gdbarch);
+ if (bl->probe.probe->pops->set_semaphore != NULL)
+ bl->probe.probe->pops->set_semaphore (bl->probe.probe,
+ bl->probe.objfile,
+ bl->gdbarch);
}
return v;
@@ -13708,9 +13709,10 @@ static int
bkpt_probe_remove_location (struct bp_location *bl)
{
/* Let's clear the semaphore before removing the location. */
- bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
- bl->probe.objfile,
- bl->gdbarch);
+ if (bl->probe.probe->pops->clear_semaphore != NULL)
+ bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
+ bl->probe.objfile,
+ bl->gdbarch);
return bkpt_remove_location (bl);
}
diff --git a/gdb/probe.h b/gdb/probe.h
index b4ff0a6..a128151 100644
--- a/gdb/probe.h
+++ b/gdb/probe.h
@@ -96,14 +96,14 @@ struct probe_ops
/* Set the semaphore associated with the PROBE. This function only makes
sense if the probe has a concept of semaphore associated to a
- probe. */
+ probe, otherwise it can be set to NULL. */
void (*set_semaphore) (struct probe *probe, struct objfile *objfile,
struct gdbarch *gdbarch);
/* Clear the semaphore associated with the PROBE. This function only
makes sense if the probe has a concept of semaphore associated to
- a probe. */
+ a probe, otherwise it can be set to NULL. */
void (*clear_semaphore) (struct probe *probe, struct objfile *objfile,
struct gdbarch *gdbarch);
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 51af2af..fc20063 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -1858,7 +1858,8 @@ start_tracing (char *notes)
t->number_on_target = b->number;
for (loc = b->loc; loc; loc = loc->next)
- if (loc->probe.probe != NULL)
+ if (loc->probe.probe != NULL
+ && loc->probe.probe->pops->set_semaphore != NULL)
loc->probe.probe->pops->set_semaphore (loc->probe.probe,
loc->probe.objfile,
loc->gdbarch);
@@ -1957,7 +1958,8 @@ stop_tracing (char *note)
but we don't really care if this semaphore goes out of sync.
That's why we are decrementing it here, but not taking care
in other places. */
- if (loc->probe.probe != NULL)
+ if (loc->probe.probe != NULL
+ && loc->probe.probe->pops->clear_semaphore != NULL)
loc->probe.probe->pops->clear_semaphore (loc->probe.probe,
loc->probe.objfile,
loc->gdbarch);