[gdb/testsuite] Improve probe detection in gdb.base/break-probes.exp
[binutils-gdb.git] / gdb / testsuite / gdb.base / break-probes.exp
index ac10ac5a3b10b8b8bf8aed5f37b136d8246dffeb..b633ae6f4e9a82fa3a95e0d10bf887cd4a5cb7d2 100644 (file)
@@ -23,13 +23,6 @@ set libname $testfile-solib
 set srcfile_lib $srcdir/$subdir/$libname.c
 set binfile_lib [standard_output_file $libname.so]
 
-if { [istarget "*bsd*"] } {
-  set normal_bp "r_debug_state"
-} else {
-  set normal_bp "_dl_debug_state"
-}
-set probes_bp "dl_main"
-
 if { [gdb_compile_shlib $srcfile_lib $binfile_lib {}] != "" } {
     untested "failed to compile shared library"
     return -1
@@ -47,14 +40,27 @@ gdb_test_no_output "set stop-on-solib-events 1"
 gdb_run_cmd
 gdb_test "" ".*Stopped due to shared library event.*"
 
-# XFAIL if we are not using probes
-set test "ensure using probes"
+# Check if we're using probes.
 set using_probes 0
-gdb_test_multiple "bt" $test {
-    -re "#0 +\[^\r\n\]*\\m(__GI_)?$normal_bp\\M.*$gdb_prompt $" {
+
+# Get PC.
+set pc ""
+gdb_test_multiple "p /x \$pc" "" {
+    -re -wrap " = ($hex)" {
+       set pc $expect_out(1,string)
+    }
+    -re -wrap "" {
     }
-    -re "#0 +\[^\r\n\]*\\m(__GI_)?$probes_bp\\M.*$gdb_prompt $" {
-       pass $test
+}
+if { $pc == "" } {
+    unsupported "Couldn't get $pc"
+    return -1
+}
+regsub "0x0*" $pc "" pc
+
+# Verify that pc is at info_start probe address.
+gdb_test_multiple "info probes stap rtld" "" {
+    -re -wrap "init_start +0x0*$pc .*" {
        set using_probes 1
     }
     -re -wrap "" {