2007-10-09 Pedro Alves <pedro_alves@portugalmail.pt>
authorPedro Alves <palves@redhat.com>
Mon, 8 Oct 2007 23:15:55 +0000 (23:15 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 8 Oct 2007 23:15:55 +0000 (23:15 +0000)
* gdb.base/whatis.c (v_long_long, v_signed_long_long)
(v_unsigned_long_long, v_long_long_array)
(v_signed_long_long_array, v_unsigned_long_long_array)
(slong_long_addr, a_slong_long_addr, v_long_long_pointer)
(v_signed_long_long_pointer, v_unsigned_long_long_pointer)
[!NO_LONG_LONG]: New.
(t_struct, v_struct2, t_union, v_union2) [!NO_LONG_LONG]: Add
v_long_long_member.

(v_long_long_func, v_signed_long_long_func)
(v_unsigned_long_long_func) [!NO_LONG_LONG]: New.
(main) [!NO_LONG_LONG]: Initialize long long variants.

* gdb.base/whatis.exp: If board file requests no_long_long, build
test with NO_LONG_LONG defined.  Test long long, signed long long,
and unsigned long long variants but only if board file doesn't
disable it.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/whatis.c
gdb/testsuite/gdb.base/whatis.exp

index 0cf23a608d745736bb37452e74d7104d8d7ecc25..61b007adb5bca849765951c92e785a80beacb984 100644 (file)
@@ -1,3 +1,23 @@
+2007-10-09  Pedro Alves  <pedro_alves@portugalmail.pt>
+
+       * gdb.base/whatis.c (v_long_long, v_signed_long_long)
+       (v_unsigned_long_long, v_long_long_array)
+       (v_signed_long_long_array, v_unsigned_long_long_array)
+       (slong_long_addr, a_slong_long_addr, v_long_long_pointer)
+       (v_signed_long_long_pointer, v_unsigned_long_long_pointer)
+       [!NO_LONG_LONG]: New.
+       (t_struct, v_struct2, t_union, v_union2) [!NO_LONG_LONG]: Add
+       v_long_long_member.
+
+       (v_long_long_func, v_signed_long_long_func)
+       (v_unsigned_long_long_func) [!NO_LONG_LONG]: New.
+       (main) [!NO_LONG_LONG]: Initialize long long variants.
+
+       * gdb.base/whatis.exp: If board file requests no_long_long, build
+       test with NO_LONG_LONG defined.  Test long long, signed long long,
+       and unsigned long long variants but only if board file doesn't
+       disable it.
+
 2007-10-08  Pierre Muller  <muller@ics.u-strasbg.fr>
             Daniel Jacobowitz  <dan@codesourcery.com>
 
index 19eb4a9ac6edf500b516bd7eca7f6b553368548f..922c6ebfb5152eb4c176296335cb907eb9962e7a 100644 (file)
@@ -42,6 +42,12 @@ long         v_long;
 signed long    v_signed_long;
 unsigned long  v_unsigned_long;
 
+#ifndef NO_LONG_LONG
+long long              v_long_long;
+signed long long       v_signed_long_long;
+unsigned long long     v_unsigned_long_long;
+#endif
+
 float          v_float;
 double         v_double;
 
@@ -68,6 +74,12 @@ long         v_long_array[2];
 signed long    v_signed_long_array[2];
 unsigned long  v_unsigned_long_array[2];
 
+#ifndef NO_LONG_LONG
+long long              v_long_long_array[2];
+signed long long       v_signed_long_long_array[2];
+unsigned long long     v_unsigned_long_long_array[2];
+#endif
+
 float          v_float_array[2];
 double         v_double_array[2];
 
@@ -83,6 +95,10 @@ typedef unsigned short *ushort_addr;
 static ushort_addr a_ushort_addr;
 typedef signed long *slong_addr;
 static slong_addr a_slong_addr;
+#ifndef NO_LONG_LONG
+typedef signed long long *slong_long_addr;
+static slong_long_addr a_slong_long_addr;
+#endif
 
 char           *v_char_pointer;
 signed char    *v_signed_char_pointer;
@@ -100,6 +116,12 @@ long               *v_long_pointer;
 signed long    *v_signed_long_pointer;
 unsigned long  *v_unsigned_long_pointer;
 
+#ifndef NO_LONG_LONG
+long long              *v_long_long_pointer;
+signed long long       *v_signed_long_long_pointer;
+unsigned long long     *v_unsigned_long_long_pointer;
+#endif
+
 float          *v_float_pointer;
 double         *v_double_pointer;
 
@@ -110,6 +132,9 @@ struct t_struct {
     short      v_short_member;
     int                v_int_member;
     long       v_long_member;
+#ifndef NO_LONG_LONG
+    long long  v_long_long_member;
+#endif
     float      v_float_member;
     double     v_double_member;
 } v_struct1;
@@ -119,6 +144,9 @@ struct {
     short      v_short_member;
     int                v_int_member;
     long       v_long_member;
+#ifndef NO_LONG_LONG
+    long long  v_long_long_member;
+#endif
     float      v_float_member;
     double     v_double_member;
 } v_struct2;
@@ -130,6 +158,9 @@ union t_union {
     short      v_short_member;
     int                v_int_member;
     long       v_long_member;
+#ifndef NO_LONG_LONG
+    long long  v_long_long_member;
+#endif
     float      v_float_member;
     double     v_double_member;
 } v_union;
@@ -139,6 +170,9 @@ union {
     short      v_short_member;
     int                v_int_member;
     long       v_long_member;
+#ifndef NO_LONG_LONG
+    long long  v_long_long_member;
+#endif
     float      v_float_member;
     double     v_double_member;
 } v_union2;
@@ -161,6 +195,12 @@ long               v_long_func () { return (0); }
 signed long    v_signed_long_func () { return (0); }
 unsigned long  v_unsigned_long_func () { return (0); }
 
+#ifndef NO_LONG_LONG
+long long              v_long_long_func () { return (0); }
+signed long long       v_signed_long_long_func () { return (0); }
+unsigned long long     v_unsigned_long_long_func () { return (0); }
+#endif
+
 float          v_float_func () { return (0.0); }
 double         v_double_func () { return (0.0); }
 
@@ -229,7 +269,13 @@ int main ()
   v_long = 9;
   v_signed_long = 10;
   v_unsigned_long = 11;    
-  
+
+#ifndef NO_LONG_LONG
+  v_long_long = 12;
+  v_signed_long_long = 13;
+  v_unsigned_long_long = 14;
+#endif
+
   v_float = 100.0;
   v_double = 200.0;
 
@@ -250,6 +296,12 @@ int main ()
   v_signed_long_array[0] = v_signed_long;
   v_unsigned_long_array[0] = v_unsigned_long;
 
+#ifndef NO_LONG_LONG
+  v_long_long_array[0] = v_long_long;
+  v_signed_long_long_array[0] = v_signed_long_long;
+  v_unsigned_long_long_array[0] = v_unsigned_long_long;
+#endif
+
   v_float_array[0] = v_float;
   v_double_array[0] = v_double;
 
@@ -269,6 +321,12 @@ int main ()
   v_signed_long_pointer = &v_signed_long;
   v_unsigned_long_pointer = &v_unsigned_long;
 
+#ifndef NO_LONG_LONG
+  v_long_long_pointer = &v_long_long;
+  v_signed_long_long_pointer = &v_signed_long_long;
+  v_unsigned_long_long_pointer = &v_unsigned_long_long;
+#endif
+
   v_float_pointer = &v_float;
   v_double_pointer = &v_double;
 
index d9abfc1037584ab674f37a19f5da46c8850a4dfe..fa81da1a1aa2b5835fce8178ccc8c2136b9db959 100644 (file)
@@ -26,10 +26,16 @@ if $tracelevel {
 set prms_id 0
 set bug_id 0
 
+if [target_info exists no_long_long] {
+    set exec_opts [list debug additional_flags=-DNO_LONG_LONG]
+} else {
+    set exec_opts [list debug]
+}
+
 set testfile whatis
 set srcfile ${testfile}.c
 set binfile ${objdir}/${subdir}/${testfile}
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $exec_opts] != "" } {
      untested whatis.exp
      return -1
 }
@@ -124,6 +130,13 @@ gdb_test "whatis v_unsigned_long" \
     "type = (unsigned long|long unsigned int)" \
     "whatis unsigned long"
 
+
+if ![target_info exists no_long_long] {
+    gdb_test "whatis v_unsigned_long_long" \
+       "type = (unsigned long long|long long unsigned int)" \
+       "whatis unsigned long long"
+}
+
 gdb_test "whatis v_float" \
     "type = float" \
     "whatis float"
@@ -188,6 +201,12 @@ gdb_test "whatis v_unsigned_long_array" \
     "type = (unsigned (int|long|long int)|long unsigned int) \\\[2\\\]" \
     "whatis unsigned long array"
 
+if ![target_info exists no_long_long] {
+    gdb_test "whatis v_unsigned_long_long_array" \
+       "type = (unsigned long long|long long unsigned int) \\\[2\\\]" \
+       "whatis unsigned long array"
+}
+
 gdb_test "whatis v_float_array" \
     "type = float \\\[2\\\]" \
     "whatis float array"
@@ -251,6 +270,20 @@ gdb_test "whatis v_unsigned_long_pointer" \
     "type = (unsigned (int|long|long int)|long unsigned int) \\*" \
     "whatis unsigned long pointer"
 
+if ![target_info exists no_long_long] {
+    gdb_test "whatis v_long_long_pointer" \
+       "type = long long(| int) \\*" \
+       "whatis long long pointer"
+
+    gdb_test "whatis v_signed_long_long_pointer" \
+       "type = (signed |)long long(| int) \\*" \
+       "whatis signed long long pointer"
+
+    gdb_test "whatis v_unsigned_long_long_pointer" \
+       "type = (unsigned long long|long long unsigned int) \\*" \
+       "whatis unsigned long long pointer"
+}
+
 gdb_test "whatis v_float_pointer" \
     "type = float \\*" \
     "whatis float pointer"
@@ -353,6 +386,20 @@ gdb_test "whatis v_unsigned_long_func" \
     "type = (unsigned (int|long|long int)|long unsigned int) \\($void\\)" \
     "whatis unsigned long function"
 
+if ![target_info exists no_long_long] {
+    gdb_test "whatis v_long_long_func" \
+       "type = long long(| int) \\($void\\)" \
+       "whatis long long function"
+
+    gdb_test "whatis v_signed_long_long_func" \
+       "type = (signed |)long long(| int) \\($void\\)" \
+       "whatis signed long long function"
+
+    gdb_test "whatis v_unsigned_long_long_func" \
+       "type = (unsigned long long(| int)|long long unsigned int) \\($void\\)" \
+       "whatis unsigned long long function"
+}
+
 # Sun /bin/cc calls this a function returning double.
 if {!$gcc_compiled} then {setup_xfail "*-sun-sunos4*"}
 gdb_test "whatis v_float_func" \