[Toybox] [PATCH] readelf: Fix the section flags handling.

Rob Landley rob at landley.net
Thu Nov 30 21:30:13 PST 2023


On 11/30/23 13:55, Rob Landley wrote:
> (This is why Mike Gancarz' book "the unix philosophy" talked about unix tool
> output being made to be easily parseable by programs rather than by humans.
> Alas, readelf is from gnu, not from unix, which is why it sucks at this. The nm
> tool has better unix design, which is why bloat-o-meter and make bloatcheck is
> built on top of it. Specifically the --size-sort output which has constant
> fields rather than this "the first word is missing half the time and the
> indentation easily lets a human know but is a pain for a script to deal with
> unless it wants to hardwire in column starting positions and break as soon as a
> field width changes" of the default output.)

Which I hit trying to rewrite this test, too! I was fiddling with it to make the
test specifically test what the patch had updated, and:

$ readelf -SW tests/files/elf/ndk-elf-note-shflags | sed -n 's/.*]//p' | while
read a b c d e f g h i; do printf "$g"; done
Flg0AAAAAAAAA04ALAIAMSAXAXWATWAWAWAWAMS0C26000

Because the output:

 .comment          PROGBITS        00000000 0006c8 0000cc 01  MS  0   0  1
 .ARM.attributes   ARM_ATTRIBUTES  00000000 000794 000042 00      0   0  1

Has BLANK COLUMNS. Which is BAD FOR SCRIPT PARSEABILITY. Also:

 .relr.dyn         00000013: <unknown> 00000318 000318 00000c 04   A  0   0  4

It inserted an EXTRA COLUMN. (This is the debian version, by the way. I'm trying
to make TEST_HOST pass first...)

Does it have any sort of stat -c syntax where I can at least REQUEST what I want
out of it? No it does not. Because gnu. (Don't suggest it to them, they'll fsck
it up 100% guaranteed.)

Rob


More information about the Toybox mailing list