mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-23 13:21:43 +08:00
[Ada] print null array pointer as 0x0' rather than
(null)'
Trying to print a variable defined as an access to an unconstrained array: type String_Access is access String; S1 : String_Access; If that variable is null, then GDB prints its value in an odd way: (gdb) print S1 $1 = (string_bug.string_access) (null) ^^^^^^ This patch changes the debugger behavior to print the pointer using the same output we'd use for any null pointer: (gdb) print S1 $1 = (string_bug.string_access) 0x0 It also adds an assert, helping us verify an assumption. gdb/ChangeLog: * ada-valprint.c (ada_val_print_1): Print null array pointers as `0x0' rather than `(null)'. Add assertion. gdb/testsuite/ChangeLog: * gdb.ada/arrayptr/foo.adb: Add new local variable Null_String. * gdb.ada/arrayptr.exp: Add test printing that new variable.
This commit is contained in:
parent
720d1a4025
commit
9e87a40907
@ -1,3 +1,8 @@
|
||||
2010-12-29 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-valprint.c (ada_val_print_1): Print null array pointers as
|
||||
`0x0' rather than `(null)'. Add assertion.
|
||||
|
||||
2010-12-29 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-lang.h (ada_coerce_to_simple_array): Add declaration.
|
||||
|
@ -690,7 +690,8 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr0,
|
||||
val = ada_coerce_to_simple_array (val);
|
||||
if (val == NULL)
|
||||
{
|
||||
fprintf_filtered (stream, "(null)");
|
||||
gdb_assert (TYPE_CODE (type) == TYPE_CODE_TYPEDEF);
|
||||
fprintf_filtered (stream, "0x0");
|
||||
retn = 0;
|
||||
}
|
||||
else
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-12-29 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdb.ada/arrayptr/foo.adb: Add new local variable Null_String.
|
||||
* gdb.ada/arrayptr.exp: Add test printing that new variable.
|
||||
|
||||
2010-12-29 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdb.ada/lang_switch.exp: Correct expected parameter value.
|
||||
|
@ -44,3 +44,4 @@ gdb_test "print string_p" \
|
||||
"= \\(foo\\.string_access\\) 0x\[0-9a-zA-Z\]+" \
|
||||
"print string_p"
|
||||
|
||||
gdb_test "print null_string" "= \\(foo\\.string_access\\) 0x0"
|
||||
|
@ -19,6 +19,8 @@ procedure Foo is
|
||||
type String_Access is access String;
|
||||
|
||||
String_P : String_Access := new String'("Hello");
|
||||
Null_String : String_Access := null;
|
||||
begin
|
||||
Do_Nothing (String_P'Address); -- STOP
|
||||
Do_Nothing (Null_String'Address);
|
||||
end Foo;
|
||||
|
Loading…
Reference in New Issue
Block a user