From: Pedro Alves <palves@redhat.com>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: [users/palves/format_strings] Document the gdb-specific formatters
Date: Mon, 01 Jul 2019 19:30:00 -0000 [thread overview]
Message-ID: <aba4988b-b9b5-0e2e-0706-e9b7e5c4b4b8@redhat.com> (raw)
In-Reply-To: <9ec74ede-4474-f9c9-9cdd-1bbba1e5452b@redhat.com>
On 7/1/19 7:56 PM, Pedro Alves wrote:
> On 7/1/19 7:49 PM, Tom Tromey wrote:
>> Tom> I looked through all the field_fmt calls, and many of them can be
>> Tom> replaced with some other call.
>>
>> I wrote some patches to do this where it is possible.
>
> Awesome. I wrote a patch to implement %p[ / %p], and am now writing
> a patch to document the formatters.
Like so. I've merged this.
From c36205f0ccc36ac47b0191c02ceb5c06459ebea3 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Mon, 1 Jul 2019 19:23:07 +0100
Subject: [PATCH] Document the gdb-specific formatters
---
gdb/ui-out.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++
gdb/utils.h | 5 ++++-
2 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/gdb/ui-out.h b/gdb/ui-out.h
index 67c3962654c..819038ac282 100644
--- a/gdb/ui-out.h
+++ b/gdb/ui-out.h
@@ -189,8 +189,54 @@ class ui_out
void spaces (int numspaces);
void text (const char *string);
+
+ /* Output a printf-style formatted string. In addition to the usual
+ printf format specs, this supports a few GDB-specific
+ formatters:
+
+ - '%pF' - output a field.
+
+ The argument is a field, wrapped in any of the base_field_s
+ subclasses. int_field for integer fields, styled_field for
+ string fields. This is preferred over separate
+ uiout->field_int(), uiout_>field_string() etc. calls when the
+ formatted message is translatable. E.g.:
+
+ uiout->message (_("\nWatchpoint %pF deleted because the program has "
+ "left the block in\n"
+ "which its expression is valid.\n"),
+ int_field ("wpnum", b->number));
+
+ - '%p[' - output the following text in a specified style.
+ '%p]' - output the following text in the default style.
+
+ The argument to '%p[' is a ui_file_style pointer. The argument
+ to '%p]' must be nullptr.
+
+ This is useful when you want to output some portion of a string
+ literal in some style. E.g.:
+
+ uiout->message (_(" %p[<repeats %u times>%p]"),
+ metadata_style.style ().ptr (),
+ reps, repeats, nullptr);
+
+ - '%ps' - output a styled string.
+
+ The argument is the result of a call to styled_string. This is
+ useful when you want to output some runtime-generated string in
+ some style. E.g.:
+
+ uiout->message (_("this is a target address %ps.\n"),
+ styled_string (address_style.style (),
+ paddress (gdbarch, pc)));
+
+ Note that these all "abuse" the %p printf format spec, in order
+ to be compatible with GCC's printf format checking. This is OK
+ because code in GDB that wants to print a host address should use
+ host_address_to_string instead of %p. */
void message (const char *format, ...) ATTRIBUTE_PRINTF (2, 3);
void vmessage (const char *format, va_list args) ATTRIBUTE_PRINTF (2, 0);
+
void wrap_hint (const char *identstring);
void flush ();
diff --git a/gdb/utils.h b/gdb/utils.h
index 61b7b5e3bb3..d79faf28af3 100644
--- a/gdb/utils.h
+++ b/gdb/utils.h
@@ -349,7 +349,10 @@ extern struct ui_file *gdb_stdtargin;
extern void set_screen_width_and_height (int width, int height);
/* More generic printf like operations. Filtered versions may return
- non-locally on error. */
+ non-locally on error. As an extension over plain printf, these
+ support some GDB-specific format specifiers. Particularly useful
+ here are the styling formatters: '%p[', '%p]' and '%ps'. See
+ ui_out::message for details. */
extern void fputs_filtered (const char *, struct ui_file *);
--
2.14.5
next prev parent reply other threads:[~2019-07-01 19:30 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-05 2:01 [PATCH] Style "pwd" output Tom Tromey
2019-06-05 8:36 ` Pedro Alves
2019-06-05 13:42 ` Tom Tromey
2019-06-05 15:21 ` Pedro Alves
2019-06-05 18:12 ` ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) Pedro Alves
2019-06-05 20:27 ` Tom Tromey
2019-06-05 20:39 ` Pedro Alves
2019-06-05 20:42 ` Pedro Alves
2019-06-05 20:49 ` Tom Tromey
2019-06-05 20:47 ` Tom Tromey
2019-06-05 21:25 ` Pedro Alves
2019-06-05 22:21 ` Tom Tromey
2019-06-06 15:49 ` Pedro Alves
2019-06-06 23:55 ` Tom Tromey
2019-06-07 18:27 ` Tom Tromey
2019-06-07 19:20 ` Tom Tromey
2019-07-01 12:23 ` Pedro Alves
2019-07-01 12:55 ` Pedro Alves
2019-07-01 13:06 ` Pedro Alves
2019-07-01 17:26 ` Tom Tromey
2019-07-01 19:24 ` [users/palves/format_strings] Down with .ptr() (Re: ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output)) Pedro Alves
2019-07-01 13:17 ` ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) Pedro Alves
2019-07-01 13:20 ` Pedro Alves
2019-07-01 17:38 ` Tom Tromey
2019-07-01 18:49 ` Tom Tromey
2019-07-01 18:56 ` Pedro Alves
2019-07-01 19:30 ` Pedro Alves [this message]
2019-07-01 19:25 ` [users/palves/format_strings] Introduce string_field Pedro Alves
2019-07-01 17:43 ` ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) Tom Tromey
2019-07-01 19:29 ` [users/palves/format_strings] Make printf_filtered support the gdb-specific formatters too Pedro Alves
2019-07-01 12:01 ` ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) Pedro Alves
2019-07-01 12:25 ` Tom Tromey
2019-07-01 12:37 ` Pedro Alves
2019-07-01 17:20 ` Tom Tromey
2019-07-01 19:27 ` [users/palves/format_strings] %pS/%pN -> %p[/%p] Pedro Alves
2019-07-01 19:32 ` ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) Philippe Waroquiers
2019-07-03 12:20 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aba4988b-b9b5-0e2e-0706-e9b7e5c4b4b8@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox