public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx@kernel.org>
To: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Cc: linux-man@vger.kernel.org
Subject: Re: [PATCH 4/5] ld.so.8: Describe glibc Hardware capabilities
Date: Wed, 18 Oct 2023 21:50:20 +0200	[thread overview]
Message-ID: <ZTA2_f0gWRRcob5i@debian> (raw)
In-Reply-To: <20231018172104.1196993-5-adhemerval.zanella@linaro.org>

[-- Attachment #1: Type: text/plain, Size: 5621 bytes --]

Hi Adhemerval,

On Wed, Oct 18, 2023 at 02:21:03PM -0300, Adhemerval Zanella wrote:
> It was added on glibc 2.33 as a way to improve path search, since
> legacy hardware capabilities combination scheme do not scale
> properly with new hardware support.  The legacy support was removed
> on glibc 2.37, so it is the only scheme currently supported.
> 
> Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> ---
>  man8/ld.so.8 | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 46 insertions(+), 1 deletion(-)
> 
> diff --git a/man8/ld.so.8 b/man8/ld.so.8
> index a0020be98..0e742cddd 100644
> --- a/man8/ld.so.8
> +++ b/man8/ld.so.8
> @@ -208,6 +208,14 @@ The objects in
>  .I list
>  are delimited by colons.
>  .TP
> +.BI \-\-glibc-hwcaps-mask " list"
> +only search built-in subdirectories if in
> +.IR list .
> +.TP
> +.BI \-\-glibc-hwcaps-prepend " list"
> +Search glibc-hwcaps subdirectories in
> +.IR list .
> +.TP
>  .B \-\-inhibit\-cache
>  Do not use
>  .IR /etc/ld.so.cache .
> @@ -797,7 +805,7 @@ as a temporary workaround to a library misconfiguration issue.)
>  .I lib*.so*
>  shared objects
>  .SH NOTES
> -.SS Hardware capabilities
> +.SS Legacy Hardware capabilities (from glibc 2.5 to glibc 2.37)
>  Some shared objects are compiled using hardware-specific instructions which do
>  not exist on every CPU.
>  Such objects should be installed in directories whose names define the
> @@ -832,6 +840,43 @@ z900, z990, z9-109, z10, zarch
>  .B x86 (32-bit only)
>  acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx,
>  mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm
> +.SS glibc Hardware capabilities (from glibc 2.33)
> +The legacy hardware capabilities combinations has the drawback where each feature

Please don't use more than 80 columns in man(7) source.  See this
warning:

$ make --debug=print lint-man-mandoc
LINT (mandoc)	.tmp/man/man8/ld.so.8.lint-man.mandoc.touch
! (mandoc -man -Tlint  man8/ld.so.8 2>&1 \
   | grep -v -f './share/lint/mandoc/man.ignore.grep' \
   ||:; \
) \
| grep ^ >&2
mandoc: man8/ld.so.8:849:81: STYLE: input text line longer than 80 bytes: The legacy hardware ...
mandoc: man8/ld.so.8:850:82: STYLE: input text line longer than 80 bytes: name incur in cascad...
mandoc: man8/ld.so.8:854:81: STYLE: input text line longer than 80 bytes: during library resol...
mandoc: man8/ld.so.8:867:82: STYLE: input text line longer than 80 bytes: The glibc 2.33 added...
mandoc: man8/ld.so.8:870:81: STYLE: input text line longer than 80 bytes: priority over the le...
mandoc: man8/ld.so.8:882:1: WARNING: skipping blank line in line scope
make: *** [share/mk/lint/man/man.mk:32: .tmp/man/man8/ld.so.8.lint-man.mandoc.touch] Error 1

> +name incur in cascading extra paths added on the search path list, adding a lot of

Also, please use semantic newlines.  See man-pages(7):

$ MANWIDTH=72 man man-pages | sed -n '/Use semantic newlines/,/^$/p'
   Use semantic newlines
       In the source of a manual page, new sentences should be started
       on  new  lines,  long  sentences  should be split into lines at
       clause breaks (commas, semicolons, colons, and so on), and long
       clauses should be split at phrase boundaries.  This convention,
       sometimes known as "semantic newlines", makes it easier to  see
       the  effect of patches, which often operate at the level of in‐
       dividual sentences, clauses, or phrases.

> +overhead on
> +.B
> +ld.so

We prefer having it all in one line:  .B ld.so

> +during library resolution.  For instance, on x86 32-bit, if the hardware supports
> +.B i686
> +and
> +.B sse2
> +, the resulting search path will be
> +.B
> +i686/sse2:i686:sse2:. .
> +A new capability
> +.B newcap
> +will set the search path to
> +.B
> +newcap/i686/sse2:newcap/i686:newcap/sse2:newcap:i686/sse2:i686:sse2: .
> +

Please don't use blank lines in man(7) source.  If you want a paragraph
separator, use '.PP'.  See this warning:

$ make build-catman
TROFF	.tmp/man/man8/ld.so.8.cat.set
an.tmac:man8/ld.so.8:866: style: blank line in input
an.tmac:man8/ld.so.8:882: style: blank line in input
an.tmac:man8/ld.so.8:884: style: blank line in input
make: *** [share/mk/build/catman.mk:54: .tmp/man/man8/ld.so.8.cat.set] Error 1
make: *** Deleting file '.tmp/man/man8/ld.so.8.cat.set'


> +The glibc 2.33 added a new hardware capability scheme, where each ABI can define a

s/The //
s/, /,\n/

> +set of paths based on expected hardware support. Each path is added depending of

s/\. /\.\n/

(And if we ever had two sentences in the same source line, there should
be two spaces.  But we don't.)

> +the hardware of the machine, and they are not combined together. They also have
> +priority over the legacy hardware capabilities. The following paths are currently
> +supported.
> +.TP
> +.B PowerPC (64-bit little-endian only)
> +power9, power10
> +.TP
> +.B s390 (64-bit only)
> +z13, z14, z15, z16
> +.TP
> +.B x86 (64-bit only)
> +x86-64-v2, x86-64-v3, x86-64-v4
> +.TP
> +

TP means tagged paragraph.  If you don't want a _tagged_ paragraph, you
just want a paragraph, which is PP.

> +The glibc 2.37 removed support for the legacy hardware capabilities.
> +

This blank is unnecessary, although you may want some separator before
the .SH, for which '.' or '.\"' would be acceptable.

Thanks,
Alex

>  .SH SEE ALSO
>  .BR ld (1),
>  .BR ldd (1),
> -- 
> 2.34.1
> 

-- 
<https://www.alejandro-colomar.es/>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2023-10-18 19:51 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-18 17:20 [PATCH 0/5] Some ld.so updates Adhemerval Zanella
2023-10-18 17:21 ` [PATCH 1/5] ld.so.8: Update environment variables from recent glibc versions Adhemerval Zanella
2023-10-18 19:06   ` Alejandro Colomar
2023-10-18 20:36     ` Adhemerval Zanella Netto
2023-10-18 17:21 ` [PATCH 2/5] ld.so.8: Clarify LD_PROFILE in secure-execution mode Adhemerval Zanella
2023-10-18 19:19   ` Alejandro Colomar
2023-10-18 20:47     ` Adhemerval Zanella Netto
2023-10-19 12:54       ` Alejandro Colomar
2023-10-18 17:21 ` [PATCH 3/5] ld.so.8: Add add filtered out environment variable " Adhemerval Zanella
2023-10-18 19:25   ` Alejandro Colomar
2023-10-18 17:21 ` [PATCH 4/5] ld.so.8: Describe glibc Hardware capabilities Adhemerval Zanella
2023-10-18 19:50   ` Alejandro Colomar [this message]
2023-10-18 17:21 ` [PATCH 5/5] ld.so.8: Describe the --list-diagnostics loader option Adhemerval Zanella
2023-10-18 19:56   ` Alejandro Colomar

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=ZTA2_f0gWRRcob5i@debian \
    --to=alx@kernel.org \
    --cc=adhemerval.zanella@linaro.org \
    --cc=linux-man@vger.kernel.org \
    /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