diff options
-rw-r--r-- | gdb/testsuite/gdb.base/nodebug.exp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gdb/testsuite/gdb.base/nodebug.exp b/gdb/testsuite/gdb.base/nodebug.exp index 68a21eb..1deed59 100644 --- a/gdb/testsuite/gdb.base/nodebug.exp +++ b/gdb/testsuite/gdb.base/nodebug.exp @@ -170,6 +170,7 @@ if [nodebug_runto inner] then { set unk_type_re "has unknown type.*to its declared type" set ptr_math_re "Cannot perform pointer math on incomplete type \"$data_var_type\", try casting to a known type, or void \\*\\." set not_mem_re "Attempt to take address of value not located in memory\\." + set any_label_regexp "<\[^>\]+>" set dataglobal_unk_re "dataglobal.*$unk_type_re" @@ -183,7 +184,7 @@ if [nodebug_runto inner] then { {"dataglobal + 1" "" $dataglobal_unk_re $dataglobal_unk_re} {"&dataglobal" "" "\\($data_var_type \\*\\) $hex <dataglobal>" " = $data_var_type \\*"} {"&dataglobal + 1" "" $ptr_math_re $ptr_math_re} - {"(int *) &dataglobal + 1" "" " = \\(int \\*\\) $hex <datalocal>" "int \\*"} + {"(int *) &dataglobal + 1" "" " = \\(int \\*\\) $hex $any_label_regexp" "int \\*"} {"&(int) dataglobal + 1" "" $not_mem_re $not_mem_re} {"&dataglobal, &dataglobal" "" "\\($data_var_type \\*\\) $hex <dataglobal>" " = $data_var_type \\*"} {"*dataglobal" "" $dataglobal_unk_re $dataglobal_unk_re} @@ -214,7 +215,14 @@ if [nodebug_runto inner] then { gdb_test "whatis $exp" $whatis gdb_test "ptype $exp" $whatis } - + + # Check that pointer arithmetic works as expected. + set addr1 [get_hexadecimal_valueof "&dataglobal" "*UNKNOWN*"] + set addr2 [get_hexadecimal_valueof "(int *) &dataglobal + 1" "*UNKNOWN*"] + set offset [expr $addr2 - $addr1] + set int_size [get_integer_valueof "sizeof (int)" "*UNKNOWN*"] + gdb_assert { $offset == $int_size } + # The only symbol xcoff puts out for statics is for the TOC entry. # Possible, but hairy, for gdb to deal. Right now it doesn't, it # doesn't know the variables exist at all. |