From: "Alejandro Colomar (man-pages)" <alx.manpages@gmail.com>
To: Emanuele Torre <torreemanuele6@gmail.com>
Cc: linux-man@vger.kernel.org, mtk.manpages@gmail.com
Subject: Re: [man-pages] Misleading example in ldd(1).
Date: Fri, 6 Aug 2021 17:22:06 +0200 [thread overview]
Message-ID: <6788a215-74c4-e078-b480-a9a13842e5bb@gmail.com> (raw)
In-Reply-To: <CAA7hNqc8gExU=OfsoqY3Cw78J1BOCXrMfFmg+fUaCDt54wDrBQ@mail.gmail.com>
Hi Emanuele,
On 8/6/21 4:26 PM, Emanuele Torre wrote:
> I was reading the man page for ldd(1)[1]; and I read this in the first
> paragraph of the DECRIPTION section:
>
> ldd prints the shared objects (shared libraries) required by each
> program or shared object specified on the command line. An
> example of its use and output (using sed(1) to trim leading white
> space for readability in this page) is the following:
>
> $ ldd/bin/ls | sed 's/^ */ /'
> linux-vdso.so.1 (0x00007ffcc3563000)
> libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
> libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
> libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
> libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
> libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
> /lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
> libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)
>
> This is a little confusing though since that sed(1) command does not
> seem to work. (and also potentially misleading for someone who is trying
> figure out how to parse ldd(1)'s output.)
>
> ldd(1) prepends a TAB character (0x09) to each line, not spaces:
>
> $ ldd /bin/ls | xxd | head -1
> 00000000: 096c 696e 7578 2d76 6473 6f2e 736f 2e31 .linux-vdso.so.1
>
> I read ldd(1)'s source code[2] (it is part of glibc) and it seems to be
> a bash script that tries to use different rtld programs ( ld.so(8) )
> from an RTLDLIST.
>
> Those, on my system, are:
>
> * /usr/lib/ld-linux.so.2
> * /usr/lib64/ld-linux-x86-64.so.2
> * /usr/libx32/ld-linux-x32.so.2
>
> And they all seem to also be part of glibc.
>
> I have tried to follow the git history of glibc to see when the switch
> from spaces to the TAB character occured, but, to me, it seems like
> glibc.git/elf/rtld.c has always used '\t'; at since
> 6a76c115150318eae5d02eca76f2fc03be7bd029[3] (358th commit since glibc
> started using the git repository repository - Nov 18th 1995): before
> that commit there are not any results for `git grep '\\t'` in the elf
> directory and I did not investigate further.
>
> Still, at the time of that commit, glibc did not seem to have an ldd(1)
> utility.
>
> Perhaps the man page is old and its original author was using and
> documenting an ldd(1) utility that was not part of glibc when he was
> writing it.
>
> Anyhow, since I think that sed(1) command will not work on any system
> that uses, at least, the most recent version of glibc (because lld(1)
> and the ld.so(8) programs it depends on are all part of glibc), I think
> that that example should be changed to avoid confusions.
>
> The output format of ldd(1) does not seem to be clearly defined, so I
> think this would be a good option:
>
> $ ldd/bin/ls | sed 's/^[[:space:]]*/ /'
>
> NB: ^\s* should also work on most GNU/Linux systems, but \s is
> non-standard or documented so I don not suggest using it in the man
> page.
>
> Another option could be to remove "the pipe to sed(1)" part and the note
> in parentheses that explains why it was used by the original author.
Thanks for the report! I decided to remove the pipe for simplicity.
Cheers,
Alex
--
Alejandro Colomar
Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/
http://www.alejandro-colomar.es/
prev parent reply other threads:[~2021-08-06 15:23 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-06 14:26 [man-pages] Misleading example in ldd(1) Emanuele Torre
2021-08-06 15:22 ` Alejandro Colomar (man-pages) [this message]
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=6788a215-74c4-e078-b480-a9a13842e5bb@gmail.com \
--to=alx.manpages@gmail.com \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
--cc=torreemanuele6@gmail.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