diff options
author | Yao Qi <yao@codesourcery.com> | 2013-06-26 08:01:57 +0000 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2013-06-26 08:01:57 +0000 |
commit | 28a93511837e1a3c26732fef8687fe5fe48735ec (patch) | |
tree | 19df91fd3c7a84d28728450c1fe8a4c54c1d6dca | |
parent | 18870af79b2034040e6009fc2719759ca6ec75e9 (diff) | |
download | gdb-28a93511837e1a3c26732fef8687fe5fe48735ec.zip gdb-28a93511837e1a3c26732fef8687fe5fe48735ec.tar.gz gdb-28a93511837e1a3c26732fef8687fe5fe48735ec.tar.bz2 |
gdb/
2013-06-26 Pedro Alves <pedro@codesourcery.com>
Yao Qi <yao@codesourcery.com>
* ctf.c (ctf_traceframe_info): Push trace state variables
present in the trace data into the traceframe info object.
* breakpoint.c (DEF_VEC_I): Remove.
* common/filestuff.c (DEF_VEC_I): Likewise.
* dwarf2loc.c (DEF_VEC_I): Likewise.
* mi/mi-main.c (DEF_VEC_I): Likewise.
* common/gdb_vecs.h (DEF_VEC_I): Define vector for int.
* features/traceframe-info.dtd: Add tvar element and its
attributes.
* tracepoint.c (free_traceframe_info): Free vector 'tvars'.
(build_traceframe_info): Push trace state variables present in the
trace data into the traceframe info object.
(traceframe_info_start_tvar): New function.
(tvar_attributes): New.
(traceframe_info_children): Add "tvar" element.
* tracepoint.h (struct traceframe_info) <tvars>: New field.
* NEWS: Mention the change in GDB and GDBserver.
gdb/doc:
2013-06-26 Pedro Alves <pedro@codesourcery.com>
* gdb.texinfo (Traceframe Info Format): Document tvar element and
its attributes.
gdb/gdbserver:
2013-06-26 Pedro Alves <pedro@codesourcery.com>
* tracepoint.c (build_traceframe_info_xml): Output trace state
variables present in the trace buffer.
-rw-r--r-- | gdb/ChangeLog | 22 | ||||
-rw-r--r-- | gdb/NEWS | 7 | ||||
-rw-r--r-- | gdb/breakpoint.c | 2 | ||||
-rw-r--r-- | gdb/common/filestuff.c | 2 | ||||
-rw-r--r-- | gdb/common/gdb_vecs.h | 2 | ||||
-rw-r--r-- | gdb/ctf.c | 12 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 12 | ||||
-rw-r--r-- | gdb/dwarf2loc.c | 2 | ||||
-rw-r--r-- | gdb/features/traceframe-info.dtd | 5 | ||||
-rw-r--r-- | gdb/gdbserver/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/gdbserver/tracepoint.c | 7 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 2 | ||||
-rw-r--r-- | gdb/tracepoint.c | 30 | ||||
-rw-r--r-- | gdb/tracepoint.h | 3 |
15 files changed, 108 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1397e73..0b0ff73 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,6 +1,28 @@ 2013-06-26 Pedro Alves <pedro@codesourcery.com> Yao Qi <yao@codesourcery.com> + * ctf.c (ctf_traceframe_info): Push trace state variables + present in the trace data into the traceframe info object. + * breakpoint.c (DEF_VEC_I): Remove. + * common/filestuff.c (DEF_VEC_I): Likewise. + * dwarf2loc.c (DEF_VEC_I): Likewise. + * mi/mi-main.c (DEF_VEC_I): Likewise. + * common/gdb_vecs.h (DEF_VEC_I): Define vector for int. + * features/traceframe-info.dtd: Add tvar element and its + attributes. + * tracepoint.c (free_traceframe_info): Free vector 'tvars'. + (build_traceframe_info): Push trace state variables present in + the trace data into the traceframe info object. + (traceframe_info_start_tvar): New function. + (tvar_attributes): New. + (traceframe_info_children): Add "tvar" element. + * tracepoint.h (struct traceframe_info) <tvars>: New field. + + * NEWS: Mention the change in GDB and GDBserver. + +2013-06-26 Pedro Alves <pedro@codesourcery.com> + Yao Qi <yao@codesourcery.com> + * tracepoint.c (trace_dump_command): Move code to ... (get_traceframe_location): ... here. New. @@ -92,6 +92,9 @@ show range-stepping the number of control packets from/to GDB. See "New remote packets" below. +* GDB now understands the element 'tvar' in the XML traceframe info. + It has the id of the collected trace state variables. + * New remote packets vCont;r @@ -113,6 +116,10 @@ qXfer:libraries-svr4:read's annex ** GDBserver now supports target-assisted range stepping. Currently enabled on x86/x86_64 GNU/Linux targets. + ** GDBserver now adds element 'tvar' in the XML in the reply to + 'qXfer:traceframe-info:read'. It has the id of the collected + trace state variables. + *** Changes in GDB 7.6 * Target record has been renamed to record-full. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index ccd05d9..af6a42a 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5799,8 +5799,6 @@ bptype_string (enum bptype type) return bptypes[(int) type].description; } -DEF_VEC_I(int); - /* For MI, output a field named 'thread-groups' with a list as the value. For CLI, prefix the list with the string 'inf'. */ diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c index daf96d9..7d1a69a 100644 --- a/gdb/common/filestuff.c +++ b/gdb/common/filestuff.c @@ -157,8 +157,6 @@ fdwalk (int (*func) (void *, int), void *arg) don't use a hashtab because libiberty isn't linked into gdbserver; and anyway we don't expect there to be many open fds. */ -DEF_VEC_I (int); - static VEC (int) *open_fds; /* An fdwalk callback function used by notice_open_fds. It puts the diff --git a/gdb/common/gdb_vecs.h b/gdb/common/gdb_vecs.h index 1b05b0c..7df3001 100644 --- a/gdb/common/gdb_vecs.h +++ b/gdb/common/gdb_vecs.h @@ -29,6 +29,8 @@ DEF_VEC_P (char_ptr); DEF_VEC_P (const_char_ptr); +DEF_VEC_I (int); + extern void free_char_ptr_vec (VEC (char_ptr) *char_ptr_vec); extern struct cleanup * @@ -1778,6 +1778,18 @@ ctf_traceframe_info (void) def = bt_ctf_get_field (event, scope, "length"); r->length = (uint16_t) bt_ctf_get_uint64 (def); } + else if (strcmp (name, "tsv") == 0) + { + int vnum; + const struct bt_definition *scope + = bt_ctf_get_top_level_scope (event, + BT_EVENT_FIELDS); + const struct bt_definition *def; + + def = bt_ctf_get_field (event, scope, "num"); + vnum = (int) bt_ctf_get_int64 (def); + VEC_safe_push (int, info->tvars, vnum); + } else { warning (_("Unhandled trace block type (%s) " diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 41ccea2..5090ae9 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,8 @@ +2013-06-26 Pedro Alves <pedro@codesourcery.com> + + * gdb.texinfo (Traceframe Info Format): Document tvar element + and its attributes. + 2013-06-25 Yao Qi <yao@codesourcery.com> * gdbint.texinfo (Testsuite): Document 'gdb,predefined_tsv'. diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index d25cdae..3992704 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -41789,17 +41789,27 @@ A region of collected memory starting at @var{addr} and extending for <memory start="@var{addr}" length="@var{length}"/> @end smallexample +@item +A block indicating trace state variable numbered @var{number} has been +collected: + +@smallexample +<tvar id="@var{number}"/> +@end smallexample + @end itemize The formal DTD for the traceframe info format is given below: @smallexample -<!ELEMENT traceframe-info (memory)* > +<!ELEMENT traceframe-info (memory | tvar)* > <!ATTLIST traceframe-info version CDATA #FIXED "1.0"> <!ELEMENT memory EMPTY> <!ATTLIST memory start CDATA #REQUIRED length CDATA #REQUIRED> +<!ELEMENT tvar> +<!ATTLIST tvar id CDATA #REQUIRED> @end smallexample @node Branch Trace Format diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index bb600d1..02afcdf 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -42,8 +42,6 @@ #include "gdb_string.h" #include "gdb_assert.h" -DEF_VEC_I(int); - extern int dwarf2_always_disassemble; static void dwarf_expr_frame_base_1 (struct symbol *framefunc, CORE_ADDR pc, diff --git a/gdb/features/traceframe-info.dtd b/gdb/features/traceframe-info.dtd index 0da2bec..b811122 100644 --- a/gdb/features/traceframe-info.dtd +++ b/gdb/features/traceframe-info.dtd @@ -5,9 +5,12 @@ notice and this notice are preserved. --> <!-- traceframe-info: Root element with versioning --> -<!ELEMENT traceframe-info (memory)* > +<!ELEMENT traceframe-info (memory | tvar)* > <!ATTLIST traceframe-info version CDATA #FIXED "1.0"> <!ELEMENT memory EMPTY> <!ATTLIST memory start CDATA #REQUIRED length CDATA #REQUIRED> + +<!ELEMENT tvar EMPTY> +<!ATTLIST tvar id CDATA #REQUIRED> diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 31e71c4..ec79b1a 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2013-06-26 Pedro Alves <pedro@codesourcery.com> + + * tracepoint.c (build_traceframe_info_xml): Output trace state + variables present in the trace buffer. + 2013-06-24 Tom Tromey <tromey@redhat.com> * Makefile.in (version.c): Use bfd/version.h, common/version.in, diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c index d237e7f..6492b5a 100644 --- a/gdb/gdbserver/tracepoint.c +++ b/gdb/gdbserver/tracepoint.c @@ -5401,6 +5401,13 @@ build_traceframe_info_xml (char blocktype, unsigned char *dataptr, void *data) break; } case 'V': + { + int vnum; + + memcpy (&vnum, dataptr, sizeof (vnum)); + buffer_xml_printf (buffer, "<tvar id=\"%d\"/>\n", vnum); + break; + } case 'R': case 'S': { diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 127f6ff..430d530 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -513,8 +513,6 @@ mi_cmd_thread_info (char *command, char **argv, int argc) print_thread_info (current_uiout, argv[0], -1); } -DEF_VEC_I(int); - struct collect_cores_data { int pid; diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index 61e9efa..62b1a2c 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -235,6 +235,7 @@ free_traceframe_info (struct traceframe_info *info) if (info != NULL) { VEC_free (mem_range_s, info->memory); + VEC_free (int, info->tvars); xfree (info); } @@ -5224,6 +5225,12 @@ build_traceframe_info (char blocktype, void *data) break; } case 'V': + { + int vnum; + + tfile_read ((gdb_byte *) &vnum, 4); + VEC_safe_push (int, info->tvars, vnum); + } case 'R': case 'S': { @@ -5581,6 +5588,21 @@ traceframe_info_start_memory (struct gdb_xml_parser *parser, r->length = *length_p; } +/* Handle the start of a <tvar> element. */ + +static void +traceframe_info_start_tvar (struct gdb_xml_parser *parser, + const struct gdb_xml_element *element, + void *user_data, + VEC(gdb_xml_value_s) *attributes) +{ + struct traceframe_info *info = user_data; + const char *id_attrib = xml_find_attribute (attributes, "id")->value; + int id = gdb_xml_parse_ulongest (parser, id_attrib); + + VEC_safe_push (int, info->tvars, id); +} + /* Discard the constructed trace frame info (if an error occurs). */ static void @@ -5599,10 +5621,18 @@ static const struct gdb_xml_attribute memory_attributes[] = { { NULL, GDB_XML_AF_NONE, NULL, NULL } }; +static const struct gdb_xml_attribute tvar_attributes[] = { + { "id", GDB_XML_AF_NONE, NULL, NULL }, + { NULL, GDB_XML_AF_NONE, NULL, NULL } +}; + static const struct gdb_xml_element traceframe_info_children[] = { { "memory", memory_attributes, NULL, GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, traceframe_info_start_memory, NULL }, + { "tvar", tvar_attributes, NULL, + GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, + traceframe_info_start_tvar, NULL }, { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL } }; diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h index 3b09ca8..350ab5e 100644 --- a/gdb/tracepoint.h +++ b/gdb/tracepoint.h @@ -30,6 +30,9 @@ struct traceframe_info { /* Collected memory. */ VEC(mem_range_s) *memory; + + /* Collected trace state variables. */ + VEC(int) *tvars; }; /* A trace state variable is a value managed by a target being |