x86: Add x86_64 to x86-64 HWCAP [BZ #22093]
commit45ff34638f034877b6a490c217d6a0632ce263f4
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 11 Sep 2017 15:18:11 +0000 (11 08:18 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 11 Sep 2017 15:18:32 +0000 (11 08:18 -0700)
treedae86b84c59ccbc77c2d9d46403fee6ad3f29f20
parent891abfd3c088c4bbfe724ff5bcfb9fca35db6d7d
x86: Add x86_64 to x86-64 HWCAP [BZ #22093]

Before glibc 2.26, ld.so set dl_platform to "x86_64" and searched the
"x86_64" subdirectory when loading a shared library.  ld.so in glibc
2.26 was changed to set dl_platform to "haswell" or "xeon_phi", based
on supported ISAs.  This led to shared library loading failure for
shared libraries placed under the "x86_64" subdirectory.

This patch adds "x86_64" to x86-64 dl_hwcap so that ld.so will always
search the "x86_64" subdirectory when loading a shared library.

NB: We can't set x86-64 dl_platform to "x86-64" since ld.so will skip
the "haswell" and "xeon_phi" subdirectories on "haswell" and "xeon_phi"
machines.

Tested on i686 and x86-64.

[BZ #22093]
* sysdeps/x86/cpu-features.c (init_cpu_features): Initialize
GLRO(dl_hwcap) to HWCAP_X86_64 for x86-64.
* sysdeps/x86/dl-hwcap.h (HWCAP_COUNT): Updated.
(HWCAP_IMPORTANT): Likewise.
(HWCAP_X86_64): New enum.
(HWCAP_X86_AVX512_1): Updated.
* sysdeps/x86/dl-procinfo.c (_dl_x86_hwcap_flags): Add "x86_64".
* sysdeps/x86_64/Makefile (tests): Add tst-x86_64-1.
(modules-names): Add x86_64/tst-x86_64mod-1.
(LDFLAGS-tst-x86_64mod-1.so): New.
($(objpfx)tst-x86_64-1): Likewise.
($(objpfx)x86_64/tst-x86_64mod-1.os): Likewise.
(tst-x86_64-1-clean): Likewise.
* sysdeps/x86_64/tst-x86_64-1.c: New file.
* sysdeps/x86_64/tst-x86_64mod-1.c: Likewise.
ChangeLog
sysdeps/x86/cpu-features.c
sysdeps/x86/dl-hwcap.h
sysdeps/x86/dl-procinfo.c
sysdeps/x86_64/Makefile
sysdeps/x86_64/tst-x86_64-1.c [new file with mode: 0644]
sysdeps/x86_64/tst-x86_64mod-1.c [new file with mode: 0644]