* Re: [PATCH v3 4/8] Add record_start function.
@ 2016-11-30 23:50 Doug Evans
0 siblings, 0 replies; 3+ messages in thread
From: Doug Evans @ 2016-11-30 23:50 UTC (permalink / raw)
To: Tim Wiederhake; +Cc: gdb-patches, palves, markus.t.metzger
Tim Wiederhake writes:
> 2016-11-21 Tim Wiederhake <tim.wiederhake@intel.com>
>
> gdb/ChangeLog
>
> * record.h (record_start): New export.
> * record.c (record_start): New function.
>
>
> ---
> gdb/record.c | 28 ++++++++++++++++++++++++++++
> gdb/record.h | 5 +++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/gdb/record.c b/gdb/record.c
> index 34ebd1b..6df8ba1 100644
> --- a/gdb/record.c
> +++ b/gdb/record.c
> @@ -93,6 +93,34 @@ record_preopen (void)
>
> /* See record.h. */
>
> +void
> +record_start (const char *method, const char *format, int from_tty)
> +{
> + if (method == NULL)
> + {
> + if (format == NULL)
> + return execute_command ("record", from_tty);
> + }
> + else if (strcmp (method, "full") == 0)
> + {
> + if (format == NULL)
> + return execute_command ("record full", from_tty);
> + }
> + else if (strcmp (method, "btrace") == 0)
> + {
> + if (format == NULL)
> + return execute_command ("record btrace", from_tty);
> + if (strcmp (format, "bts") == 0)
> + return execute_command ("record btrace bts", from_tty);
> + if (strcmp (format, "pt") == 0)
> + return execute_command ("record btrace pt", from_tty);
> + }
> +
> + error (_("Invalid argument."));
> +}
> +
> +/* See record.h. */
> +
I'm guessing this is essentially implementing a library API on top of GDB's
CLI.
Yikes. Maybe things will be clearer as I read the rest of the patches.
I'd mention in the function comment that this can throw gdb errors.
> int
> record_read_memory (struct gdbarch *gdbarch,
> CORE_ADDR memaddr, gdb_byte *myaddr,
> diff --git a/gdb/record.h b/gdb/record.h
> index 84440c64..eb091ce 100644
> --- a/gdb/record.h
> +++ b/gdb/record.h
> @@ -91,4 +91,9 @@ extern struct target_ops *find_record_target (void);
> it does anything. */
> extern void record_preopen (void);
>
> +/* Internal function that starts recording with the given METHOD and
FORMAT.
> + NULL means default method or format. */
> +extern void record_start (const char *method, const char *format,
> + int from_tty);
> +
> #endif /* _RECORD_H_ */
> --
> 2.7.4
>
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v3 0/8] Python bindings for btrace recordings
@ 2016-11-21 15:49 Tim Wiederhake
2016-11-21 15:49 ` [PATCH v3 4/8] Add record_start function Tim Wiederhake
0 siblings, 1 reply; 3+ messages in thread
From: Tim Wiederhake @ 2016-11-21 15:49 UTC (permalink / raw)
To: gdb-patches; +Cc: palves, markus.t.metzger
This patch series adds Python bindings for btrace recordings.
V1 of this series can be found here:
https://sourceware.org/ml/gdb-patches/2016-10/msg00733.html
V2 of this series can be found here:
https://sourceware.org/ml/gdb-patches/2016-11/msg00084.html
Changes in V3:
- Rebased to current master.
- Replaced some strncmp with strcmp in patch 4 ("Add record_start function").
- Incorporated Eli's feedback regarding the documentation part.
Tim Wiederhake (8):
btrace: Count gaps as one instruction explicitly.
btrace: Export btrace_decode_error function.
btrace: Use binary search to find instruction.
Add record_start function.
python: Create Python bindings for record history.
python: Implement btrace Python bindings for record history.
python: Add tests for record Python bindings
Add documentation for new instruction record Python bindings.
gdb/Makefile.in | 4 +
gdb/NEWS | 4 +
gdb/btrace.c | 163 +++--
gdb/btrace.h | 21 +-
gdb/doc/python.texi | 237 ++++++
gdb/python/py-btrace.c | 994 ++++++++++++++++++++++++++
gdb/python/py-btrace.h | 32 +
gdb/python/py-record.c | 257 +++++++
gdb/python/py-record.h | 57 ++
gdb/python/python-internal.h | 7 +
gdb/python/python.c | 14 +
gdb/record-btrace.c | 131 ++--
gdb/record-full.c | 20 +
gdb/record.c | 28 +
gdb/record.h | 5 +
gdb/target-debug.h | 2 +
gdb/target-delegates.c | 33 +
gdb/target.c | 7 +
gdb/target.h | 10 +
gdb/testsuite/gdb.python/py-record-btrace.c | 48 ++
gdb/testsuite/gdb.python/py-record-btrace.exp | 160 +++++
21 files changed, 2096 insertions(+), 138 deletions(-)
create mode 100644 gdb/python/py-btrace.c
create mode 100644 gdb/python/py-btrace.h
create mode 100644 gdb/python/py-record.c
create mode 100644 gdb/python/py-record.h
create mode 100644 gdb/testsuite/gdb.python/py-record-btrace.c
create mode 100644 gdb/testsuite/gdb.python/py-record-btrace.exp
--
2.7.4
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v3 4/8] Add record_start function.
2016-11-21 15:49 [PATCH v3 0/8] Python bindings for btrace recordings Tim Wiederhake
@ 2016-11-21 15:49 ` Tim Wiederhake
2016-11-29 15:47 ` Metzger, Markus T
0 siblings, 1 reply; 3+ messages in thread
From: Tim Wiederhake @ 2016-11-21 15:49 UTC (permalink / raw)
To: gdb-patches; +Cc: palves, markus.t.metzger
2016-11-21 Tim Wiederhake <tim.wiederhake@intel.com>
gdb/ChangeLog
* record.h (record_start): New export.
* record.c (record_start): New function.
---
gdb/record.c | 28 ++++++++++++++++++++++++++++
gdb/record.h | 5 +++++
2 files changed, 33 insertions(+)
diff --git a/gdb/record.c b/gdb/record.c
index 34ebd1b..6df8ba1 100644
--- a/gdb/record.c
+++ b/gdb/record.c
@@ -93,6 +93,34 @@ record_preopen (void)
/* See record.h. */
+void
+record_start (const char *method, const char *format, int from_tty)
+{
+ if (method == NULL)
+ {
+ if (format == NULL)
+ return execute_command ("record", from_tty);
+ }
+ else if (strcmp (method, "full") == 0)
+ {
+ if (format == NULL)
+ return execute_command ("record full", from_tty);
+ }
+ else if (strcmp (method, "btrace") == 0)
+ {
+ if (format == NULL)
+ return execute_command ("record btrace", from_tty);
+ if (strcmp (format, "bts") == 0)
+ return execute_command ("record btrace bts", from_tty);
+ if (strcmp (format, "pt") == 0)
+ return execute_command ("record btrace pt", from_tty);
+ }
+
+ error (_("Invalid argument."));
+}
+
+/* See record.h. */
+
int
record_read_memory (struct gdbarch *gdbarch,
CORE_ADDR memaddr, gdb_byte *myaddr,
diff --git a/gdb/record.h b/gdb/record.h
index 84440c64..eb091ce 100644
--- a/gdb/record.h
+++ b/gdb/record.h
@@ -91,4 +91,9 @@ extern struct target_ops *find_record_target (void);
it does anything. */
extern void record_preopen (void);
+/* Internal function that starts recording with the given METHOD and FORMAT.
+ NULL means default method or format. */
+extern void record_start (const char *method, const char *format,
+ int from_tty);
+
#endif /* _RECORD_H_ */
--
2.7.4
^ permalink raw reply [flat|nested] 3+ messages in thread* RE: [PATCH v3 4/8] Add record_start function.
2016-11-21 15:49 ` [PATCH v3 4/8] Add record_start function Tim Wiederhake
@ 2016-11-29 15:47 ` Metzger, Markus T
0 siblings, 0 replies; 3+ messages in thread
From: Metzger, Markus T @ 2016-11-29 15:47 UTC (permalink / raw)
To: Wiederhake, Tim, gdb-patches; +Cc: palves
> -----Original Message-----
> From: Wiederhake, Tim
> Sent: Monday, November 21, 2016 4:49 PM
> To: gdb-patches@sourceware.org
> Cc: palves@redhat.com; Metzger, Markus T <markus.t.metzger@intel.com>
> Subject: [PATCH v3 4/8] Add record_start function.
>
> 2016-11-21 Tim Wiederhake <tim.wiederhake@intel.com>
>
> gdb/ChangeLog
>
> * record.h (record_start): New export.
> * record.c (record_start): New function.
> +void
> +record_start (const char *method, const char *format, int from_tty)
> +{
> + if (method == NULL)
> + {
> + if (format == NULL)
> + return execute_command ("record", from_tty);
> + }
> + else if (strcmp (method, "full") == 0)
> + {
> + if (format == NULL)
> + return execute_command ("record full", from_tty);
> + }
> + else if (strcmp (method, "btrace") == 0)
> + {
> + if (format == NULL)
> + return execute_command ("record btrace", from_tty);
> + if (strcmp (format, "bts") == 0)
> + return execute_command ("record btrace bts", from_tty);
> + if (strcmp (format, "pt") == 0)
> + return execute_command ("record btrace pt", from_tty);
> + }
> +
> + error (_("Invalid argument."));
Should we split this into "Invalid recording method" and "Invalid
recording format"?
> +/* Internal function that starts recording with the given METHOD and FORMAT.
> + NULL means default method or format. */
What does 'internal' mean in this context?
> +extern void record_start (const char *method, const char *format,
> + int from_tty);
> +
> #endif /* _RECORD_H_ */
> --
> 2.7.4
thanks,
Markus.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-11-30 23:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-30 23:50 [PATCH v3 4/8] Add record_start function Doug Evans
-- strict thread matches above, loose matches on Subject: below --
2016-11-21 15:49 [PATCH v3 0/8] Python bindings for btrace recordings Tim Wiederhake
2016-11-21 15:49 ` [PATCH v3 4/8] Add record_start function Tim Wiederhake
2016-11-29 15:47 ` Metzger, Markus T
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox