* gdb.base/exprs.exp: Test casts to a pointer including over and
underflow.
This commit is contained in:
parent
08c44e659e
commit
4f823a66fa
|
@ -1,3 +1,8 @@
|
||||||
|
Wed Jul 12 18:14:29 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
|
* gdb.base/exprs.exp: Test casts to a pointer including over and
|
||||||
|
underflow.
|
||||||
|
|
||||||
Thu Jul 13 11:52:53 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
Thu Jul 13 11:52:53 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||||
|
|
||||||
* gdb.base/sizeof.exp, gdb.base/sizeof.c: New files. Compare GDB
|
* gdb.base/sizeof.exp, gdb.base/sizeof.c: New files. Compare GDB
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1997 Free Software Foundation, Inc.
|
# Copyright (C) 1988, 1990, 1991, 1992, 1994, 1997, 2000 Free
|
||||||
|
# Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -215,3 +216,44 @@ test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long == 0" "\\$\[0
|
||||||
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long != 0" "\\$\[0-9\]* = $true" "print v_unsigned_long != (unsigned long)~0" "\\$\[0-9\]* = $false" "print unsigned long != (~0)"
|
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long != 0" "\\$\[0-9\]* = $true" "print v_unsigned_long != (unsigned long)~0" "\\$\[0-9\]* = $false" "print unsigned long != (~0)"
|
||||||
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long < 0" "\\$\[0-9\]* = $false" "print v_unsigned_long < 0x7FFF" "\\$\[0-9\]* = $false" "print unsigned long < (~0)"
|
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long < 0" "\\$\[0-9\]* = $false" "print v_unsigned_long < 0x7FFF" "\\$\[0-9\]* = $false" "print unsigned long < (~0)"
|
||||||
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long > 0" "\\$\[0-9\]* = $true" "print v_unsigned_long > 0x7FFF" "\\$\[0-9\]* = $true" "print unsigned long > (~0)"
|
test_expr "set variable v_unsigned_long=~0" "print v_unsigned_long > 0" "\\$\[0-9\]* = $true" "print v_unsigned_long > 0x7FFF" "\\$\[0-9\]* = $true" "print unsigned long > (~0)"
|
||||||
|
#
|
||||||
|
# Test expressions with casts to a pointer.
|
||||||
|
# NB: Some architectures convert a ``NULL'' pointer into
|
||||||
|
# something else. Don't simply test for 0.
|
||||||
|
#
|
||||||
|
test_expr "set variable v_signed_char = 0" "print (void*)v_signed_char" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_signed_char"
|
||||||
|
test_expr "set variable v_signed_short = 0" "print (void*)v_signed_short" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_signed_short"
|
||||||
|
test_expr "set variable v_signed_int = 0" "print (void*)v_signed_int" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_signed_int"
|
||||||
|
test_expr "set variable v_signed_long = 0" "print (void*)v_signed_long" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_signed_long"
|
||||||
|
test_expr "set variable v_unsigned_char = 0" "print (void*)v_unsigned_char" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_unsigned_char"
|
||||||
|
test_expr "set variable v_unsigned_short = 0" "print (void*)v_unsigned_short" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_unsigned_short"
|
||||||
|
test_expr "set variable v_unsigned_int = 0" "print (void*)v_unsigned_int" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_unsigned_int"
|
||||||
|
test_expr "set variable v_unsigned_long = 0" "print (void*)v_unsigned_long" "\\$\[0-9\]* = .void \\*. $hex" "print (void*)v_unsigned_long"
|
||||||
|
#
|
||||||
|
# Test expressions with pointers out of range
|
||||||
|
#
|
||||||
|
# NB: For some architectures, all of sizeof(long),
|
||||||
|
# sizeof(long long) and sizeof(void*) are
|
||||||
|
# the same size so this test can not work.
|
||||||
|
#
|
||||||
|
send_gdb "print sizeof (long long) > sizeof (long)\n"
|
||||||
|
gdb_expect {
|
||||||
|
-re "\\$\[0-9\]* = $true" {
|
||||||
|
set ok 1
|
||||||
|
pass "sizeof (long long) > sizeof (long) (true)"
|
||||||
|
}
|
||||||
|
-re "\\$\[0-9\]* = $false" {
|
||||||
|
set ok 0
|
||||||
|
pass "sizeof (long long) > sizeof (long) (false)"
|
||||||
|
}
|
||||||
|
timeout {
|
||||||
|
set ok 0
|
||||||
|
fail "sizeof (long long) > sizeof (long) (timeout)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if [expr ! $ok] { setup_xfail "*-*-*" }
|
||||||
|
gdb_test "print (void*) ((long long) (unsigned long) -1 + 1)" \
|
||||||
|
"warning: value truncated.*" "truncate (void*) 0x00000000ffffffff + 1"
|
||||||
|
if [expr ! $ok] { setup_xfail "*-*-*" }
|
||||||
|
gdb_test "print (void*) (~((long long)(unsigned long) -1) - 1)" \
|
||||||
|
"warning: value truncated.*" "truncate (void*) 0xffffffff00000000 - 1"
|
||||||
|
|
Loading…
Reference in New Issue