Hi,

Jonathan Gray wrote on Thu, Mar 01, 2018 at 07:28:45PM +1100:

> The binary is installed on all architectures that build llvm as
> /usr/bin/ld.lld and is also installed as /usr/bin/ld on arm64.
> 
> With ld.1 from binutils and ld.lld.1 with ld in .Nm 'man ld' will pick
> the binutils page but the ld.lld.1 page will show up in 'man -a ld' even
> on architectures where ld is not lld.

First, all manual pages are supposed to be in distrib/sets/lists/*/mi,
not in distrib/sets/lists/*/md.*.  I know that as.1 and gdb.1 violate
that, being in comp/md.*, which we should maybe fix, but that's a
distinct issue.  Anyway, making anything manual-page related depend
on TARGET_ARCH looks somewhat dubious to me.

Assuming we want to keep the installation of manual pages mi,
there are two different issues.

1. Which page should man(1) show?
2. How should the NAME section look like?

Regarding question 1, ideally,

 - man ld.lld        must always show this new page
 - man -S arm64 ld   should show this new page
 - man -S i386 ld    should show the GNU ld(1) page

That would require having these files:

 - /usr/share/man/man1/ld.lld.1
 - /usr/share/man/man1/arm64/ld.1
 - /usr/share/man/man1/i386/ld.1    (different from previous)
 - /usr/share/man/man1/*/ld.1       (same as previous)

And *not* having this file:

 - /usr/share/man/man1/ld.1

Regarding question 2, ideally, it would require man1/ld.lld.1 and
man1/arm64/ld.1 to have different content in the NAME section.  But
that would be a pain to maintain, so i guess we do not want to do
that.  Which means that we do *not* add .Nm ld to NAME in ld.lld.1,
as a compromise.

So back to question 1.  Getting rid of man1/ld.1 and
installing the correct man1/*/ld.1 links instead requires
fiddling with the GNU binutils build system, which seems
unrelated to this diff.  We can decide later whether or not
we want that.

For now, i suggest that you import the new file and install
it as /usr/share/man/man1/ld.lld.1, mi, without the MLINKS
line in usr.bin/clang/lld/Makefile.

If you want, you can already install a hard link from
/usr/share/man/man1/ld.lld.1 to /usr/share/man/man1/arm64/ld.1,
even though man(1) will not yet show that for "man -S arm64 ls"
yet as long as man1/ld.1 exists (mi pages are preferred even
with -S).  But at least it will already show up in "man -aS arm64 ld"
and in "man -w ld".

Yours,
  Ingo

Reply via email to