mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-19 22:44:16 +08:00
Fix printing of Wide_Character & Wide_Wide_Character entities.
Wide_Characters and Wide_Wide_Characters are incorrectly printed. Consider for instance: Medium : Wide_Character := Wide_Character'Val(16#dead#); Trying to print the value of this variable yields: (gdb) p medium $1 = 57005 '["ad"]' The integer value is correct (57005 = 0xdead), but the character representation is not, it should be: $1 = 57005 '["dead"]' Same for Wide_Wide_Characters. There were two issues: (a) The first issue was in ada-valprint, where we were assuming that character types were 1 byte long; (b) The second problem was in c-valprint, where we were down-casting the integer value of the character to type `unsigned char', causing use to lose all but the lowest byte. gdb/ChangeLog: * ada-valprint. (ada_printchar): Use the correct type length in call to ada_emit_char. * c-valprint.c (c_val_print): Remove cast in call to LA_PRINT_CHAR.
This commit is contained in:
parent
7b64a93b03
commit
447b483c37
@ -1,3 +1,9 @@
|
||||
2011-01-14 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-valprint. (ada_printchar): Use the correct type length
|
||||
in call to ada_emit_char.
|
||||
* c-valprint.c (c_val_print): Remove cast in call to LA_PRINT_CHAR.
|
||||
|
||||
2011-01-14 Pierre Muller <muller@ics.u-strasbg.fr>
|
||||
|
||||
* solib-som.h (hpux_major_release): Declare variable here.
|
||||
|
@ -368,7 +368,7 @@ void
|
||||
ada_printchar (int c, struct type *type, struct ui_file *stream)
|
||||
{
|
||||
fputs_filtered ("'", stream);
|
||||
ada_emit_char (c, type, stream, '\'', 1);
|
||||
ada_emit_char (c, type, stream, '\'', TYPE_LENGTH (type));
|
||||
fputs_filtered ("'", stream);
|
||||
}
|
||||
|
||||
|
@ -536,9 +536,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
|
||||
if (c_textual_element_type (unresolved_type, options->format))
|
||||
{
|
||||
fputs_filtered (" ", stream);
|
||||
LA_PRINT_CHAR ((unsigned char) unpack_long (type,
|
||||
valaddr
|
||||
+ embedded_offset),
|
||||
LA_PRINT_CHAR (unpack_long (type, valaddr + embedded_offset),
|
||||
unresolved_type, stream);
|
||||
}
|
||||
}
|
||||
@ -561,7 +559,7 @@ c_val_print (struct type *type, const gdb_byte *valaddr,
|
||||
else
|
||||
fprintf_filtered (stream, "%d", (int) val);
|
||||
fputs_filtered (" ", stream);
|
||||
LA_PRINT_CHAR ((unsigned char) val, unresolved_type, stream);
|
||||
LA_PRINT_CHAR (val, unresolved_type, stream);
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user