This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH 3/3] readelf: Correct version flag formatting
- From: "Maciej W. Rozycki" <macro at imgtec dot com>
- To: <binutils at sourceware dot org>
- Cc: Nick Clifton <nickc at redhat dot com>
- Date: Thu, 23 Feb 2017 18:18:51 +0000
- Subject: [PATCH 3/3] readelf: Correct version flag formatting
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.00.1702212247450.26999@tp.orcam.me.uk>
Remove a trailing space or a leading pipe character from version flags
printed with `readelf --version-info'.
For example with the `mips-linux' target we get:
$ cat ver_def.s
.data
.globl new_foo
.type new_foo, %object
new_foo:
.symver new_foo, foo@@ver_foo
$ cat ver_def.ver
{ global: *foo*; local: *; };
$ as -o ver_def.o ver_def.s
$ ld -e 0 --export-dynamic --version-script=ver_def.ver -o ver_def ver_def.o
$ readelf -V ver_def
Version symbols section '.gnu.version' contains 4 entries:
Addr: 000000000000007e Offset: 0x01007e Link: 2 (.dynsym)
000: 0 (*local*) 2 (ver_foo) 1 (*global*) 2 (ver_foo)
Version definition section '.gnu.version_d' contains 2 entries:
Addr: 0x0000000000000088 Offset: 0x010088 Link: 3 (.dynstr)
000000: Rev: 1 Flags: BASE Index: 1 Cnt: 1 Name: ver_def
0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: ver_foo
$
which includes an unnecessary space after `BASE'; both call sites
already provide suitable separation from output that follows. Also if
only unknown flags were present, then lone `| <unknown>' would be
printed.
binutils/
* readelf.c (get_ver_flags): Tidy the formatting of the string
returned
---
No regressions against my usual targets. OK to apply?
Maciej
binutils-readelf-get-ver-flags-format.diff
Index: binutils/binutils/readelf.c
===================================================================
--- binutils.orig/binutils/readelf.c 2017-02-18 01:00:01.000000000 +0000
+++ binutils/binutils/readelf.c 2017-02-18 01:10:57.066475342 +0000
@@ -9945,26 +9945,31 @@ get_ver_flags (unsigned int flags)
return _("none");
if (flags & VER_FLG_BASE)
- strcat (buff, "BASE ");
+ strcat (buff, "BASE");
if (flags & VER_FLG_WEAK)
{
if (flags & VER_FLG_BASE)
- strcat (buff, "| ");
+ strcat (buff, " | ");
- strcat (buff, "WEAK ");
+ strcat (buff, "WEAK");
}
if (flags & VER_FLG_INFO)
{
if (flags & (VER_FLG_BASE|VER_FLG_WEAK))
- strcat (buff, "| ");
+ strcat (buff, " | ");
- strcat (buff, "INFO ");
+ strcat (buff, "INFO");
}
if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK | VER_FLG_INFO))
- strcat (buff, _("| <unknown>"));
+ {
+ if (flags & (VER_FLG_BASE | VER_FLG_WEAK | VER_FLG_INFO))
+ strcat (buff, " | ");
+
+ strcat (buff, _("<unknown>"));
+ }
return buff;
}