[PATCH][gdb] Fix python selftest with python 3.11

Tom de Vries via Gdb-patches
2022-07-21T11:13:55Z

Hi,

With python 3.11 I noticed:
...
$ gdb -q -batch -ex "maint selftest python"
Running selftest python.
Self test failed: self-test failed at gdb/python/python.c:2246
Ran 1 unit tests, 1 failed
...

In more detail:
...
(gdb) p output
$5 = "Traceback (most recent call last):\n File \"<string>\", line 0, \
in <module>\nKeyboardInterrupt\n"
(gdb) p ref_output
$6 = "Traceback (most recent call last):\n File \"<string>\", line 1, \
in <module>\nKeyboardInterrupt\n"
...

Fix this by also allowing line number 0.

Tested on x86_64-linux.

This should hopefully fix buildbot builder gdb-rawhide-x86_64.

Any comments?

Thanks,
- Tom

[gdb] Fix python selftest with python 3.11

---
gdb/python/python.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gdb/python/python.c b/gdb/python/python.c
index 8fa935c8286..365859a2e4e 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -2240,10 +2240,13 @@ test_python ()
SELF_CHECK (*e.message == "Error while executing Python code.");
}
SELF_CHECK (saw_exception);
- std::string ref_output("Traceback (most recent call last):\n"
- " File \"<string>\", line 1, in <module>\n"
- "KeyboardInterrupt\n");
- SELF_CHECK (output == ref_output);
+ std::string ref_output_0("Traceback (most recent call last):\n"
+ " File \"<string>\", line 0, in <module>\n"
+ "KeyboardInterrupt\n");
+ std::string ref_output_1("Traceback (most recent call last):\n"
+ " File \"<string>\", line 1, in <module>\n"
+ "KeyboardInterrupt\n");
+ SELF_CHECK (output == ref_output_0 || output == ref_output_1);
}

#undef CMD