gdb/
2013-04-10 Hui Zhu <hui@codesourcery.com> Yao Qi <yao@codesourcery.com> * configure.ac: Check libbabeltrace is installed. * config.in: Regenerate. * configure: Regenerate. * Makefile.in (LIBBABELTRACE): New. (CLIBS): Add LIBBABELTRACE. * ctf.c: Include "exec.h". (CTF_EVENT_ID_STATUS, CTF_EVENT_ID_TSV_DEF): New macros. (CTF_EVENT_ID_TP_DEF, ctf_save_write_int32): New macros. (ctf_save_metadata_header): Define new type aliases in metadata. (ctf_write_header): Define event type "tsv_def" and "tp_def" in metadata. Start a new faked packet for trace status. (ctf_write_status): Write trace status to CTF. (ctf_write_uploaded_tsv): Write TSV to CTF. (ctf_write_uploaded_tp): Write tracepoint definition to CTF. (ctf_write_definition_end): End the faked packet. (ctx, ctf_iter, trace_dirname): New. (start_pos): New variable. (ctf_destroy, ctf_open_dir, ctf_open): New. (SET_INT32_FIELD, SET_ARRAY_FIELD, SET_STRING_FIELD): New macros. (ctf_read_tsv, ctf_read_tp, ctf_close, ctf_files_info): New. (ctf_fetch_registers, ctf_xfer_partial): New. (ctf_get_trace_state_variable_value): New. (ctf_get_tpnum_from_frame_event): New. (ctf_get_traceframe_address): New. (ctf_trace_find, ctf_has_stack): New. (ctf_has_registers, ctf_traceframe_info, init_ctf_ops): New. (ctf_get_trace_status, ctf_read_status): New. (_initialize_ctf): New. * tracepoint.c (get_tracepoint_number): New (get_uploaded_tsv): Remove 'static'. (struct traceframe_info, trace_regblock_size): Move it to ... * tracepoint.h: ... here. (get_tracepoint_number): Declare it. (get_uploaded_tsv): Declare it. * NEWS: Mention new configure option. gdb/doc/ 2013-04-10 Yao Qi <yao@codesourcery.com> * gdb.texinfo (Trace Files): Add "target ctf". gdb/testsuite/ 2013-04-10 Yao Qi <yao@codesourcery.com> * gdb.trace/actions.exp: Save trace data to CTF. Change to ctf target if GDB supports, read CTF data in ctf target, and check the actions of tracepoints. * gdb.trace/while-stepping.exp: Likewise. * gdb.trace/report.exp: Test GDB saves trace data to CTF format and read CTF trace file if GDB supports. * gdb.trace/tstatus.exp: Save trace data to CTF. If ctf target is supported, change to ctf target, read trace data and check output of command "tstatus". * gdb.trace/tsv.exp: Save trace frame to CTF. If GDB supports, read CTF data by target ctf and call check_tsv.
This commit is contained in:
parent
b7a273f8c6
commit
393fd4c376
@ -1,3 +1,46 @@
|
||||
2013-04-10 Hui Zhu <hui@codesourcery.com>
|
||||
Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* configure.ac: Check libbabeltrace is installed.
|
||||
* config.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* Makefile.in (LIBBABELTRACE): New.
|
||||
(CLIBS): Add LIBBABELTRACE.
|
||||
* ctf.c: Include "exec.h".
|
||||
(CTF_EVENT_ID_STATUS, CTF_EVENT_ID_TSV_DEF): New macros.
|
||||
(CTF_EVENT_ID_TP_DEF, ctf_save_write_int32): New macros.
|
||||
(ctf_save_metadata_header): Define new type aliases in
|
||||
metadata.
|
||||
(ctf_write_header): Define event type "tsv_def" and "tp_def"
|
||||
in metadata. Start a new faked packet for trace status.
|
||||
(ctf_write_status): Write trace status to CTF.
|
||||
(ctf_write_uploaded_tsv): Write TSV to CTF.
|
||||
(ctf_write_uploaded_tp): Write tracepoint definition to CTF.
|
||||
(ctf_write_definition_end): End the faked packet.
|
||||
|
||||
(ctx, ctf_iter, trace_dirname): New.
|
||||
(start_pos): New variable.
|
||||
(ctf_destroy, ctf_open_dir, ctf_open): New.
|
||||
(SET_INT32_FIELD, SET_ARRAY_FIELD, SET_STRING_FIELD): New
|
||||
macros.
|
||||
(ctf_read_tsv, ctf_read_tp, ctf_close, ctf_files_info): New.
|
||||
(ctf_fetch_registers, ctf_xfer_partial): New.
|
||||
(ctf_get_trace_state_variable_value): New.
|
||||
(ctf_get_tpnum_from_frame_event): New.
|
||||
(ctf_get_traceframe_address): New.
|
||||
(ctf_trace_find, ctf_has_stack): New.
|
||||
(ctf_has_registers, ctf_traceframe_info, init_ctf_ops): New.
|
||||
(ctf_get_trace_status, ctf_read_status): New.
|
||||
(_initialize_ctf): New.
|
||||
* tracepoint.c (get_tracepoint_number): New
|
||||
(get_uploaded_tsv): Remove 'static'.
|
||||
(struct traceframe_info, trace_regblock_size): Move it to ...
|
||||
* tracepoint.h: ... here.
|
||||
(get_tracepoint_number): Declare it.
|
||||
(get_uploaded_tsv): Declare it.
|
||||
|
||||
* NEWS: Mention new configure option.
|
||||
|
||||
2013-04-10 Pedro Alves <palves@redhat.com>
|
||||
Hui Zhu <hui@codesourcery.com>
|
||||
|
||||
|
@ -154,6 +154,10 @@ LIBEXPAT = @LIBEXPAT@
|
||||
# Where is lzma? This will be empty if lzma was not available.
|
||||
LIBLZMA = @LIBLZMA@
|
||||
|
||||
# Where is libbabeltrace? This will be empty if lbabeltrace was not
|
||||
# available.
|
||||
LIBBABELTRACE = @LIBBABELTRACE@
|
||||
|
||||
WARN_CFLAGS = @WARN_CFLAGS@
|
||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
||||
GDB_WARN_CFLAGS = $(WARN_CFLAGS)
|
||||
@ -475,7 +479,7 @@ INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_
|
||||
# LIBIBERTY appears twice on purpose.
|
||||
CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \
|
||||
$(XM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ @PYTHON_LIBS@ \
|
||||
$(LIBEXPAT) $(LIBLZMA) \
|
||||
$(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) \
|
||||
$(LIBIBERTY) $(WIN32LIBS) $(LIBGNU)
|
||||
CDEPS = $(XM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) \
|
||||
$(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU)
|
||||
|
3
gdb/NEWS
3
gdb/NEWS
@ -135,6 +135,9 @@ Tilera TILE-Gx GNU/Linux tilegx*-*-linux
|
||||
Release versions, on the other hand, are built without -lmcheck
|
||||
by default. The --enable-libmcheck/--disable-libmcheck configure
|
||||
options allow the user to override that default.
|
||||
--with-babeltrace/--with-babeltrace-include/--with-babeltrace-lib
|
||||
This configure option allows the user to build GDB with
|
||||
libbabeltrace using which GDB can read Common Trace Format data.
|
||||
|
||||
* New commands (for set/show, see "New options" below)
|
||||
|
||||
|
@ -180,6 +180,9 @@
|
||||
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
||||
#undef HAVE_LC_MESSAGES
|
||||
|
||||
/* Define if libbabeltrace is available */
|
||||
#undef HAVE_LIBBABELTRACE
|
||||
|
||||
/* Define to 1 if you have the `dl' library (-ldl). */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
|
517
gdb/configure
vendored
517
gdb/configure
vendored
@ -592,6 +592,9 @@ enable_option_checking=no
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
GDB_NM_FILE
|
||||
LTLIBBABELTRACE
|
||||
LIBBABELTRACE
|
||||
HAVE_LIBBABELTRACE
|
||||
frags
|
||||
target_subdir
|
||||
CONFIG_UNINSTALL
|
||||
@ -819,6 +822,8 @@ with_x
|
||||
enable_sim
|
||||
enable_multi_ice
|
||||
enable_gdbserver
|
||||
with_babeltrace
|
||||
with_libbabeltrace_prefix
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@ -1532,6 +1537,9 @@ Optional Packages:
|
||||
--with-tcl directory containing tcl configuration (tclConfig.sh)
|
||||
--with-tk directory containing tk configuration (tkConfig.sh)
|
||||
--with-x use the X Window System
|
||||
--with-babeltrace include babeltrace support (auto/yes/no)
|
||||
--with-libbabeltrace-prefix[=DIR] search for libbabeltrace in DIR/include and DIR/lib
|
||||
--without-libbabeltrace-prefix don't search for libbabeltrace in includedir and libdir
|
||||
|
||||
Some influential environment variables:
|
||||
CC C compiler command
|
||||
@ -14093,6 +14101,515 @@ if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then
|
||||
as_fn_error "Automatic gdbserver build is not supported for this configuration" "$LINENO" 5
|
||||
fi
|
||||
|
||||
# Check for babeltrace and babeltrace-ctf
|
||||
|
||||
# Check whether --with-babeltrace was given.
|
||||
if test "${with_babeltrace+set}" = set; then :
|
||||
withval=$with_babeltrace;
|
||||
else
|
||||
with_babeltrace=auto
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use babeltrace" >&5
|
||||
$as_echo_n "checking whether to use babeltrace... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_babeltrace" >&5
|
||||
$as_echo "$with_babeltrace" >&6; }
|
||||
|
||||
if test "x$with_babeltrace" = "xno"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&5
|
||||
$as_echo "$as_me: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&2;}
|
||||
else
|
||||
# Append -Werror to CFLAGS so that configure can catch the warning
|
||||
# "assignment from incompatible pointer type", which is related to
|
||||
# the babeltrace change from 1.0.3 to 1.1.0. Babeltrace 1.1.0 works
|
||||
# in GDB, while babeltrace 1.0.3 is broken.
|
||||
# AC_LIB_HAVE_LINKFLAGS may modify CPPFLAGS in it, so it should be
|
||||
# safe to save and restore CFLAGS here.
|
||||
saved_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use_additional=yes
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
|
||||
# Check whether --with-libbabeltrace-prefix was given.
|
||||
if test "${with_libbabeltrace_prefix+set}" = set; then :
|
||||
withval=$with_libbabeltrace_prefix;
|
||||
if test "X$withval" = "Xno"; then
|
||||
use_additional=no
|
||||
else
|
||||
if test "X$withval" = "X"; then
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
|
||||
eval additional_includedir=\"$includedir\"
|
||||
eval additional_libdir=\"$libdir\"
|
||||
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
else
|
||||
additional_includedir="$withval/include"
|
||||
additional_libdir="$withval/lib"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
LIBBABELTRACE=
|
||||
LTLIBBABELTRACE=
|
||||
INCBABELTRACE=
|
||||
rpathdirs=
|
||||
ltrpathdirs=
|
||||
names_already_handled=
|
||||
names_next_round='babeltrace babeltrace-ctf'
|
||||
while test -n "$names_next_round"; do
|
||||
names_this_round="$names_next_round"
|
||||
names_next_round=
|
||||
for name in $names_this_round; do
|
||||
already_handled=
|
||||
for n in $names_already_handled; do
|
||||
if test "$n" = "$name"; then
|
||||
already_handled=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$already_handled"; then
|
||||
names_already_handled="$names_already_handled $name"
|
||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
||||
eval value=\"\$HAVE_LIB$uppername\"
|
||||
if test -n "$value"; then
|
||||
if test "$value" = yes; then
|
||||
eval value=\"\$LIB$uppername\"
|
||||
test -z "$value" || LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$value"
|
||||
eval value=\"\$LTLIB$uppername\"
|
||||
test -z "$value" || LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }$value"
|
||||
else
|
||||
:
|
||||
fi
|
||||
else
|
||||
found_dir=
|
||||
found_la=
|
||||
found_so=
|
||||
found_a=
|
||||
if test $use_additional = yes; then
|
||||
if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
|
||||
found_dir="$additional_libdir"
|
||||
found_so="$additional_libdir/lib$name.$shlibext"
|
||||
if test -f "$additional_libdir/lib$name.la"; then
|
||||
found_la="$additional_libdir/lib$name.la"
|
||||
fi
|
||||
else
|
||||
if test -f "$additional_libdir/lib$name.$libext"; then
|
||||
found_dir="$additional_libdir"
|
||||
found_a="$additional_libdir/lib$name.$libext"
|
||||
if test -f "$additional_libdir/lib$name.la"; then
|
||||
found_la="$additional_libdir/lib$name.la"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "X$found_dir" = "X"; then
|
||||
for x in $LDFLAGS $LTLIBBABELTRACE; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
case "$x" in
|
||||
-L*)
|
||||
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
||||
if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
|
||||
found_dir="$dir"
|
||||
found_so="$dir/lib$name.$shlibext"
|
||||
if test -f "$dir/lib$name.la"; then
|
||||
found_la="$dir/lib$name.la"
|
||||
fi
|
||||
else
|
||||
if test -f "$dir/lib$name.$libext"; then
|
||||
found_dir="$dir"
|
||||
found_a="$dir/lib$name.$libext"
|
||||
if test -f "$dir/lib$name.la"; then
|
||||
found_la="$dir/lib$name.la"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "X$found_dir" != "X"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if test "X$found_dir" != "X"; then
|
||||
LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-L$found_dir -l$name"
|
||||
if test "X$found_so" != "X"; then
|
||||
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$found_so"
|
||||
else
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $found_dir"
|
||||
fi
|
||||
if test "$hardcode_direct" = yes; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$found_so"
|
||||
else
|
||||
if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$found_so"
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $found_dir"
|
||||
fi
|
||||
else
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIBBABELTRACE; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
if test "X$x" = "X-L$found_dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-L$found_dir"
|
||||
fi
|
||||
if test "$hardcode_minus_L" != no; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$found_so"
|
||||
else
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if test "X$found_a" != "X"; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$found_a"
|
||||
else
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-L$found_dir -l$name"
|
||||
fi
|
||||
fi
|
||||
additional_includedir=
|
||||
case "$found_dir" in
|
||||
*/lib | */lib/)
|
||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
|
||||
additional_includedir="$basedir/include"
|
||||
;;
|
||||
esac
|
||||
if test "X$additional_includedir" != "X"; then
|
||||
if test "X$additional_includedir" != "X/usr/include"; then
|
||||
haveit=
|
||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux*) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
for x in $CPPFLAGS $INCBABELTRACE; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
if test "X$x" = "X-I$additional_includedir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_includedir"; then
|
||||
INCBABELTRACE="${INCBABELTRACE}${INCBABELTRACE:+ }-I$additional_includedir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test -n "$found_la"; then
|
||||
save_libdir="$libdir"
|
||||
case "$found_la" in
|
||||
*/* | *\\*) . "$found_la" ;;
|
||||
*) . "./$found_la" ;;
|
||||
esac
|
||||
libdir="$save_libdir"
|
||||
for dep in $dependency_libs; do
|
||||
case "$dep" in
|
||||
-L*)
|
||||
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
||||
if test "X$additional_libdir" != "X/usr/lib"; then
|
||||
haveit=
|
||||
if test "X$additional_libdir" = "X/usr/local/lib"; then
|
||||
if test -n "$GCC"; then
|
||||
case $host_os in
|
||||
linux*) haveit=yes;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
if test -z "$haveit"; then
|
||||
haveit=
|
||||
for x in $LDFLAGS $LIBBABELTRACE; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
haveit=
|
||||
for x in $LDFLAGS $LTLIBBABELTRACE; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
if test "X$x" = "X-L$additional_libdir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
if test -d "$additional_libdir"; then
|
||||
LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-L$additional_libdir"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-R*)
|
||||
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
||||
if test "$enable_rpath" != no; then
|
||||
haveit=
|
||||
for x in $rpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
rpathdirs="$rpathdirs $dir"
|
||||
fi
|
||||
haveit=
|
||||
for x in $ltrpathdirs; do
|
||||
if test "X$x" = "X$dir"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
ltrpathdirs="$ltrpathdirs $dir"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
-l*)
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
||||
;;
|
||||
*.la)
|
||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
||||
;;
|
||||
*)
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$dep"
|
||||
LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }$dep"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
else
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }-l$name"
|
||||
LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-l$name"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
if test "X$rpathdirs" != "X"; then
|
||||
if test -n "$hardcode_libdir_separator"; then
|
||||
alldirs=
|
||||
for found_dir in $rpathdirs; do
|
||||
alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
|
||||
done
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$alldirs"
|
||||
eval flag=\"$hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$flag"
|
||||
else
|
||||
for found_dir in $rpathdirs; do
|
||||
acl_save_libdir="$libdir"
|
||||
libdir="$found_dir"
|
||||
eval flag=\"$hardcode_libdir_flag_spec\"
|
||||
libdir="$acl_save_libdir"
|
||||
LIBBABELTRACE="${LIBBABELTRACE}${LIBBABELTRACE:+ }$flag"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if test "X$ltrpathdirs" != "X"; then
|
||||
for found_dir in $ltrpathdirs; do
|
||||
LTLIBBABELTRACE="${LTLIBBABELTRACE}${LTLIBBABELTRACE:+ }-R$found_dir"
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
|
||||
for element in $INCBABELTRACE; do
|
||||
haveit=
|
||||
for x in $CPPFLAGS; do
|
||||
|
||||
acl_save_prefix="$prefix"
|
||||
prefix="$acl_final_prefix"
|
||||
acl_save_exec_prefix="$exec_prefix"
|
||||
exec_prefix="$acl_final_exec_prefix"
|
||||
eval x=\"$x\"
|
||||
exec_prefix="$acl_save_exec_prefix"
|
||||
prefix="$acl_save_prefix"
|
||||
|
||||
if test "X$x" = "X$element"; then
|
||||
haveit=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test -z "$haveit"; then
|
||||
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libbabeltrace" >&5
|
||||
$as_echo_n "checking for libbabeltrace... " >&6; }
|
||||
if test "${ac_cv_libbabeltrace+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
ac_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LIBBABELTRACE"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <babeltrace/babeltrace.h>
|
||||
#include <babeltrace/ctf/events.h>
|
||||
#include <babeltrace/ctf/iterator.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL));
|
||||
struct bt_ctf_event *event = NULL;
|
||||
const struct bt_definition *scope;
|
||||
|
||||
scope = bt_ctf_get_top_level_scope (event,
|
||||
BT_STREAM_EVENT_HEADER);
|
||||
bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id"));
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_libbabeltrace=yes
|
||||
else
|
||||
ac_cv_libbabeltrace=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS="$ac_save_LIBS"
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libbabeltrace" >&5
|
||||
$as_echo "$ac_cv_libbabeltrace" >&6; }
|
||||
if test "$ac_cv_libbabeltrace" = yes; then
|
||||
HAVE_LIBBABELTRACE=yes
|
||||
|
||||
$as_echo "#define HAVE_LIBBABELTRACE 1" >>confdefs.h
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libbabeltrace" >&5
|
||||
$as_echo_n "checking how to link with libbabeltrace... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBBABELTRACE" >&5
|
||||
$as_echo "$LIBBABELTRACE" >&6; }
|
||||
else
|
||||
HAVE_LIBBABELTRACE=no
|
||||
CPPFLAGS="$ac_save_CPPFLAGS"
|
||||
LIBBABELTRACE=
|
||||
LTLIBBABELTRACE=
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CFLAGS=$saved_CFLAGS
|
||||
|
||||
if test "$HAVE_LIBBABELTRACE" != yes; then
|
||||
if test "$with_babeltrace" = yes; then
|
||||
as_fn_error "babeltrace is missing or unusable" "$LINENO" 5
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&5
|
||||
$as_echo "$as_me: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&2;}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
|
||||
# to an empty version.
|
||||
|
||||
|
@ -2321,6 +2321,47 @@ if test "$enable_gdbserver" = "yes" -a "$gdbserver_build_enabled" != "yes"; then
|
||||
AC_MSG_ERROR(Automatic gdbserver build is not supported for this configuration)
|
||||
fi
|
||||
|
||||
# Check for babeltrace and babeltrace-ctf
|
||||
AC_ARG_WITH(babeltrace,
|
||||
AC_HELP_STRING([--with-babeltrace], [include babeltrace support (auto/yes/no)]),
|
||||
[], [with_babeltrace=auto])
|
||||
AC_MSG_CHECKING([whether to use babeltrace])
|
||||
AC_MSG_RESULT([$with_babeltrace])
|
||||
|
||||
if test "x$with_babeltrace" = "xno"; then
|
||||
AC_MSG_WARN([babletrace support disabled; GDB is unable to read CTF data.])
|
||||
else
|
||||
# Append -Werror to CFLAGS so that configure can catch the warning
|
||||
# "assignment from incompatible pointer type", which is related to
|
||||
# the babeltrace change from 1.0.3 to 1.1.0. Babeltrace 1.1.0 works
|
||||
# in GDB, while babeltrace 1.0.3 is broken.
|
||||
# AC_LIB_HAVE_LINKFLAGS may modify CPPFLAGS in it, so it should be
|
||||
# safe to save and restore CFLAGS here.
|
||||
saved_CFLAGS=$CFLAGS
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_LIB_HAVE_LINKFLAGS([babeltrace], [babeltrace-ctf],
|
||||
[#include <babeltrace/babeltrace.h>
|
||||
#include <babeltrace/ctf/events.h>
|
||||
#include <babeltrace/ctf/iterator.h>],
|
||||
[struct bt_iter_pos *pos = bt_iter_get_pos (bt_ctf_get_iter (NULL));
|
||||
struct bt_ctf_event *event = NULL;
|
||||
const struct bt_definition *scope;
|
||||
|
||||
scope = bt_ctf_get_top_level_scope (event,
|
||||
BT_STREAM_EVENT_HEADER);
|
||||
bt_ctf_get_uint64 (bt_ctf_get_field (event, scope, "id"));
|
||||
])
|
||||
CFLAGS=$saved_CFLAGS
|
||||
|
||||
if test "$HAVE_LIBBABELTRACE" != yes; then
|
||||
if test "$with_babeltrace" = yes; then
|
||||
AC_MSG_ERROR([babeltrace is missing or unusable])
|
||||
else
|
||||
AC_MSG_WARN([babeltrace is missing or unusable; GDB is unable to read CTF data.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# If nativefile (NAT_FILE) is not set in config/*/*.m[ht] files, we link
|
||||
# to an empty version.
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2013-04-10 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gdb.texinfo (Trace Files): Add "target ctf".
|
||||
|
||||
2013-04-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* Makefile.in (POD2MAN1, POD2MAN5): Replace $(VERSION) by ../version.in.
|
||||
|
@ -12307,13 +12307,33 @@ that can be shared by multiple debugging and tracing tools. Please go to
|
||||
|
||||
@kindex target tfile
|
||||
@kindex tfile
|
||||
@kindex target ctf
|
||||
@kindex ctf
|
||||
@item target tfile @var{filename}
|
||||
Use the file named @var{filename} as a source of trace data. Commands
|
||||
that examine data work as they do with a live target, but it is not
|
||||
possible to run any new trace experiments. @code{tstatus} will report
|
||||
the state of the trace run at the moment the data was saved, as well
|
||||
as the current trace frame you are examining. @var{filename} must be
|
||||
on a filesystem accessible to the host.
|
||||
@itemx target ctf @var{dirname}
|
||||
Use the file named @var{filename} or directory named @var{dirname} as
|
||||
a source of trace data. Commands that examine data work as they do with
|
||||
a live target, but it is not possible to run any new trace experiments.
|
||||
@code{tstatus} will report the state of the trace run at the moment
|
||||
the data was saved, as well as the current trace frame you are examining.
|
||||
@var{filename} or @var{dirname} must be on a filesystem accessible to
|
||||
the host.
|
||||
|
||||
@smallexample
|
||||
(@value{GDBP}) target ctf ctf.ctf
|
||||
(@value{GDBP}) tfind
|
||||
Found trace frame 0, tracepoint 2
|
||||
39 ++a; /* set tracepoint 1 here */
|
||||
(@value{GDBP}) tdump
|
||||
Data collected at tracepoint 2, trace frame 0:
|
||||
i = 0
|
||||
a = 0
|
||||
b = 1 '\001'
|
||||
c = @{"123", "456", "789", "123", "456", "789"@}
|
||||
d = @{@{@{a = 1, b = 2@}, @{a = 3, b = 4@}@}, @{@{a = 5, b = 6@}, @{a = 7, b = 8@}@}@}
|
||||
(@value{GDBP}) p b
|
||||
$1 = 1
|
||||
@end smallexample
|
||||
|
||||
@end table
|
||||
|
||||
|
@ -1,3 +1,17 @@
|
||||
2013-04-10 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gdb.trace/actions.exp: Save trace data to CTF.
|
||||
Change to ctf target if GDB supports, read CTF data in ctf
|
||||
target, and check the actions of tracepoints.
|
||||
* gdb.trace/while-stepping.exp: Likewise.
|
||||
* gdb.trace/report.exp: Test GDB saves trace data to CTF
|
||||
format and read CTF trace file if GDB supports.
|
||||
* gdb.trace/tstatus.exp: Save trace data to CTF. If ctf
|
||||
target is supported, change to ctf target, read trace data and
|
||||
check output of command "tstatus".
|
||||
* gdb.trace/tsv.exp: Save trace frame to CTF. If GDB supports,
|
||||
read CTF data by target ctf and call check_tsv.
|
||||
|
||||
2013-04-10 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gdb.trace/actions.exp (check_tracepoint): New.
|
||||
|
@ -310,6 +310,9 @@ gdb_test_no_output "tstop" ""
|
||||
set tracefile [standard_output_file ${testfile}]
|
||||
gdb_test "tsave ${tracefile}.tf" \
|
||||
"Trace data saved to file '${tracefile}.tf'\.\\r"
|
||||
gdb_test "tsave -ctf ${tracefile}.ctf" \
|
||||
"Trace data saved to directory '${tracefile}.ctf'\.\\r" \
|
||||
"save ctf trace file"
|
||||
|
||||
# Restart GDB and read the trace data in tfile target.
|
||||
gdb_exit
|
||||
@ -319,3 +322,24 @@ gdb_file_cmd $binfile
|
||||
gdb_test "target tfile ${tracefile}.tf" ".*" \
|
||||
"change to tfile target"
|
||||
check_tracepoint "tfile"
|
||||
|
||||
# Try to read ctf data if GDB supports.
|
||||
set gdb_can_read_ctf_data 0
|
||||
gdb_test_multiple "target ctf" "" {
|
||||
-re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
|
||||
set gdb_can_read_ctf_data 0
|
||||
}
|
||||
-re "No CTF directory specified.*\r\n$gdb_prompt $" {
|
||||
set gdb_can_read_ctf_data 1
|
||||
}
|
||||
}
|
||||
|
||||
if { $gdb_can_read_ctf_data } {
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_file_cmd $binfile
|
||||
gdb_test "target ctf ${tracefile}.ctf" ".*" \
|
||||
"change to ctf target"
|
||||
check_tracepoint "ctf"
|
||||
}
|
||||
|
@ -412,6 +412,11 @@ gdb_test "tsave ${tracefile}.tf" \
|
||||
"Trace data saved to file '${tracefile}.tf'.*" \
|
||||
"save tfile trace file"
|
||||
|
||||
# Save trace frames to ctf.
|
||||
gdb_test "tsave -ctf ${tracefile}.ctf" \
|
||||
"Trace data saved to directory '${tracefile}.ctf'.*" \
|
||||
"save ctf trace file"
|
||||
|
||||
# Change target to tfile.
|
||||
set test "change to tfile target"
|
||||
gdb_test_multiple "target tfile ${tracefile}.tf" "$test" {
|
||||
@ -425,3 +430,12 @@ gdb_test_multiple "target tfile ${tracefile}.tf" "$test" {
|
||||
}
|
||||
# Test the collected trace frames from tfile.
|
||||
use_collected_data "tfile"
|
||||
|
||||
# Try to read ctf data if GDB supports.
|
||||
gdb_test_multiple "target ctf ${tracefile}.ctf" "" {
|
||||
-re "Undefined target command: \"ctf ${tracefile}.ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
|
||||
}
|
||||
-re ".*\r\n$gdb_prompt $" {
|
||||
use_collected_data "ctf"
|
||||
}
|
||||
}
|
||||
|
@ -142,6 +142,10 @@ set tracefile [standard_output_file ${testfile}]
|
||||
gdb_test "tsave ${tracefile}.tf" \
|
||||
"Trace data saved to file '${tracefile}.tf'.*" \
|
||||
"save tfile trace file"
|
||||
# Save trace frames to CTF.
|
||||
gdb_test "tsave -ctf ${tracefile}.ctf" \
|
||||
"Trace data saved to directory '${tracefile}.ctf'.*" \
|
||||
"save ctf trace file"
|
||||
|
||||
# Change target to tfile.
|
||||
set test "change to tfile target"
|
||||
@ -162,3 +166,13 @@ set tstatus_output [string map {\) \\)} $tstatus_output]
|
||||
# The status should be identical to the status of live inferior.
|
||||
gdb_test "tstatus" "Using a trace file\.\r\n${tstatus_output}.*" \
|
||||
"tstatus on tfile target"
|
||||
|
||||
# Change target to ctf if GDB supports.
|
||||
gdb_test_multiple "target ctf ${tracefile}.ctf" "" {
|
||||
-re "Undefined target command: \"ctf ${tracefile}.ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
|
||||
}
|
||||
-re ".*\r\n$gdb_prompt $" {
|
||||
gdb_test "tstatus" "Using a trace file\.\r\n${tstatus_output}.*" \
|
||||
"tstatus on ctf target"
|
||||
}
|
||||
}
|
||||
|
@ -147,6 +147,10 @@ set tracefile [standard_output_file ${testfile}]
|
||||
gdb_test "tsave ${tracefile}.tf" \
|
||||
"Trace data saved to file '${tracefile}.tf'.*" \
|
||||
"save tfile trace file"
|
||||
# Save trace frames to ctf.
|
||||
gdb_test "tsave -ctf ${tracefile}.ctf" \
|
||||
"Trace data saved to directory '${tracefile}.ctf'.*" \
|
||||
"save ctf trace file"
|
||||
|
||||
proc check_tsv { data_source } {
|
||||
with_test_prefix "${data_source}" {
|
||||
@ -174,4 +178,13 @@ gdb_test_multiple "target tfile ${tracefile}.tf" "$test" {
|
||||
}
|
||||
|
||||
# Check the tsv from tfile.
|
||||
|
||||
check_tsv "tfile"
|
||||
# Try to read ctf data if GDB supports.
|
||||
gdb_test_multiple "target ctf ${tracefile}.ctf" "" {
|
||||
-re "Undefined target command: \"ctf ${tracefile}.ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
|
||||
}
|
||||
-re ".*\r\n$gdb_prompt $" {
|
||||
check_tsv "ctf"
|
||||
}
|
||||
}
|
||||
|
@ -136,6 +136,9 @@ set tracefile [standard_output_file ${testfile}]
|
||||
gdb_test "tsave ${tracefile}.tf" \
|
||||
"Trace data saved to file '${tracefile}.tf'\.\\r" \
|
||||
"save tfile trace file"
|
||||
gdb_test "tsave -ctf ${tracefile}.ctf" \
|
||||
"Trace data saved to directory '${tracefile}.ctf'\.\\r" \
|
||||
"save ctf trace file"
|
||||
|
||||
# Restart GDB and read the trace data in tfile target.
|
||||
gdb_exit
|
||||
@ -145,3 +148,24 @@ gdb_file_cmd $binfile
|
||||
gdb_test "target tfile ${tracefile}.tf" ".*" \
|
||||
"change to tfile target"
|
||||
check_tracepoint "tfile"
|
||||
|
||||
# Try to read ctf data if GDB supports.
|
||||
set gdb_can_read_ctf_data 0
|
||||
gdb_test_multiple "target ctf" "" {
|
||||
-re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
|
||||
set gdb_can_read_ctf_data 0
|
||||
}
|
||||
-re "No CTF directory specified.*\r\n$gdb_prompt $" {
|
||||
set gdb_can_read_ctf_data 1
|
||||
}
|
||||
}
|
||||
|
||||
if { $gdb_can_read_ctf_data } {
|
||||
gdb_exit
|
||||
gdb_start
|
||||
gdb_reinitialize_dir $srcdir/$subdir
|
||||
gdb_file_cmd $binfile
|
||||
gdb_test "target ctf ${tracefile}.ctf" ".*" \
|
||||
"change to ctf target"
|
||||
check_tracepoint "ctf"
|
||||
}
|
||||
|
@ -127,14 +127,6 @@ extern void (*deprecated_readline_end_hook) (void);
|
||||
typedef struct trace_state_variable tsv_s;
|
||||
DEF_VEC_O(tsv_s);
|
||||
|
||||
/* An object describing the contents of a traceframe. */
|
||||
|
||||
struct traceframe_info
|
||||
{
|
||||
/* Collected memory. */
|
||||
VEC(mem_range_s) *memory;
|
||||
};
|
||||
|
||||
static VEC(tsv_s) *tvariables;
|
||||
|
||||
/* The next integer to assign to a variable. */
|
||||
@ -3303,8 +3295,6 @@ static const struct trace_file_write_ops tfile_write_ops =
|
||||
#define TRACE_WRITE_V_BLOCK(writer, num, val) \
|
||||
writer->ops->frame_ops->write_v_block ((writer), (num), (val))
|
||||
|
||||
extern int trace_regblock_size;
|
||||
|
||||
/* Save tracepoint data to file named FILENAME through WRITER. WRITER
|
||||
determines the trace file format. If TARGET_DOES_SAVE is non-zero,
|
||||
the save is performed on the target, otherwise GDB obtains all trace
|
||||
@ -3741,6 +3731,12 @@ get_traceframe_number (void)
|
||||
return traceframe_number;
|
||||
}
|
||||
|
||||
int
|
||||
get_tracepoint_number (void)
|
||||
{
|
||||
return tracepoint_number;
|
||||
}
|
||||
|
||||
/* Make the traceframe NUM be the current trace frame. Does nothing
|
||||
if NUM is already current. */
|
||||
|
||||
@ -3859,7 +3855,7 @@ free_uploaded_tps (struct uploaded_tp **utpp)
|
||||
/* Given a number and address, return an uploaded tracepoint with that
|
||||
number, creating if necessary. */
|
||||
|
||||
static struct uploaded_tsv *
|
||||
struct uploaded_tsv *
|
||||
get_uploaded_tsv (int num, struct uploaded_tsv **utsvp)
|
||||
{
|
||||
struct uploaded_tsv *utsv;
|
||||
|
@ -24,6 +24,14 @@
|
||||
#include "memrange.h"
|
||||
#include "gdb_vecs.h"
|
||||
|
||||
/* An object describing the contents of a traceframe. */
|
||||
|
||||
struct traceframe_info
|
||||
{
|
||||
/* Collected memory. */
|
||||
VEC(mem_range_s) *memory;
|
||||
};
|
||||
|
||||
/* A trace state variable is a value managed by a target being
|
||||
traced. A trace state variable (or tsv for short) can be accessed
|
||||
and assigned to by tracepoint actions and conditionals, but is not
|
||||
@ -142,6 +150,8 @@ struct trace_status *current_trace_status (void);
|
||||
|
||||
extern char *default_collect;
|
||||
|
||||
extern int trace_regblock_size;
|
||||
|
||||
/* Struct to collect random info about tracepoints on the target. */
|
||||
|
||||
struct uploaded_tp
|
||||
@ -324,6 +334,9 @@ extern void (*deprecated_trace_start_stop_hook) (int start, int from_tty);
|
||||
/* Returns the current traceframe number. */
|
||||
extern int get_traceframe_number (void);
|
||||
|
||||
/* Returns the tracepoint number for current traceframe. */
|
||||
extern int get_tracepoint_number (void);
|
||||
|
||||
/* Make the traceframe NUM be the current GDB trace frame number, and
|
||||
do nothing more. In particular, this does not flush the
|
||||
register/frame caches or notify the target about the trace frame
|
||||
@ -368,6 +381,8 @@ extern void parse_tsv_definition (char *line, struct uploaded_tsv **utsvp);
|
||||
|
||||
extern struct uploaded_tp *get_uploaded_tp (int num, ULONGEST addr,
|
||||
struct uploaded_tp **utpp);
|
||||
extern struct uploaded_tsv *get_uploaded_tsv (int num,
|
||||
struct uploaded_tsv **utsvp);
|
||||
extern struct tracepoint *create_tracepoint_from_upload (struct uploaded_tp *utp);
|
||||
extern void merge_uploaded_tracepoints (struct uploaded_tp **utpp);
|
||||
extern void merge_uploaded_trace_state_variables (struct uploaded_tsv **utsvp);
|
||||
|
Loading…
Reference in New Issue
Block a user