>>>>> "Tom" == Tom Tromey via Gdb-patches writes: Tom> Does this impact any test? I cannot be 100% sure because i get slightly different test results on consecutive runs even without any changes, but it seems the only failures appearing in gdb.sum diff (with/without the patch) are timeouts and some server stuff, and there's like 2-5 of them. So we're probably fine. Tom> If not, can a test be written for it? Sure, see a diff in the end. Tom> I guess from context the scenario is something like: "print *23", Tom> and here gdb acts like you typed "print *(int*)23"? That's right, and my point is to make it act like "print *(intptr_t*)23". Because int is intptr_t everywhere except 64-bit. Here's a diff for the test: --- gdb/testsuite/gdb.base/pointers.c | 5 ++++- gdb/testsuite/gdb.base/pointers.exp | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/pointers.c b/gdb/testsuite/gdb.base/pointers.c index 96f2b52f5e8..d3a9689b46a 100644 --- a/gdb/testsuite/gdb.base/pointers.c +++ b/gdb/testsuite/gdb.base/pointers.c @@ -1,4 +1,4 @@ - +#include #if !defined (__STDC__) && !defined (_AIX) #define signed /**/ #endif @@ -71,6 +71,8 @@ float ** ptr_to_ptr_to_float; int y; +const intptr_t intptr_max = INTPTR_MAX; +intptr_t intptr_p; typedef long k[5]; @@ -170,6 +172,7 @@ void dummy() v_float_array[0] = v_float; v_double_array[0] = v_double; + intptr_p = (intptr_t)&intptr_max; } diff --git a/gdb/testsuite/gdb.base/pointers.exp b/gdb/testsuite/gdb.base/pointers.exp index d72fa5ad613..5787b873cca 100644 --- a/gdb/testsuite/gdb.base/pointers.exp +++ b/gdb/testsuite/gdb.base/pointers.exp @@ -202,6 +202,10 @@ gdb_test "print *( *(matrix+1) +2)" " = 5" \ gdb_test "print **ptr_to_ptr_to_float" " = 100" \ "print through ptr to ptr" +# when we attempt to dereference an integer, +# it should be treated as a pointer to intptr_t. +gdb_test "print *intptr_p == intptr_max" " = 1" "deref size is intptr" + # tests for pointers # with elementary type variables and pointers. # -- 2.41.0 On Thu, 27 Jul 2023 at 19:15, Tom Tromey wrote: > >>>>> "Denis" == Denis Revunov via Gdb-patches > writes: > > Denis> The code which makes default dereference type an int was intruduced > in > Denis> gdb-3.4(1c997a4ae869) in 1989, 10 years before AMD64 was released. > With > Denis> current adoption of 64-bit it makes sense to change default > dereference > Denis> size to match the native address size, which will enable us to > easily > Denis> inspect .got entries and follow chains of pointers on 64-bit systems > Denis> without excessive casting. This change won't affect 32-and-less bit > Denis> systems since intptr is the same as int there. > > Does this impact any test? > If not, can a test be written for it? > > I guess from context the scenario is something like: "print *23", > and here gdb acts like you typed "print *(int*)23"? > > Tom >