]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Remove assumption from py-symbol.exp
authorTom Tromey <tom@tromey.com>
Thu, 13 Feb 2025 03:43:38 +0000 (20:43 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 13 Feb 2025 21:43:56 +0000 (14:43 -0700)
The current py-symbol.exp test makes an assumption about which symbol
will be returned first.  I don't think gdb should really make promises
about the order in which the symbols are listed, though, and a series
I am working on changes this behavior.  This patch changes the test to
merely ensure that both symbols are returned.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
gdb/testsuite/gdb.python/py-symbol.exp

index 40f9038c67c4cbd352ad8b4a0117f97d050e8e5d..55cdebe51243c40f8a4f39bc2952c6b15e8a03a1 100644 (file)
@@ -149,10 +149,12 @@ gdb_breakpoint "function_in_other_file"
 gdb_continue_to_breakpoint "function_in_other_file"
 gdb_test "python print (gdb.lookup_static_symbol ('rr').value ())" "99" \
     "print value of rr from other file"
-gdb_test "python print (gdb.lookup_static_symbols ('rr')\[0\].value ())" "99" \
-    "print value of gdb.lookup_static_symbols ('rr')\[0\], from the other file"
-gdb_test "python print (gdb.lookup_static_symbols ('rr')\[1\].value ())" "42" \
-    "print value of gdb.lookup_static_symbols ('rr')\[1\], from the other file"
+# GDB doesn't really guarantee the order of these, so sort the values.
+gdb_test_no_output "python rrs = gdb.lookup_static_symbols ('rr')" \
+    "fetch all rr symbols, from the other file"
+gdb_test "python print (sorted(\[int(x.value()) for x in rrs\]))" \
+    "\\\[42, 99\\\]" \
+    "print values of all 'rr' symbols, from the other file"
 
 # Now continue back to the first source file.
 set linenum [gdb_get_line_number "Break at end."]
@@ -164,10 +166,12 @@ gdb_py_test_silent_cmd "python frame = gdb.selected_frame()" "Get Frame" 0
 # static symbol from the second source file.
 gdb_test "python print (gdb.lookup_static_symbol ('rr').value ())" "42" \
     "print value of rr from main file"
-gdb_test "python print (gdb.lookup_static_symbols ('rr')\[0\].value ())" "99" \
-    "print value of gdb.lookup_static_symbols ('rr')\[0\], from the main file"
-gdb_test "python print (gdb.lookup_static_symbols ('rr')\[1\].value ())" "42" \
-    "print value of gdb.lookup_static_symbols ('rr')\[1\], from the main file"
+# This should be consistent with the first file.
+gdb_test_no_output "python rrs = gdb.lookup_static_symbols ('rr')" \
+    "fetch all rr symbols, from the main file"
+gdb_test "python print (sorted(\[int(x.value()) for x in rrs\]))" \
+    "\\\[42, 99\\\]" \
+    "print values of all 'rr' symbols, from the main file"
 
 # Test is_variable attribute.
 gdb_py_test_silent_cmd "python a = gdb.lookup_symbol(\'a\')" "Get variable a" 0