4082afcc3d
For several RSP packets, there's a corresponding "set remote foo-packet on/off/auto" command that one can use do bypass auto-detection of support for the packet or feature. However, I noticed that setting several of these commands to 'on' or 'off' doesn't actually have any effect. These are, at least: set remote breakpoint-commands-packet set remote conditional-breakpoints-packet set remote fast-tracepoints-packet set remote static-tracepoints-packet set remote install-in-trace-packet These are commands that control a remote protocol feature that doesn't have a corresponding regular packet, and because of that we cache the knowledge of the remote side support as returned by the qSupported packet in the remote_state object. E.g., in the case of the 'set remote breakpoint-commands-packet' command, whether the feature is supported is recorded in the 'breakpoint_commands' field of the remote_state object. Whether to bypass packet support auto-detection or not is controlled by the 'detect' field of the corresponding packet's packet_config structure. That field is the variable associated directly with the "set remote foo-packet" command. Actual remote stub support for the packet (or feature) is recorded in the 'support' field of the same structure. However, when the user toggles the command, the 'support' field is also correspondingly updated to PACKET_ENABLE/DISABLE/SUPPORT_UNKNOWN, discarding the knowledge of whether the target actually supports the feature. If one toggles back to 'auto', it's no big issue for real packets, as they'll just end up re-probed the next time they might be necessary. But features whose support is only reported through qSupported don't get their corresponding (manually added/maintained) fields in remote_state objected updated. As we lost the actual status of the target support for the feature, GDB would need to probe the qSupported features again, which GDB doesn't do. But we can avoid that extra traffic, and clean things up, IMO. Instead of going in that direction, this patch completely decouples struct packet_config's 'detect' and 'support' fields. E.g., when the user does "set remote foo-packet off", instead of setting the packet config's 'support' field to PACKET_DISABLE, the 'support' field is not touched at all anymore. That is, we end up respecting this simple table: | packet_config->detect | packet_config->support | should use packet/feature? | |-----------------------+------------------------+----------------------------| | auto | PACKET_ENABLE | PACKET_ENABLE | | auto | PACKET_DISABLE | PACKET_DISABLE | | auto | PACKET_UNKNOWN | PACKET_UNKNOWN | | yes | don't care | PACKET_ENABLE | | no | don't care | PACKET_DISABLE | This is implemented by the new packet_support function. With that, we need to update this pattern throughout: if (remote_protocol_packets[PACKET_foo].support == PACKET_DISABLE) to do this instead: if (packet_support (PACKET_qAttached) == PACKET_DISABLE) where as mentioned, the packet_support function takes struct packet_config's 'detect' field into account, like in the table above. As when the packet is force-disabled or force-enabled, the 'support' field is just ignored, if the command is set back to auto, we'll resume respecting whatever the target said it supports. IOW, the end result is that the 'support' field always represents whether the target actually supports the packet or not. After all that, the manually maintained breakpoint_commands and equivalent fields of struct remote_state can then be eliminated, with references replaced by checking the result of calling the packet_support function on the corresponding packet or feature. This required adding new PACKET_foo enum values for several features that didn't have it yet. (The patch does not add corresponding "set remote foo-packet" style commands though, focusing only on bug fixing and laying the groundwork). Tested on x86_64 Fedora 17, native GDBserver. The new tests all fail without this patch. gdb/ 2014-04-25 Pedro Alves <palves@redhat.com> * remote.c (struct remote_state): Remove multi_process_aware, non_stop_aware, cond_tracepoints, cond_breakpoints, breakpoint_commands, fast_tracepoints, static_tracepoints, install_in_trace, disconnected_tracing, enable_disable_tracepoints, string_tracing, and augmented_libraries_svr4_read fields. (remote_multi_process_p): Move further below in the file. (struct packet_config): Add comments. (update_packet_config): Delete function. (show_packet_config_cmd): Use packet_config_support. (add_packet_config_cmd): Use NULL as set callback. (packet_ok): "set remote foo-packet"-style commands no longer change config->supported -- adjust. (PACKET_ConditionalTracepoints, PACKET_ConditionalBreakpoints) (PACKET_BreakpointCommands, PACKET_FastTracepoints) (PACKET_StaticTracepoints, PACKET_InstallInTrace): Add comments. (PACKET_QNonStop, PACKET_multiprocess_feature) (PACKET_EnableDisableTracepoints_feature, PACKET_tracenz_feature) (PACKET_DisconnectedTracing_feature) (PACKET_augmented_libraries_svr4_read_feature): New enum values. (set_remote_protocol_packet_cmd): Delete function. (packet_config_support, packet_support): New functions. (set_remote_protocol_Z_packet_cmd): Don't call update_packet_config. (remote_query_attached, remote_pass_signals) (remote_program_signals, remote_threads_info) (remote_threads_extra_info, remote_start_remote): Use packet_support. (remote_start_remote): Use packet_config_support and packet_support. (init_all_packet_configs): Set all packets to unknown support, instead of calling update_packet_config. (remote_check_symbols): Use packet_support. (remote_supported_packet): Unconditionally set the packet config's support status. (remote_multi_process_feature, remote_non_stop_feature) (remote_cond_tracepoint_feature, remote_cond_breakpoint_feature) (remote_breakpoint_commands_feature) (remote_fast_tracepoint_feature, remote_static_tracepoint_feature) (remote_install_in_trace_feature) (remote_disconnected_tracing_feature) (remote_enable_disable_tracepoint_feature) (remote_string_tracing_feature) (remote_augmented_libraries_svr4_read_feature): Delete functions. (remote_protocol_features): Adjust to use remote_supported_packet for "augmented-libraries-svr4-read", "multiprocess", "QNonStop", "ConditionalTracepoints", "ConditionalBreakpoints", "BreakpointCommands", "FastTracepoints", "StaticTracepoints", "InstallInTrace", "DisconnectedTracing", "DisconnectedTracing", "EnableDisableTracepoints", and "tracenz". (remote_query_supported): Use packet_support. (remote_open_1): Adjust. (extended_remote_attach_1): Use packet_support. Switch on the result of packet_ok instead of checking whether the packet ended up disabled. (remote_vcont_resume): Use packet_support. (remote_resume, remote_stop_ns, fetch_register_using_p) (remote_prepare_to_store, store_register_using_P) (check_binary_download, remote_write_bytes): Use packet_support. (remote_vkill): Use packet_support. Switch on the result of packet_ok instead of checking whether the packet ended up disabled. (extended_remote_supports_disable_randomization): Use packet_support. (extended_remote_run): Switch on the result of packet_ok instead of checking whether the packet ended up disabled. (remote_insert_breakpoint, remote_remove_breakpoint) (remote_insert_watchpoint, remote_remove_watchpoint) (remote_insert_hw_breakpoint, remote_remove_hw_breakpoint): Use packet_support. (remote_search_memory): Use packet_config_support. (remote_get_thread_local_address, remote_get_tib_address) (remote_hostio_send_command, remote_can_execute_reverse): Use packet_support. (remote_supports_cond_tracepoints) (remote_supports_cond_breakpoints) (remote_supports_fast_tracepoints) (remote_supports_static_tracepoints) (remote_supports_install_in_trace) (remote_supports_enable_disable_tracepoint) (remote_supports_string_tracing) (remote_can_run_breakpoint_commands): Rewrite, checking whether the packet config says the feature is enabled or disabled. (remote_download_tracepoint, remote_trace_set_readonly_regions) (remote_get_trace_status): Use packet_support. (remote_set_disconnected_tracing): Adjust to check whether the feature is enabled with packet_support. (remote_set_trace_buffer_size, remote_use_agent) (remote_can_use_agent, remote_supports_btrace): Use packet_support. (remote_enable_btrace, remote_disable_btrace, remote_read_btrace): Use packet_config_support. (remote_augmented_libraries_svr4_read): Rewrite, checking whether the packet config says the feature is enabled or disabled. (set_range_stepping): Use packet_support. gdb/testsuite/ 2014-04-25 Pedro Alves <palves@redhat.com> * gdb.base/cond-eval-mode.exp (warning): Move trailing \r\n to user. (top level): Test that "set remote conditional-breakpoints-packet off" works as intended. * gdb.base/dprintf.exp: Test that "set remote breakpoint-commands-packet off" works as intended. * gdb.trace/change-loc.exp (tracepoint_install_in_trace_disabled): New function. (top level): Call it. * gdb.trace/ftrace.exp (test_fast_tracepoints): Test that "set remote fast-tracepoints-packet off" works as intended. * gdb.trace/qtro.exp (gdb_is_target_remote): Moved ... * lib/gdb.exp (gdb_is_target_remote): ... here.
363 lines
11 KiB
Text
363 lines
11 KiB
Text
# Copyright 2011-2014 Free Software Foundation, Inc.
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
load_lib "trace-support.exp"
|
|
|
|
if {[skip_shlib_tests]} {
|
|
return 0
|
|
}
|
|
|
|
standard_testfile
|
|
set libfile1 "change-loc-1"
|
|
set libfile2 "change-loc-2"
|
|
set executable $testfile
|
|
set libsrc1 $srcdir/$subdir/$libfile1.c
|
|
set libsrc2 $srcdir/$subdir/$libfile2.c
|
|
set lib_sl1 [standard_output_file $libfile1.sl]
|
|
set lib_sl2 [standard_output_file $libfile2.sl]
|
|
|
|
set lib_opts debug
|
|
|
|
if [get_compiler_info] {
|
|
return -1
|
|
}
|
|
|
|
# Some targets have leading underscores on assembly symbols.
|
|
set additional_flags [list debug shlib=$lib_sl1 shlib_load [gdb_target_symbol_prefix_flags]]
|
|
|
|
if { [gdb_compile_shlib $libsrc1 $lib_sl1 $lib_opts] != ""
|
|
|| [gdb_compile_shlib $libsrc2 $lib_sl2 $lib_opts] != ""
|
|
|| [gdb_compile $srcdir/$subdir/$srcfile $binfile executable $additional_flags] != ""} {
|
|
untested "Could not compile either $libsrc1 or $srcdir/$subdir/$srcfile."
|
|
return -1
|
|
}
|
|
|
|
clean_restart $executable
|
|
|
|
gdb_load_shlibs $lib_sl1
|
|
gdb_load_shlibs $lib_sl2
|
|
|
|
if ![runto_main] {
|
|
fail "Can't run to main to check for trace support"
|
|
return -1
|
|
}
|
|
|
|
if { ![gdb_target_supports_trace] } then {
|
|
unsupported "Current target does not support trace"
|
|
return -1
|
|
}
|
|
|
|
if [is_amd64_regs_target] {
|
|
set pcreg "rip"
|
|
} elseif [is_x86_like_target] {
|
|
set pcreg "eip"
|
|
} else {
|
|
set pcreg "pc"
|
|
}
|
|
|
|
|
|
# Set tracepoint during tracing experiment.
|
|
|
|
proc tracepoint_change_loc_1 { trace_type } {
|
|
with_test_prefix "1 $trace_type" {
|
|
global testfile
|
|
global srcfile
|
|
global pcreg
|
|
global gdb_prompt
|
|
|
|
clean_restart ${testfile}
|
|
if ![runto_main] {
|
|
fail "Can't run to main"
|
|
return -1
|
|
}
|
|
gdb_test_no_output "delete break 1"
|
|
|
|
# Set a tracepoint we'll never meet. Just to avoid the
|
|
# complain after type `tstart' later.
|
|
gdb_test "next" ".*"
|
|
gdb_test "trace main" \
|
|
"Tracepoint \[0-9\] at.* file .*$srcfile, line.*" \
|
|
"set tracepoint on main"
|
|
|
|
gdb_test "break marker" \
|
|
"Breakpoint.*at.* file .*$srcfile, line.*" \
|
|
"breakpoint on marker"
|
|
|
|
gdb_test_no_output "tstart"
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker 1"
|
|
# Set a tracepoint during tracing.
|
|
set test "set tracepoint on set_tracepoint"
|
|
gdb_test_multiple "${trace_type} set_tracepoint" $test {
|
|
-re "Target returns error code .* too far .*$gdb_prompt $" {
|
|
if [string equal $trace_type "ftrace"] {
|
|
# The target was unable to install the fast tracepoint
|
|
# (e.g., jump pad too far from tracepoint).
|
|
pass "$test (too far)"
|
|
} else {
|
|
fail $test
|
|
}
|
|
}
|
|
-re "\r\n$gdb_prompt $" {
|
|
pass $test
|
|
}
|
|
}
|
|
|
|
gdb_trace_setactions "set action for tracepoint" "" \
|
|
"collect \$$pcreg" "^$"
|
|
|
|
# tracepoint has two locations after shlib change-loc-1 is loaded.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*4\.1.* in func4.*4\.2.* in func4.*" \
|
|
"tracepoint with two locations"
|
|
|
|
set test "continue to marker 2"
|
|
gdb_test_multiple "continue" $test {
|
|
-re "Target returns error code .* too far .*$gdb_prompt $" {
|
|
if [string equal $trace_type "ftrace"] {
|
|
# Expected if the target was unable to install the
|
|
# fast tracepoint (e.g., jump pad too far from
|
|
# tracepoint).
|
|
pass "$test (too far)"
|
|
# Skip the rest of the tests.
|
|
return
|
|
} else {
|
|
fail "continue to marker 2"
|
|
fail $test
|
|
}
|
|
|
|
}
|
|
-re ".*Breakpoint.*marker.*at.*$srcfile.*$gdb_prompt $" {
|
|
pass "continue to marker 2"
|
|
}
|
|
}
|
|
|
|
# tracepoint has three locations after shlib change-loc-2 is
|
|
# loaded.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*4\.1.* in func4.*4\.2.* in func4.*4\.3.* in func4 .*" \
|
|
"tracepoint with three locations"
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker 3"
|
|
|
|
# shlib is unloaded, there are still three locations, but one
|
|
# is pending.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*
|
|
4\.1.* in func4.*\tinstalled on target\r\n(4\.2.* in func4.*\tinstalled on target\r\n4\.3.* \<PENDING\>\[\t \]+set_tracepoint|4\.2.* \<PENDING\>\[\t \]+set_tracepoint.*4\.3.* in func4.*\tinstalled on target).*" \
|
|
"tracepoint with two locations (unload)"
|
|
|
|
gdb_test_no_output "tstop"
|
|
|
|
gdb_test "tfind" "Found trace frame 0, tracepoint 4.*" \
|
|
"tfind frame 0"
|
|
gdb_test "tfind" \
|
|
"Target failed to find requested trace frame\\..*"
|
|
}
|
|
}
|
|
|
|
# Set pending tracepoint.
|
|
|
|
proc tracepoint_change_loc_2 { trace_type } {
|
|
with_test_prefix "2 $trace_type" {
|
|
global srcdir
|
|
global srcfile
|
|
global subdir
|
|
global pcreg
|
|
global binfile
|
|
global gdb_prompt
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
|
|
gdb_test_multiple "${trace_type} set_tracepoint" "set pending tracepoint" {
|
|
-re ".*Make \(|fast \)tracepoint pending.*y or \\\[n\\\]. $" {
|
|
gdb_test "y" "\(Fast t|T\)racepoint.*set_tracepoint.*pending." "set pending tracepoint"
|
|
}
|
|
}
|
|
|
|
gdb_trace_setactions "set action for tracepoint" "" \
|
|
"collect \$$pcreg" "^$"
|
|
|
|
# tracepoint has no location information now. Make sure nothing
|
|
# else is displayed.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*PENDING.*set_tracepoint\r\n\[\t \]+collect \\$$pcreg\r" \
|
|
"single pending tracepoint info (without symbols)"
|
|
|
|
gdb_load ${binfile}
|
|
# tracepoint has one location after executable is loaded.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*func4.*" \
|
|
"tracepoint with one location"
|
|
|
|
set main_bp 0
|
|
gdb_test_multiple "break main" "set breakpoint on main" {
|
|
-re "Breakpoint (\[0-9\]*) at .*, line.*$gdb_prompt $" {
|
|
set main_bp $expect_out(1,string)
|
|
}
|
|
}
|
|
gdb_run_cmd
|
|
|
|
gdb_test "" \
|
|
".*Breakpoint.*main.*at.*$srcfile.*" \
|
|
"run to main"
|
|
gdb_test_no_output "delete break $main_bp"
|
|
|
|
# tracepoint has two locations after shlib change-loc-1 is loaded.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*1\.1.* in func4.*1\.2.* in func4.*" \
|
|
"tracepoint with two locations"
|
|
|
|
gdb_test "break marker" "Breakpoint.*at.* file .*$srcfile, line.*" \
|
|
"breakpoint on marker"
|
|
|
|
# tracepoint with two locations will be downloaded and installed.
|
|
set test "tstart"
|
|
gdb_test_multiple "tstart" $test {
|
|
-re "^tstart\r\n$gdb_prompt $" {
|
|
pass "tstart"
|
|
}
|
|
-re "Target returns error code .* too far .*$gdb_prompt $" {
|
|
if [string equal $trace_type "ftrace"] {
|
|
# The target was unable to install the fast tracepoint
|
|
# (e.g., jump pad too far from tracepoint).
|
|
pass "$test (too far)"
|
|
# Skip the rest of the tests.
|
|
return
|
|
} else {
|
|
fail $test
|
|
}
|
|
}
|
|
}
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker 1"
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker 2"
|
|
|
|
# tracepoint has three locations after shlib change-loc-2 is loaded.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*1\.1.* in func4.*1\.2.* in func4.*1\.3.* in func4 .*" \
|
|
"tracepoint with three locations"
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker 3"
|
|
|
|
# shlib is unloaded, there are still three locations, but one is pending.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*\<MULTIPLE\>.*
|
|
1\.1.* in func4.*\tinstalled on target\r\n(1\.2.* in func4.*\tinstalled on target\r\n1\.3.* \<PENDING\>\[\t \]+set_tracepoint|1\.2.* \<PENDING\>\[\t \]+set_tracepoint\r\n1\.3.* in func4.*\tinstalled on target).*" \
|
|
"tracepoint with two locations (unload)"
|
|
|
|
gdb_test_no_output "tstop"
|
|
|
|
gdb_test "tfind" "Found trace frame 0, tracepoint 1.*" "tfind frame 0"
|
|
gdb_test "tfind" "Found trace frame 1, tracepoint 1.*" "tfind frame 1"
|
|
gdb_test "tfind" "Found trace frame 2, tracepoint 1.*" "tfind frame 2"
|
|
gdb_test "tfind" "Target failed to find requested trace frame\\..*"
|
|
}
|
|
}
|
|
|
|
# Test that setting a tracepoint while the trace experiment is ongoing
|
|
# doesn't work when we force-disable the InstallInTrace RSP feature.
|
|
|
|
proc tracepoint_install_in_trace_disabled { trace_type } {
|
|
with_test_prefix "InstallInTrace disabled: $trace_type" {
|
|
global testfile
|
|
global srcfile
|
|
global pcreg
|
|
global gdb_prompt
|
|
|
|
clean_restart ${testfile}
|
|
if ![runto_main] {
|
|
fail "Can't run to main"
|
|
return -1
|
|
}
|
|
|
|
# This test only makes sense with the remote target.
|
|
if ![gdb_is_target_remote] {
|
|
return
|
|
}
|
|
|
|
gdb_test_no_output "delete break 1"
|
|
|
|
# Set a tracepoint we'll never meet. Just to avoid the
|
|
# complain after `tstart' later.
|
|
gdb_test "next" ".*"
|
|
gdb_test "trace main" \
|
|
"Tracepoint \[0-9\] at.* file .*$srcfile, line.*" \
|
|
"set tracepoint on main"
|
|
|
|
gdb_test "break marker" "Breakpoint.*at.* file .*$srcfile, line.*" \
|
|
"breakpoint on marker"
|
|
|
|
gdb_test_no_output "tstart"
|
|
|
|
# Force-disable the InstallInTrace RSP feature.
|
|
gdb_test_no_output "set remote install-in-trace-packet off"
|
|
|
|
# Set a tracepoint while a trace experiment is ongoing.
|
|
gdb_test "${trace_type} set_tracepoint" \
|
|
"racepoint .* at .* set_tracepoint.*" \
|
|
"set tracepoint on set_tracepoint"
|
|
|
|
gdb_trace_setactions "set action for tracepoint" "" \
|
|
"collect \$$pcreg" "^$"
|
|
|
|
# Make sure the tracepoint is _not_ installed on the target.
|
|
gdb_test "info trace" \
|
|
"Num Type\[ \]+Disp Enb Address\[ \]+What.*
|
|
\[0-9\]+\[\t \]+\(|fast \)tracepoint\[ \]+keep y.*installed on target.*\<MULTIPLE\>.*4\.1.* in func4.*not installed on target.*4\.2.* in func4.*not installed on target.*" \
|
|
"tracepoint is not installed"
|
|
|
|
gdb_test "continue" ".*Breakpoint.*marker.*at.*$srcfile.*" \
|
|
"continue to marker"
|
|
|
|
gdb_test_no_output "tstop"
|
|
|
|
# Nothing should have been collected.
|
|
gdb_test "tfind" "Target failed to find requested trace frame\\..*"
|
|
}
|
|
}
|
|
|
|
tracepoint_change_loc_1 "trace"
|
|
tracepoint_change_loc_2 "trace"
|
|
tracepoint_install_in_trace_disabled "trace"
|
|
|
|
# Re-compile test case with IPA.
|
|
set libipa [get_in_proc_agent]
|
|
gdb_load_shlibs $libipa
|
|
|
|
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable \
|
|
[list debug nowarnings shlib=$libipa shlib=$lib_sl1 shlib_load] ] != "" } {
|
|
untested change-loc.exp
|
|
return -1
|
|
}
|
|
|
|
tracepoint_change_loc_1 "ftrace"
|
|
tracepoint_change_loc_2 "ftrace"
|
|
tracepoint_install_in_trace_disabled "ftrace"
|