Re: [PATCH] Add CTF support to GDB [5] Add test for CTF function

Yao Qi
2013-02-18T10:39:26Z

On 01/25/2013 07:09 PM, Hui Zhu wrote:
> +# Get the pathname of babeltrace and set it to $which_babeltrace.
> +# If host doesn't have babeltrace, $which_babeltrace will set to 0.
> +if [info exists BABELTRACE] {
> + set which_babeltrace ${BABELTRACE}
> +} else {
> + remote_exec host "which babeltrace" "" "/dev/null" "babeltrace.which"
> + remote_upload host "babeltrace.which"
> + set which_babeltrace [file_contents "babeltrace.which"]
> + remote_file build delete "babeltrace.which"
> + remote_file host delete "babeltrace.which"
> +}
> +
> +# Use $which_babeltrace check $ctfdir.
> +if { $which_babeltrace == "" } then {
> + unsupported "babeltrace check ctf directory"
> +} else {
> + # Let babeltrace output an error to make sure current way is right.
> + remote_exec host "$which_babeltrace not_exist" "" "/dev/null" "babeltrace.output"
> + remote_upload host "babeltrace.output"
> + set babeltrace_output [file_contents "babeltrace.output"]
> + remote_file build delete "babeltrace.output"
> + remote_file host delete "babeltrace.output"
> + if { [string last "\[error\]" $babeltrace_output] == -1 } then {
> + unsupported "cannot handle babeltrace output"
> + } else {
> + #Call $which_babeltrace check $ctfdir.
> + remote_exec host "$which_babeltrace $ctfdir" "" "/dev/null" "babeltrace.output"
> + remote_upload host "babeltrace.output"
> + set babeltrace_output [file_contents "babeltrace.output"]
> + remote_file build delete "babeltrace.output"
> + remote_file host delete "babeltrace.output"
> + if { [string last "\[error\]" $babeltrace_output] != -1 } then {
> + fail "babeltrace open ctf directory"
> + }
> + }
> +}

Unless I misunderstand it, it is still incorrect. IIUC, what you want
to do here is to run "babeltrace" to check your trace data, you can
simply do

remote_exec host "babeltrace $ctfdir < /dev/null" "" "/dev/null"
"output"

You can tell from the return value and "output" about
1) whether babeltrace is installed on host machine,
2) whether babeltrace is executed successfully.

DejaGNU is smart enough to know what is the host machine, and execute
this command there, which is determined by the board file. If you are
testing a native gdb, the command will be run in local machine, if you
are testing GDB in a remote host way (test a native mingw32 native gdb
on linux machine), this command will be executed on the remote host (a
windows machine).

--
Yao (é½å°§)