From 7c794afd542aa6cca8263d137abc3767a48019f1 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 20 Jan 2021 22:02:33 +0100 Subject: [PATCH] [gdb/testsuite] Fix gdb.python/py-format-string.exp with -m32 When running test-case gdb.python/py-format-string.exp with target board unix/-m32, we run into: ... (gdb) python print \ (gdb.parse_and_eval ('a_base_ref').format_string (deref_refs=True))^M @0xffffc468: {_vptr.Base = 0x80487e0 , a = 42, \ static a_static_member = 2019}^M (gdb) FAIL: gdb.python/py-format-string.exp: format_string: \ lang_cpp: a_base_ref with option deref_refs: deref_refs=true ... while with -m64, we have instead: ... @0x7fffffffd170: {_vptr.Base = 0x400910 , a = 42, \ static a_static_member = 2019}^M (gdb) PASS: gdb.python/py-format-string.exp: format_string: \ lang_cpp: a_base_ref with option deref_refs: deref_refs=true ... The vtable contains pointer entries which are 4-byte for -m32 and 8-byte for -m64, so it's not surprising the offsets (Deriv+8 vs. Deriv+16) differ. Fix this by allow Deriv+$decimal. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-20 Tom de Vries * gdb.python/py-format-string.exp: Allow Deriv+$decimal as vtable offset. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.python/py-format-string.exp | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b197b0b4e5a..a8a6de92dc8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2021-01-20 Tom de Vries + + * gdb.python/py-format-string.exp: Allow Deriv+$decimal as vtable + offset. + 2021-01-20 Tom de Vries * lib/gdb.exp (skip_rust_tests): Skip if multilib_flags contains -m32. diff --git a/gdb/testsuite/gdb.python/py-format-string.exp b/gdb/testsuite/gdb.python/py-format-string.exp index 8163df7ad56..160e9019cda 100644 --- a/gdb/testsuite/gdb.python/py-format-string.exp +++ b/gdb/testsuite/gdb.python/py-format-string.exp @@ -534,6 +534,7 @@ proc test_deref_refs {} { global current_lang global default_pointer_regexp global default_ref_regexp + global decimal check_var_with_bool_opt "deref_refs" "a_point_t" check_var_with_bool_opt "deref_refs" "a_point_t_pointer" @@ -551,7 +552,7 @@ proc test_deref_refs {} { if { $current_lang == "c++" } { check_var_with_bool_opt "deref_refs" "a_point_t_ref" check_var_with_bool_opt "deref_refs" "a_base_ref" \ - "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} , a = 42, static a_static_member = 2019\\}" + "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} , a = 42, static a_static_member = 2019\\}" } } @@ -923,6 +924,7 @@ proc test_mixed {} { global current_lang global default_ref_regexp global default_pointer_regexp + global decimal check_format_string "a_point_t" \ "raw=True, format='x'" \ @@ -947,7 +949,7 @@ proc test_mixed {} { check_format_string "a_base_ref" \ "deref_refs=True, static_members=False" \ - "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} , a = 42\\}" + "${default_ref_regexp}: \\{_vptr\[.\$\]Base = ${default_pointer_regexp} , a = 42\\}" } } -- 2.30.2