/* Output generating routines for GDB.
- Copyright (C) 1999-2019 Free Software Foundation, Inc.
+ Copyright (C) 1999-2022 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
Written by Fernando Nasser for Cygnus.
#include "ui-out.h"
#include "gdbsupport/format.h"
#include "cli/cli-style.h"
+#include "diagnostics.h"
#include <vector>
#include <memory>
do_field_string (fldno, width, align, fldname, string, style);
}
-void
-ui_out::field_string (const char *fldname, const std::string &string)
-{
- field_string (fldname, string.c_str ());
-}
-
/* VARARGS */
void
ui_out::field_fmt (const char *fldname, const char *format, ...)
va_list args;
va_start (args, format);
+
+ /* Since call_do_message is only used as a helper of vmessage, silence the
+ warning here once instead of at all call sites in vmessage, if we were
+ to put a "format" attribute on call_do_message. */
+ DIAGNOSTIC_PUSH
+ DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL
do_message (style, format, args);
+ DIAGNOSTIC_POP
+
va_end (args);
}
}
break;
case wide_string_arg:
- gdb_assert_not_reached (_("wide_string_arg not supported in vmessage"));
+ gdb_assert_not_reached ("wide_string_arg not supported in vmessage");
break;
case wide_char_arg:
- gdb_assert_not_reached (_("wide_char_arg not supported in vmessage"));
+ gdb_assert_not_reached ("wide_char_arg not supported in vmessage");
break;
case long_long_arg:
call_do_message (style, current_substring, va_arg (args, long long));
}
}
break;
+ case size_t_arg:
+ {
+ size_t val = va_arg (args, size_t);
+ switch (piece.n_int_args)
+ {
+ case 0:
+ call_do_message (style, current_substring, val);
+ break;
+ case 1:
+ call_do_message (style, current_substring, intvals[0], val);
+ break;
+ case 2:
+ call_do_message (style, current_substring,
+ intvals[0], intvals[1], val);
+ break;
+ }
+ }
+ break;
case double_arg:
call_do_message (style, current_substring, va_arg (args, double));
break;
case long_double_arg:
- gdb_assert_not_reached (_("long_double_arg not supported in vmessage"));
+ gdb_assert_not_reached ("long_double_arg not supported in vmessage");
break;
case dec32float_arg:
- gdb_assert_not_reached (_("dec32float_arg not supported in vmessage"));
+ gdb_assert_not_reached ("dec32float_arg not supported in vmessage");
break;
case dec64float_arg:
- gdb_assert_not_reached (_("dec64float_arg not supported in vmessage"));
+ gdb_assert_not_reached ("dec64float_arg not supported in vmessage");
break;
case dec128float_arg:
- gdb_assert_not_reached (_("dec128float_arg not supported in vmessage"));
+ gdb_assert_not_reached ("dec128float_arg not supported in vmessage");
break;
case ptr_arg:
switch (current_substring[2])
base_field_s *bf = va_arg (args, base_field_s *);
switch (bf->kind)
{
- case field_kind::SIGNED:
+ case field_kind::FIELD_SIGNED:
{
auto *f = (signed_field_s *) bf;
field_signed (f->name, f->val);
}
break;
- case field_kind::STRING:
+ case field_kind::FIELD_STRING:
{
auto *f = (string_field_s *) bf;
field_string (f->name, f->str);