mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-02 19:46:09 +08:00
gdb: Support printf 'z' size modifier
The gdb format mechanism doesn't currently support the 'z' size modifier, there are a few places in GDB where this is used. Instead of removing these uses lets just add support to GDB for using 'z'. I found this issue when trying to use some of the debug output. Before this commit: (gdb) set debug dwarf-line 9 (gdb) file test Reading symbols from test... Unrecognized format specifier 'z' in printf (No debugging symbols found in test) (gdb) After this commit: (gdb) set debug dwarf-line 9 (gdb) file test Reading symbols from test... Adding dir 1: /usr/include Adding file 1: test.c Adding file 2: stdc-predef.h Processing actual line 3: file 1, address 0x4004a0, is_stmt 1, discrim 0 Processing actual line 4: file 1, address 0x4004a0, is_stmt 1, discrim 0 .... lots of debug output ... Processing actual line 10: file 1, address 0x4003b7, is_stmt 0, discrim 0 (gdb) I've added a self test to cover the integer format size modifiers, including the 'z' modifier. gdb/ChangeLog: * gdbsupport/format.c (format_pieces::format_pieces): Support printf 'z' size modifier. * gdbsupport/format.h (enum argclass): Add size_t_arg. * printcmd.c (ui_printf): Handle size_t_arg. * ui-out.c (ui_out::vmessage): Likewise. * unittests/format_pieces-selftests.c (test_format_int_sizes): New function. (run_tests): Call test_format_int_sizes. gdb/gdbserver/ChangeLog: * ax.c (ax_printf): Handle size_t_arg. Change-Id: Ib6c44d88aa5bce265d757e4c0698881803dd186f
This commit is contained in:
@ -2657,6 +2657,16 @@ ui_printf (const char *arg, struct ui_file *stream)
|
||||
{
|
||||
long val = value_as_long (val_args[i]);
|
||||
|
||||
DIAGNOSTIC_PUSH
|
||||
DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
|
||||
fprintf_filtered (stream, current_substring, val);
|
||||
DIAGNOSTIC_POP
|
||||
break;
|
||||
}
|
||||
case size_t_arg:
|
||||
{
|
||||
size_t val = value_as_long (val_args[i]);
|
||||
|
||||
DIAGNOSTIC_PUSH
|
||||
DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
|
||||
fprintf_filtered (stream, current_substring, val);
|
||||
|
Reference in New Issue
Block a user