aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2023-02-17 12:12:11 -0700
committerTom Tromey <tom@tromey.com>2023-02-20 14:35:15 -0700
commitee0e1723013527bfea4116f2fb8428add2e5343c (patch)
treedf514dc1de0c75108fab81b483bf45925d47e41a
parentc22ff449275c91e4842bb10c650e83c572580f65 (diff)
downloadgdb-ee0e1723013527bfea4116f2fb8428add2e5343c.zip
gdb-ee0e1723013527bfea4116f2fb8428add2e5343c.tar.gz
gdb-ee0e1723013527bfea4116f2fb8428add2e5343c.tar.bz2
Fix formatting of long function description in chew output
Currently, if a function description spans a line, the resulting info can look like this: -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); Call the back end associated with the open BFD ABFD and translate the external form of the relocation information attached to SEC into the internal canonical form. Place the table into memory at LOC, That is, the function prototype runs together with the text in an ugly way. This patch fixes this by introducing a new primitive, so that the generated Texinfo can be a bit nicer. Now this output looks like: -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); Call the back end associated with the open BFD ABFD and translate the external form of the relocation information attached to SEC 2023-02-17 Tom Tromey <tom@tromey.com> * doc/doc.str (SYNOPSIS): Use collapse_whitespace. * doc/chew.c (collapse_whitespace): New function. (main): Register collapse_whitespace.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/doc/chew.c33
-rw-r--r--bfd/doc/doc.str2
3 files changed, 41 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e160e44..2b48781 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2023-02-17 Tom Tromey <tom@tromey.com>
+
+ * doc/doc.str (SYNOPSIS): Use collapse_whitespace.
+ * doc/chew.c (collapse_whitespace): New function.
+ (main): Register collapse_whitespace.
+
2023-02-07 Tom Tromey <tom@tromey.com>
* bfd.c, cache.c, compress.c, opncls.c: Remove RETURNS from
diff --git a/bfd/doc/chew.c b/bfd/doc/chew.c
index cd39969..e847896 100644
--- a/bfd/doc/chew.c
+++ b/bfd/doc/chew.c
@@ -885,6 +885,38 @@ kill_bogus_lines (void)
}
static void
+collapse_whitespace (void)
+{
+ int last_was_ws = 0;
+ int idx;
+
+ string_type out;
+ init_string (&out);
+
+ for (idx = 0; at (tos, idx) != 0; ++idx)
+ {
+ char c = at (tos, idx);
+ if (isspace (c))
+ {
+ if (!last_was_ws)
+ {
+ catchar (&out, ' ');
+ last_was_ws = 1;
+ }
+ }
+ else
+ {
+ catchar (&out, c);
+ last_was_ws = 0;
+ }
+ }
+
+ pc++;
+ delete_string (tos);
+ *tos = out;
+}
+
+static void
indent (void)
{
string_type out;
@@ -1485,6 +1517,7 @@ main (int ac, char *av[])
add_intrinsic ("indent", indent);
add_intrinsic ("print_stack_level", print_stack_level);
add_intrinsic ("strip_trailing_newlines", strip_trailing_newlines);
+ add_intrinsic ("collapse_whitespace", collapse_whitespace);
internal_mode = xmalloc (sizeof (intptr_t));
*internal_mode = 0;
diff --git a/bfd/doc/doc.str b/bfd/doc/doc.str
index 2a0953a..5077ada 100644
--- a/bfd/doc/doc.str
+++ b/bfd/doc/doc.str
@@ -55,8 +55,10 @@ variable synopsis_seen
"@deftypefn {Function} " catstr
get_stuff_in_command
kill_bogus_lines
+ collapse_whitespace
indent
catstr
+ "\n" catstr
;
: func