public inbox for libc-help@sourceware.org
 help / color / mirror / Atom feed
From: Mathieu Malaterre <malat@debian.org>
To: Florian Weimer <fweimer@redhat.com>
Cc: libc-help@sourceware.org
Subject: Re: glibc-hwcaps for armv7 (neon-vfpv4)
Date: Thu, 31 Aug 2023 14:08:28 +0200	[thread overview]
Message-ID: <CA+7wUsxAzBoOAuY7rZ09cQcgUHqA3U=P5mtBOm6+fN1avn6owg@mail.gmail.com> (raw)
In-Reply-To: <87zg27bgjl.fsf@oldenburg.str.redhat.com>

Hi Florian !

On Thu, Aug 31, 2023 at 1:24 PM Florian Weimer <fweimer@redhat.com> wrote:
>
> * Mathieu Malaterre:
>
> > Dear glibc maintainer,
> >
> > I fail to understand the ld.so man page (Debian/sid version: man-pages
> > 6.03) for hwcaps support. Specifically I'd like to install a shared
> > lib on a Debian/armhf system (baseline is neon-less) which was build
> > with gcc option:
> >
> >   -march=armv7-a -mfpu=neon-vfpv4
> >
> > What subfolder should I be using ?
>
> You can use “LD_LIBRARY_PATH=. /bin/true” to see which subdirectories
> are probed.  I think either neon/vfp or vfp/neon should be among the
> subdirectories.  This functionality has since been removed from upstream
> glibc because it sometimes results in hundereds of extra openat system
> calls.

oh, thanks for the trick. Could you confirm my conclusion below
(Debian/i386 sid system):

% file /usr/lib/i386-linux-gnu/i686/sse2/libx264.so.164
/usr/lib/i386-linux-gnu/i686/sse2/libx264.so.164: ELF 32-bit LSB
shared object, Intel 80386, version 1 (SYSV), dynamically linked,
BuildID[sha1]=e66974d10aef77af7ed504266cde974d103484d6, stripped

However:

% /sbin/ldconfig -v 2>/dev/null | grep -A3 hwcap
-> nothing

same goes with:

% LD_DEBUG=libs LD_LIBRARY_PATH=. /bin/true
   3327956:     find library=libc.so.6 [0]; searching
   3327956:      search path=.          (LD_LIBRARY_PATH)
   3327956:       trying file=./libc.so.6
   3327956:      search cache=/etc/ld.so.cache
   3327956:       trying file=/lib/i386-linux-gnu/libc.so.6
   3327956:
   3327956:
   3327956:     calling init: /lib/ld-linux.so.2
   3327956:
   3327956:
   3327956:     calling init: /lib/i386-linux-gnu/libc.so.6
   3327956:
   3327956:
   3327956:     initialize program: /bin/true
   3327956:
   3327956:
   3327956:     transferring control: /bin/true
   3327956:
   3327956:
   3327956:     calling fini:  [0]
   3327956:
   3327956:
   3327956:     calling fini: /lib/i386-linux-gnu/libc.so.6 [0]
   3327956:
   3327956:
   3327956:     calling fini: /lib/ld-linux.so.2 [0]
   3327956:


If I understand correctly the file
/usr/lib/i386-linux-gnu/i686/sse2/libx264.so.164 cannot be used on
Debian/sid/i386 system since libc used is:

% /lib/i386-linux-gnu/libc.so.6
GNU C Library (Debian GLIBC 2.37-7) stable release version 2.37.
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 12.3.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 3.2.0
For bug reporting instructions, please see:
<http://www.debian.org/Bugs/>.

> > Conversely how should I read the following:
> >
> > % sudo ldconfig -p | grep hwcap
> >         libfoo.so.160 (libc6,x86-64, hwcap: 0x0004000000000000) =>
> > /lib/x86_64-linux-gnu/haswell/libfoo.so.160
> >         libfoo.so.160 (libc6,x86-64, hwcap: 0x0000000000000004) =>
> > /lib/x86_64-linux-gnu/avx512_1/libfoo.so.160
> >
> > What does "haswell" / "avx512_1" subfolder implies in terms of gcc
> > compile options ?
>
> It's complicated.  Nowdays, on x86-64, you can use
> glibc-hwcaps/x86-64-v3 and glibc-hwcaps/x86-64-v4, which are designed to
> correspond to -march=x86-64-v3 and -march=x86-64-v4, and x86-64-v4 is a
> superset of x86-64-v3.

Ok, thanks for the update.

Could you just review what I see on my Debian/sid/armhf system:

% cat /proc/cpuinfo | grep Features | uniq
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4
idiva idivt lpae evtstrm
% LD_DEBUG=libs LD_LIBRARY_PATH=. /bin/true
   2964957:     find library=libc.so.6 [0]; searching
   2964957:      search path=.          (LD_LIBRARY_PATH)
   2964957:       trying file=./libc.so.6
   2964957:      search cache=/etc/ld.so.cache
   2964957:       trying file=/lib/arm-linux-gnueabihf/libc.so.6
   2964957:
   2964957:
   2964957:     calling init: /lib/ld-linux-armhf.so.3
   2964957:
   2964957:
   2964957:     calling init: /lib/arm-linux-gnueabihf/libc.so.6
   2964957:
   2964957:
   2964957:     initialize program: /bin/true
   2964957:
   2964957:
   2964957:     transferring control: /bin/true
   2964957:
   2964957:
   2964957:     calling fini:  [0]
   2964957:
   2964957:
   2964957:     calling fini: /lib/arm-linux-gnueabihf/libc.so.6 [0]
   2964957:
   2964957:
   2964957:     calling fini: /lib/ld-linux-armhf.so.3 [0]
   2964957:

Based on the above, it seems glibc is setup to never search hwcaps
optimized libraries on this system (even if neon/vfpv4 is supported by
system).

Thanks again for your kind help

-M

  reply	other threads:[~2023-08-31 12:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-31 10:06 Mathieu Malaterre
2023-08-31 11:24 ` Florian Weimer
2023-08-31 12:08   ` Mathieu Malaterre [this message]
2023-08-31 15:30     ` Adhemerval Zanella Netto
2023-09-01  7:18       ` Mathieu Malaterre
2023-08-31 17:20     ` Florian Weimer

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='CA+7wUsxAzBoOAuY7rZ09cQcgUHqA3U=P5mtBOm6+fN1avn6owg@mail.gmail.com' \
    --to=malat@debian.org \
    --cc=fweimer@redhat.com \
    --cc=libc-help@sourceware.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).