How to remove hwcaps_2 from a program
Jeffrey Walton
noloader at gmail.com
Fri Nov 9 23:52:02 CET 2018
Hi Everyone,
Sorry for asking here. The Solaris x86 newsgroup looks inactive. My
apologies in advance.
I'm having trouble removing hwcaps_2 from an executable and shared
object. It results in the following:
$ ./cryptest.exe v
ld.so.1: cryptest.exe: fatal: cryptest.exe:
hardware capability (CA_SUNW_HW_2) unsupported: 0x40 [ AVX2 ]
This particular machine lacks AVX2, but we guard the code path at runtime.
My mapfile looks like so:
$ cat cryptopp.mapfile
hwcap_1 = SSE SSE2 OVERRIDE;
hwcap_2 = V0x0;
I can't add OVERRIDE to hwcaps_2:
$ cat cryptopp.mapfile
hwcap_1 = SSE SSE2 OVERRIDE;
hwcap_2 = V0x0 OVERRIDE;
It results in:
ld: fatal: cryptopp.mapfile: 6: unknown segment attribute: override
make: *** [GNUmakefile:1089: cryptest.exe] Error 2
I am also aware of
https://www.oracle.com/technetwork/server-storage/solaris/hwcap-modification-139536.html
, but none of the techniques work for me.
How do I remove hwcaps_2 from the executable and shared library?
We are trying to support back to Solaris 9 so $mapfile_version 1 is preferred.
Thanks in advance.
++++++++++
Here is the output from link:
$ CXX=/opt/developerstudio12.5/bin/CC make -j 5
/opt/developerstudio12.5/bin/CC -o cryptest.exe -DNDEBUG -g -xO3 -template=no%ex
tdef adhoc.o test.o bench1.o bench2.o bench3.o datatest.o dlltest.o fipsalgt.o v
alidat0.o validat1.o validat2.o validat3.o validat4.o validat5.o validat6.o vali
dat7.o validat8.o validat9.o validat10.o regtest1.o regtest2.o regtest3.o regtes
t4.o ./libcryptopp.a -xarch=sse2 -xarch=ssse3 -xarch=sse4_1 -xarch=sse4_2 -xarch
=aes -xarch=avx -xarch=avx2 -M cryptopp.mapfile -lnsl -lsocket
And:
$ elfdump -H cryptest.exe
Capabilities Section: .SUNW_cap
Object Capabilities:
index tag value
[0] CA_SUNW_HW_2 0x40 [ AVX2 ]
[1] CA_SUNW_HW_1 0x1800 [ SSE2 SSE ]
More information about the users
mailing list