set test "vta-test" set ::result_string {a: {17, 23} i: 0x6 a: {17, 23} i: 0xdeadbeef a: {17, 23} i: 0xdeadbeef87654321} proc dyninst_kfails {index} { # The dyninst runtime isn't multi-arch, it only works on the # native architecture. PR14490. if {! [all_compile_flag_native_p $index]} { setup_kfail 14490 "*-*-*" } } for {set i 0} {$i < [all_compile_flags]} {incr i} { set extra_flag [all_compile_flag $i] set extra_name [all_compile_flag_name $i] verbose "testing vta-$extra_name" set test_flags "additional_flags=-g" set test_flags "$test_flags [sdt_includes]" set test_flags "$test_flags $extra_flag" set res [target_compile $srcdir/$subdir/$test.c $test-$extra_name.exe executable "$test_flags"] if { $res != "" } { verbose "target_compile $test-$extra_name failed: $res" 2 fail "$test.c compile $extra_name" untested "$test-$extra_name" continue } else { pass "$test.c compile $extra_name" } # Test only when we are running an install test (can execute) and # when gcc vta generated DW_OP_{stack|implicit}_values for us. See # PR10417. if {[installtest_p]} { # See if GCC produce DW_OP_implicit_value and/or # DW_OP_stack_value for us. set regexp {[stack|implicit]_value} if {![catch {exec readelf --debug-dump=loc $test-$extra_name.exe \ | egrep "$regexp"}]} { foreach runtime [get_runtime_list] { if {$runtime != ""} { if { [info procs ${runtime}_kfails] ne "" } { ${runtime}_kfails $i } stap_run3 $test-$extra_name-$runtime \ $srcdir/$subdir/$test.stp ./$test-$extra_name.exe \ -c ./$test-$extra_name.exe --runtime=$runtime } elseif {[uprobes_p]} { stap_run3 $test-$extra_name $srcdir/$subdir/$test.stp \ ./$test-$extra_name.exe -c ./$test-$extra_name.exe } else { untested "$test-$extra_name" } } } else { untested "$test-$extra_name (no-gcc-vta)" } } else { untested "$test-$extra_name" } catch {exec rm -f $test-$extra_name.exe} }