pahole: Introduce --prettify option
The use of isatty(0) to switch into pretty printing is problematic as
reported by Bernd Buschinski, that ran into problems with his scripts:
========================================================================
I am using pahole 1.21 and I recently noticed that I no longer have
any pahole output in several scripts.
Using (on the command line):
$ pahole -V -E -C my_struct /path/to/my/debug.o
works fine and gives the expected output.
But:
$ parallel -j 1 pahole -V -E -C my_struct ::: /path/to/my/debug.o
gives nothing, no stderr, no stdout and ret code 0.
After testing some versions, it works fine in 1.17 and no longer works in 1.18.
========================================================================
Since the pretty printer broke existing scripts, and its a relatively
new feature, lets switch to using a explicit command line option to
activate the pretty printer, i.e. where we used:
$ pahole --header elf64_hdr < /bin/bash
We now use one of:
⬢[acme@toolbox pahole]$ pahole --header elf64_hdr --prettify=/bin/bash
{
.e_ident = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
.e_type = 3,
.e_machine = 62,
.e_version = 1,
.e_entry = 204016,
.e_phoff = 64,
.e_shoff = 1388096,
.e_flags = 0,
.e_ehsize = 64,
.e_phentsize = 56,
.e_phnum = 13,
.e_shentsize = 64,
.e_shnum = 31,
.e_shstrndx = 30,
},
⬢[acme@toolbox pahole]$ pahole --header elf64_hdr --prettify /bin/bash
{
.e_ident = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
.e_type = 3,
.e_machine = 62,
.e_version = 1,
.e_entry = 204016,
.e_phoff = 64,
.e_shoff = 1388096,
.e_flags = 0,
.e_ehsize = 64,
.e_phentsize = 56,
.e_phnum = 13,
.e_shentsize = 64,
.e_shnum = 31,
.e_shstrndx = 30,
},
⬢[acme@toolbox pahole]$ pahole --header elf64_hdr --prettify - < /bin/bash
{
.e_ident = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
.e_type = 3,
.e_machine = 62,
.e_version = 1,
.e_entry = 204016,
.e_phoff = 64,
.e_shoff = 1388096,
.e_flags = 0,
.e_ehsize = 64,
.e_phentsize = 56,
.e_phnum = 13,
.e_shentsize = 64,
.e_shnum = 31,
.e_shstrndx = 30,
},
⬢[acme@toolbox pahole]$ pahole --header elf64_hdr --prettify=- < /bin/bash
{
.e_ident = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
.e_type = 3,
.e_machine = 62,
.e_version = 1,
.e_entry = 204016,
.e_phoff = 64,
.e_shoff = 1388096,
.e_flags = 0,
.e_ehsize = 64,
.e_phentsize = 56,
.e_phnum = 13,
.e_shentsize = 64,
.e_shnum = 31,
.e_shstrndx = 30,
},
⬢[acme@toolbox pahole]$
Reported-by: Bernd Buschinski <b.buschinski@googlemail.com>
Report-Link: https://lore.kernel.org/dwarves/CACN-hLVoz2tWrtgDLabOv6S1-H_8RD2fh8SV6EnADF1ikMxrmw@mail.gmail.com/
Tested-by-by: Bernd Buschinski <b.buschinski@googlemail.com>
Test-Link: https://lore.kernel.org/dwarves/CACN-hLXgHWdBkyMz+w58qX8DaV+WJ1mj1qheGBHbPv4fqozi5w@mail.gmail.com/
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>