-Constructing Foo(1) "static_foo"
-Constructing Foo(2) "static_foo"
-Constructing Foo(3) "automatic_foo"
-Constructing Foo(4) "default-foo"
-Constructing Foo(5) "other_foo1"
-Constructing Foo(6) "other_foo2"
-Copying Foo(5) "other_foo1" to Foo(6)
-Destructing Foo(6) "other_foo1" (remaining foos: 5)
-Destructing Foo(5) "other_foo1" (remaining foos: 4)
-Destructing Foo(4) "default-foo" (remaining foos: 3)
-Destructing Foo(3) "automatic_foo" (remaining foos: 2)
-Destructing Foo(2) "static_foo" (remaining foos: 1)
-Destructing Foo(1) "static_foo" (remaining foos: 0)
+Constructing Foo\(1\) "static_foo"
+Constructing Foo\(2\) "static_foo"
+Constructing Foo\(3\) "automatic_foo"
+Constructing Foo\(4\) "default-foo"
+Constructing Foo\(5\) "other_foo1"
+Constructing Foo\(6\) "other_foo2"
+Copying Foo\(5\) "other_foo1" to Foo\(6\)
+Destructing Foo\(6\) "other_foo1" \(remaining foos: 5\)
+Destructing Foo\(5\) "other_foo1" \(remaining foos: 4\)
+Destructing Foo\(4\) "default-foo" \(remaining foos: 3\)
+Destructing Foo\(3\) "automatic_foo" \(remaining foos: 2\)
+Destructing Foo\(2\) "static_foo" \(remaining foos: 1\)
+Destructing Foo\(1\) "static_foo" \(remaining foos: 0\)
-Constructing Foo(1) "static_foo"
-Constructing Foo(2) "static_foo"
-Constructing Foo(3) "automatic_foo"
-Constructing Foo(4) "default-foo"
-Initializing Foo(5) "default-foo" with Foo(4)
-Destructing Foo(4) "default-foo" (remaining foos: 4)
-Constructing Foo(5) "other_foo1"
-Constructing Foo(6) "other_foo2"
-Copying Foo(5) "other_foo1" to Foo(6)
-Destructing Foo(6) "other_foo1" (remaining foos: 5)
-Destructing Foo(5) "other_foo1" (remaining foos: 4)
-Destructing Foo(5) "default-foo" (remaining foos: 3)
-Destructing Foo(3) "automatic_foo" (remaining foos: 2)
-Destructing Foo(2) "static_foo" (remaining foos: 1)
-Destructing Foo(1) "static_foo" (remaining foos: 0)
+Constructing Foo\(1\) "static_foo"
+Constructing Foo\(2\) "static_foo"
+Constructing Foo\(3\) "automatic_foo"
+Constructing Foo\(4\) "default-foo"
+Initializing Foo\(5\) "default-foo" with Foo\(4\)
+Destructing Foo\(4\) "default-foo" \(remaining foos: 4\)
+Constructing Foo\(5\) "other_foo1"
+Constructing Foo\(6\) "other_foo2"
+Copying Foo\(5\) "other_foo1" to Foo\(6\)
+Destructing Foo\(6\) "other_foo1" \(remaining foos: 5\)
+Destructing Foo\(5\) "other_foo1" \(remaining foos: 4\)
+Destructing Foo\(5\) "default-foo" \(remaining foos: 3\)
+Destructing Foo\(3\) "automatic_foo" \(remaining foos: 2\)
+Destructing Foo\(2\) "static_foo" \(remaining foos: 1\)
+Destructing Foo\(1\) "static_foo" \(remaining foos: 0\)
set test2 "cdtest with -Ur"
# This test requires running the executable generated by ld.
-if ![isnative] {
- return
-}
-
-if { [which $CXX_FOR_TARGET] == 0 } {
+if { [which $CXX_FOR_TARGET] == 0 || ![check_execution_available] } {
untested $test1
untested $test2
return
if ![ld_link $CC_FOR_TARGET tmpdir/cdtest "$CFLAGS_FOR_TARGET tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o"] {
fail $test1
} else {
- send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"
- verbose "tmpdir/cdtest >tmpdir/cdtest.out"
- catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output
+ set failed 0
- if ![string match "" $exec_output] then {
+ send_log "Running: tmpdir/cdtest\n"
+ verbose "Running: tmpdir/cdtest"
+ set state [remote_load target tmpdir/cdtest]
+ set status [lindex $state 0]
+ set exec_output [lindex $state 1]
+
+ if { $status != "pass" } {
send_log "$exec_output\n"
verbose "$exec_output" 1
-
- fail $test1
+ set failed 1
} else {
- send_log "diff tmpdir/cdtest.out $expected_output\n"
- verbose "diff tmpdir/cdtest.out $expected_output"
- catch "exec diff tmpdir/cdtest.out $expected_output" exec_output
- set exec_output [prune_warnings $exec_output]
-
- if ![string match "" $exec_output] then {
- send_log "$exec_output\n"
- verbose "$exec_output" 1
+ set output_filename "tmpdir/cdtest.out"
+ set_file_contents $output_filename $exec_output
+ send_log [file_contents $output_filename]
+ verbose [file_contents $output_filename] 2
+ if [regexp_diff $output_filename $expected_output] {
send_log "Checking against Named Return Value optimization\n"
verbose "Checking against Named Return Value optimization" 1
set expected_output "$srcdir/$subdir/cdtest-nrv.dat"
-
- send_log "diff tmpdir/cdtest.out $expected_output\n"
- verbose "diff tmpdir/cdtest.out $expected_output"
- catch "exec diff tmpdir/cdtest.out $expected_output" exec_output
- set exec_output [prune_warnings $exec_output]
+ if [regexp_diff $output_filename $expected_output] {
+ set failed 1
+ }
}
+ }
- if [string match "" $exec_output] then {
- pass $test1
- } else {
- send_log "$exec_output\n"
- verbose "$exec_output" 1
-
- fail $test1
- }
+ if { $failed } {
+ fail $test1
+ } else {
+ pass $test1
}
}
if ![ld_link $CC_FOR_TARGET tmpdir/cdtest "$CFLAGS_FOR_TARGET tmpdir/cdtest.o"] {
fail $test2
} else {
- send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"
- verbose "tmpdir/cdtest >tmpdir/cdtest.out"
- catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output
+ set failed 0
+
+ send_log "Running: tmpdir/cdtest\n"
+ verbose "Running: tmpdir/cdtest"
+ set state [remote_load target tmpdir/cdtest]
+ set status [lindex $state 0]
+ set exec_output [lindex $state 1]
- if ![string match "" $exec_output] then {
+ if { $status != "pass" } {
send_log "$exec_output\n"
- verbose "$exec_output" 1
+ verbose "$exec_output" 1
+ set failed 1
+ } else {
+ set output_filename "tmpdir/cdtest.out"
+ set_file_contents $output_filename $exec_output
+ send_log [file_contents $output_filename]
+ verbose [file_contents $output_filename] 2
+ if [regexp_diff $output_filename $expected_output] {
+ set failed 1
+ }
+ }
+
+ if { $failed } {
fail $test2
} else {
- send_log "diff tmpdir/cdtest.out $expected_output\n"
- verbose "diff tmpdir/cdtest.out $expected_output"
- catch "exec diff tmpdir/cdtest.out $expected_output" exec_output
- set exec_output [prune_warnings $exec_output]
-
- if [string match "" $exec_output] then {
- pass $test2
- } else {
- send_log "$exec_output\n"
- verbose "$exec_output" 1
-
- fail $test2
- }
+ pass $test2
}
}
}