* gdb.base/long_long.exp: Detect size of pointer. Take into
authorStephane Carrez <stcarrez@nerim.fr>
Tue, 17 Jul 2001 22:19:49 +0000 (22:19 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Tue, 17 Jul 2001 22:19:49 +0000 (22:19 +0000)
account 2-byte pointers when testing for p/a results.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/long_long.exp

index ad4b80687d2e40d66d6090ecc99ff5b736e6e384..844e4c028b5c0011a1baf6af6efd525abf0663e1 100644 (file)
@@ -1,3 +1,8 @@
+2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
+
+       * gdb.base/long_long.exp: Detect size of pointer.  Take into
+       account 2-byte pointers when testing for p/a results.
+
 2001-07-17  Stephane Carrez  <Stephane.Carrez@worldnet.fr>
 
        * gdb.base/remote.c (RANDOM_DATA_SIZE): New define, defaults to 48K 
index 69a456bfd46b6f1688472b9d732569cf939a51de..ff8a1f91a31a8d21f16fbca146986c92274a7723 100644 (file)
@@ -85,6 +85,15 @@ gdb_expect {
     default { }
 }
 
+# Detect targets with 2-byte pointers.  Assume all others use 4-bytes.
+set sizeof_ptr 4
+send_gdb "print sizeof(void*)\n"
+gdb_expect {
+    -re ".* = 2.*$gdb_prompt $" { set sizeof_ptr 2 }
+    -re ".*$gdb_prompt $" { }
+    default { }
+}
+
 # Detect targets with 4-byte shorts.  Assume all others use 2-bytes.
 
 set sizeof_short 2
@@ -130,7 +139,11 @@ gdb_test "p/d oct" ".*-6399925985474168457.*"
 gdb_test "p/u oct" ".*12046818088235383159.*"
 gdb_test "p/o oct" ".*.*"
 gdb_test "p/t oct" ".*1010011100101110111001010011100101110111000001010011100101110111.*"
-gdb_test "p/a oct" ".*0x.*77053977.*"
+if { $sizeof_ptr == 2 } {
+  gdb_test "p/a oct" ".*0x.*3977.*"
+} else {
+  gdb_test "p/a oct" ".*0x.*77053977.*"
+}
 gdb_test "p/c oct" ".*'w'.*"
 
 if { $sizeof_double == 8 } {
@@ -166,7 +179,13 @@ if { $target_bigendian_p } {
        gdb_test "p/u *(int *)&oct" ".*2804868409.*"
        gdb_test "p/o *(int *)&oct" ".*024713562471.*"
        gdb_test "p/t *(int *)&oct" ".*10100111001011101110010100111001.*"
-       gdb_test "p/a *(int *)&oct" ".*0xf*a72ee539.*"
+
+       if { $sizeof_ptr == 2 } {
+           gdb_test "p/a *(int *)&oct" ".*0xe539.*"
+       } else {
+           gdb_test "p/a *(int *)&oct" ".*0xf*a72ee539.*"
+       }
+
        gdb_test "p/c *(int *)&oct" ".*57 '9'.*"
        gdb_test "p/f *(int *)&oct" ".*-2.42716126e-15.*"
 
@@ -176,7 +195,12 @@ if { $target_bigendian_p } {
        gdb_test "p/u *(int *)&oct" ".*42798.*"
        gdb_test "p/o *(int *)&oct" ".*0123456.*"
        gdb_test "p/t *(int *)&oct" ".*1010011100101110.*"
-       gdb_test "p/a *(int *)&oct" ".*0xffffa72e.*"
+
+       if { $sizeof_ptr == 2 } {
+           gdb_test "p/a *(int *)&oct" ".*0xa72e.*"
+       } else {
+           gdb_test "p/a *(int *)&oct" ".*0xffffa72e.*"
+       }
        gdb_test "p/c *(int *)&oct" ".*46 '.'.*"
        gdb_test "p/f *(int *)&oct" ".*-22738.*"
 
@@ -187,7 +211,11 @@ if { $target_bigendian_p } {
        gdb_test "p/u *(short *)&oct" ".*42798.*"
        gdb_test "p/o *(short *)&oct" ".*0123456.*"
        gdb_test "p/t *(short *)&oct" ".*1010011100101110.*"
-       gdb_test "p/a *(short *)&oct" ".*0xf*ffffa72e.*"
+       if { $sizeof_ptr == 2 } {
+           gdb_test "p/a *(short *)&oct" ".*0xa72e.*"
+       } else {
+           gdb_test "p/a *(short *)&oct" ".*0xf*ffffa72e.*"
+       }
        gdb_test "p/c *(short *)&oct" ".* 46 '.'.*"
        gdb_test "p/f *(short *)&oct" ".*-22738.*"
     } else {
@@ -205,7 +233,11 @@ if { $target_bigendian_p } {
     gdb_test "x/u &oct" ".*2804868409.*"
     gdb_test "x/o &oct" ".*024713562471.*"
     gdb_test "x/t &oct" ".*10100111001011101110010100111001.*"
-    gdb_test "x/a &oct" ".*0xa72ee539.*"
+    if { $sizeof_ptr == 2 } {
+       gdb_test "x/a &oct" ".*0xa72e.*"
+    } else {
+       gdb_test "x/a &oct" ".*0xa72ee539.*"
+    }
     gdb_test "x/c &oct" ".*-89 .*"
     # FIXME GDB's output is correct, but this longer match fails.
     # gdb_test "x/c &oct" ".*-89 '\\\\247'.*"