View previous topic :: View next topic |
Author |
Message |
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Fri Aug 13, 2021 10:05 pm Post subject: [SOLVED] monero fails to execute (Illegal instruction) |
|
|
Hi,
I'm having issue with net-p2p/monero. I opened a bug here if you want the long version : https://github.com/gentoo-monero/gentoo-monero/issues/18
Otherwise, tldr :
When I build the package inside a core2 chroot on my amd system, the binary cannot be executed on my core2 laptop (Illegal instruction)
But if I compile directly the package on the core2 laptop, then it works fine.
I suspect that when the package is built inside the chroot, it somehow picks up the AES instruction from my amd cpu, which could explain the illegal instruction I think.
My chrooted core2 install make.conf is :
Code: | CHOST="x86_64-pc-linux-gnu"
COMMON_FLAGS="-march=core2 -O2 -pipe"
#COMMON_FLAGS="-march=core2 -O2 -pipe -fomit-frame-pointer"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 sse4_1 ssse3" |
As you can see, the CPU_FLAGS is correctly set so I really wonder why, when built inside the core2 chroot, it would include aes (Just a guess, as I'm not 100% sure), I've been using this chroot to build my packages for my old laptop for 2 years now and this is the first time I'm having such strange issue.
The monero ebuild is here : https://github.com/gentoo-monero/gentoo-monero/blob/master/net-p2p/monero/monero-0.17.2.0.ebuild
Any help appreciated !
Thanks
Last edited by sdauth on Sat Aug 14, 2021 4:59 pm; edited 1 time in total |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Fri Aug 13, 2021 10:41 pm Post subject: |
|
|
First off the CPU_FLAGS_X86 if not in ebuild, are usually ignored, but this isn't what you're seeing.
It's quite possible that the build system of the underlying package simply ignores CFLAGs passed to it and makes its own. A copy of the build log, if it doesn't truncate it, would be interesting. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Fri Aug 13, 2021 10:59 pm Post subject: |
|
|
I build pkgs for my acer laptop (i3) on my ryzen machine, and use this setting
Code: | CFLAGS="-march=skylake -O2 -pipe -mtune=skylake -mno-sse4a -mno-sha -mno-sgx -mno-wbnoinvd -mno-clwb -mno-mwaitx -mno-clzero -mno-rdpid -mno-rtm -mno-hle" |
The flags I have shut off are not common to both processors, ie either intel only flags or ryzen only flags. _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Fri Aug 13, 2021 11:34 pm Post subject: |
|
|
eccerr0r wrote: | A copy of the build log, if it doesn't truncate it, would be interesting. |
monero-0.17.2.0-core2 (laptop build)
monero-0.17.2.0-core2-chroot (chroot build)
I don't see anything relevant / helpful though.
Anon-E-moose wrote: | I build pkgs for my acer laptop (i3) on my ryzen machine, and use this setting
Code: | CFLAGS="-march=skylake -O2 -pipe -mtune=skylake -mno-sse4a -mno-sha -mno-sgx -mno-wbnoinvd -mno-clwb -mno-mwaitx -mno-clzero -mno-rdpid -mno-rtm -mno-hle" |
The flags I have shut off are not common to both processors, ie either intel only flags or ryzen only flags. |
Interesting, so does it mean I should add -mno-aes in the intel core2 chroot ? To make sure it ignores entirely aes I mean. (edit : currently compiling, will report if it worked in a few minutes) |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Fri Aug 13, 2021 11:44 pm Post subject: |
|
|
By rights, it shouldn't be trying to use the aes instruction when using a particular march= that doesn't have it native, but I've seen funny behavior when I don't explicitly turn off flag(s).
Edit to add:
You could run this to see what the differences are
diff -U0 <(LANG=C gcc -Q -O2 -march=skylake --help=target) <(LANG=C gcc -Q -O2 -march=znver2 --help=target)
change skylake and znver2 as appropriate. _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland
Last edited by Anon-E-moose on Fri Aug 13, 2021 11:49 pm; edited 2 times in total |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Fri Aug 13, 2021 11:46 pm Post subject: |
|
|
cmake wrote: | Code: | -- Performing Test _maes_cxx
-- Performing Test _maes_cxx - Success
-- Setting CXX flag -maes
-- Performing Test _maes_c
-- Performing Test _maes_c - Success
-- Setting C flag -maes
-- Performing Test HAVE_SSSE3 |
|
says a lot... So yes you'll have to hack the downstream build system or use distcc. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21624
|
Posted: Fri Aug 13, 2021 11:46 pm Post subject: |
|
|
From the chroot build log: Code: | -- Performing Test _maes_cxx
-- Performing Test _maes_cxx - Success
-- Setting CXX flag -maes |
Code: | C++ -march=core2 -O2 -pipe -pthread -maes -march=native -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing -ftemplate-depth=900 | So it looks like a CMake test is auto-detecting AES support and enabling it. This seems like a bug to me. If the build system is not specifically instructed to auto-detect and automagically enable features, then it shouldn't do that. |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Fri Aug 13, 2021 11:48 pm Post subject: |
|
|
dammit just noticed that even the local build says "aes detected" which is very odd... unless the build logs were crossed... _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Sat Aug 14, 2021 12:14 am Post subject: |
|
|
I tried to set :
Code: | CFLAGS="${COMMON_FLAGS} -mno-aes"
CXXFLAGS="${CFLAGS}" |
in package.env
And unfortunately it doesn't work. -maes gets enabled by cmake configure, so it looks like a monero bug, not ebuild issue after all. As Hu said.
Code: | -- <<< Gentoo configuration >>>
Build type Gentoo
Install path /usr
Compiler flags:
C -march=core2 -O2 -pipe -mno-aes -pthread -maes -march=native -fno-strict-aliasing -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing
C++ -march=core2 -O2 -pipe -mno-aes -pthread -maes -march=native -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing -ftemplate-depth=900
Linker flags:
Executable -Wl,-O1 -Wl,--as-needed -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
Module -Wl,-O1 -Wl,--as-needed
Shared -Wl,-O1 -Wl,--as-needed |
See, -maes is enabled no matter what. Strangely, when building directly on the core2 laptop, aes is "enabled" as you can see in the log but it doesn't cause any issue with the executable. |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 12:35 am Post subject: |
|
|
I'd probably patch CMakeLists.txt to remove these
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
include(CheckLinkerFlag)
as they are adding to the flags you already supply. _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
Hu Moderator
Joined: 06 Mar 2007 Posts: 21624
|
Posted: Sat Aug 14, 2021 12:51 am Post subject: |
|
|
Perhaps -maes is not the problem? OP: what illegal instruction is used that causes the failure? |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 12:54 am Post subject: |
|
|
Hu wrote: | Perhaps -maes is not the problem? OP: what illegal instruction is used that causes the failure? |
The problem is the calls to CheckC* which do this
Code: | -march=core2 -O2 -pipe -mno-aes -pthread -maes -march=native |
_________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 1:01 am Post subject: |
|
|
The -march=native in any case must be removed regardless of what's going on with -maes. I suspect that solving the removal of -march=native will also remove -maes. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Sat Aug 14, 2021 1:42 am Post subject: |
|
|
Hu wrote: | Perhaps -maes is not the problem? OP: what illegal instruction is used that causes the failure? |
With gdb (which I'm not expert with) and monero compiled with debug (CFLAGS="${COMMON_FLAGS} -ggdb")
Code: | $ gdb monerod
run
0x0000555555891a6a in _GLOBAL__sub_I_crypto.cpp () |
and that's it.
@Anon-E-moose and @eccerr0r :
I will try that later, it's a bit late over here. Thanks for the suggestion and your help ! Appreciated |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 1:49 am Post subject: |
|
|
Well, I guess it doesn't really matter what the faulting instruction is. With -march=native on a computer compiling that's not of the same architecture, it can generate bad instructions regardless if -maes is also put there.
I wouldn't be surprised if it put in aes instructions as it's probably doing encryption of sorts. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 10:29 am Post subject: |
|
|
Anon-E-moose wrote: | I'd probably patch CMakeLists.txt to remove these
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
include(CheckLinkerFlag)
as they are adding to the flags you already supply. |
Actually you will need to do more than just block those, those are setting up to be called later.
CMakeLists.txt
Code: | /tmp/monero-gui-0.17.2.0 $ grep -r _flag
src/qt/FutureScheduler.cpp: static std::once_flag once;
CMakeLists.txt:add_c_flag_if_supported(-Werror C_SECURITY_FLAGS)
CMakeLists.txt:add_cxx_flag_if_supported(-Werror CXX_SECURITY_FLAGS)
CMakeLists.txt:add_c_flag_if_supported(-Wformat C_SECURITY_FLAGS)
CMakeLists.txt:add_cxx_flag_if_supported(-Wformat CXX_SECURITY_FLAGS)
CMakeLists.txt:add_c_flag_if_supported(-Wformat-security C_SECURITY_FLAGS)
CMakeLists.txt:add_cxx_flag_if_supported(-Wformat-security CXX_SECURITY_FLAGS)
CMakeLists.txt: add_c_flag_if_supported(-fstack-protector C_SECURITY_FLAGS)
CMakeLists.txt: add_cxx_flag_if_supported(-fstack-protector CXX_SECURITY_FLAGS)
CMakeLists.txt: add_c_flag_if_supported(-fstack-protector-strong C_SECURITY_FLAGS)
CMakeLists.txt: add_cxx_flag_if_supported(-fstack-protector-strong CXX_SECURITY_FLAGS)
CMakeLists.txt: add_c_flag_if_supported(-fcf-protection=full C_SECURITY_FLAGS)
CMakeLists.txt: add_cxx_flag_if_supported(-fcf-protection=full CXX_SECURITY_FLAGS)
CMakeLists.txt: add_c_flag_if_supported(-fstack-clash-protection C_SECURITY_FLAGS)
CMakeLists.txt: add_cxx_flag_if_supported(-fstack-clash-protection CXX_SECURITY_FLAGS)
CMakeLists.txt: add_c_flag_if_supported(-mmitigate-rop C_SECURITY_FLAGS)
CMakeLists.txt: add_cxx_flag_if_supported(-mmitigate-rop CXX_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,-bind_at_load LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,-dead_strip LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,-dead_strip_dylibs LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-pie LD_SECURITY_FLAGS)
CMakeLists.txt:add_linker_flag_if_supported(-Wl,-z,relro LD_SECURITY_FLAGS)
CMakeLists.txt:add_linker_flag_if_supported(-Wl,-z,now LD_SECURITY_FLAGS)
CMakeLists.txt:add_linker_flag_if_supported(-Wl,-z,noexecstack noexecstack_SUPPORTED)
CMakeLists.txt:add_linker_flag_if_supported(-Wl,-z,noexecheap noexecheap_SUPPORTED)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,--dynamicbase LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,--nxcompat LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-Wl,--high-entropy-va LD_SECURITY_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-static-libgcc STATIC_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-static-libstdc++ STATIC_FLAGS)
CMakeLists.txt: add_linker_flag_if_supported(-static STATIC_FLAGS)
CMakeLists.txt:add_c_flag_if_supported(-fno-strict-aliasing C_SECURITY_FLAGS)
CMakeLists.txt:add_cxx_flag_if_supported(-fno-strict-aliasing CXX_SECURITY_FLAGS)
CMakeLists.txt:add_c_flag_if_supported(-fPIC C_SECURITY_FLAGS)
CMakeLists.txt:add_cxx_flag_if_supported(-fPIC CXX_SECURITY_FLAGS) |
I don't see the native or aes, so it's probably a by-product of the above.
None the less, when CFLAGS are passed to cmake it should not try and determine anything past that point concerning cflags.
Edit to add: Looking at a variety of things (I'm far from a cmake expert) but it looks like you need to tell cmake you're cross compiling, that should shut off generation of march=native and associated problems, but I'm not sure how to do it. _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 1:43 pm Post subject: |
|
|
Again I'm just a cmake n00b but my current guess if you apply this patch to the ebuild:
Code: | --- monero-0.17.2.0.ebuild.old 2021-08-14 07:51:20.920625609 -0600
+++ monero-0.17.2.0.ebuild 2021-08-14 07:51:43.620625493 -0600
@@ -72,6 +72,7 @@
# The user can decide for themselves if they want to use ccache.
-DUSE_CCACHE=OFF
-DUSE_DEVICE_TREZOR=$(usex hw-wallet)
+ -DARCH=default
)
cmake_src_configure
|
it *might* do what you want. I can't test this and it's only a guess so you'll only know if it works if you try it ...
Something like this is only for monero due to how they coded their current CMakeLists.txt so if someone searches this thread, no this is not a magic panacea.
Note: I don't think -D NO_AES=1 is also needed but you're welcome to try. All you need is to set ARCH=default as far as I can tell. _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 2:03 pm Post subject: |
|
|
Good find
Quote: | Build Optimization
The CMake build system will, by default, create optimized native builds for your particular system type when you build the software. Using this method, the binaries created provide a better experience and all together faster performance.
However, if you wish to create portable binaries that can be shared between systems, specify -DARCH=default in your CMake arguments during the build process. Note that portable binaries will have a noticable difference in performance than native binaries. For this reason, it is always best to build for your particuar system if possible. |
_________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Sat Aug 14, 2021 4:58 pm Post subject: |
|
|
eccerr0r wrote: | Again I'm just a cmake n00b but my current guess if you apply this patch to the ebuild:
Code: | --- monero-0.17.2.0.ebuild.old 2021-08-14 07:51:20.920625609 -0600
+++ monero-0.17.2.0.ebuild 2021-08-14 07:51:43.620625493 -0600
@@ -72,6 +72,7 @@
# The user can decide for themselves if they want to use ccache.
-DUSE_CCACHE=OFF
-DUSE_DEVICE_TREZOR=$(usex hw-wallet)
+ -DARCH=default
)
cmake_src_configure
|
it *might* do what you want. I can't test this and it's only a guess so you'll only know if it works if you try it ...
Something like this is only for monero due to how they coded their current CMakeLists.txt so if someone searches this thread, no this is not a magic panacea.
Note: I don't think -D NO_AES=1 is also needed but you're welcome to try. All you need is to set ARCH=default as far as I can tell. |
Brilliant ! 100% working !
Also, -DNO_AES is not needed, it just work
With -DARCH=default, no more redudancy of -march=core2 & -march=native as you can see here :
Code: | -- <<< Gentoo configuration >>>
Build type Gentoo
Install path /usr
Compiler flags:
C -march=core2 -O2 -pipe -pthread -maes -fno-strict-aliasing -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing
C++ -march=core2 -O2 -pipe -pthread -maes -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing -ftemplate-depth=900
Linker flags:
Executable -Wl,-O1 -Wl,--as-needed -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
Module -Wl,-O1 -Wl,--as-needed
Shared -Wl,-O1 -Wl,--as-needed
-- Configuring done |
Now I wonder if it can be added to the gentoo monero overlay, I'll leave a comment there. Otherwise, I can of course copy the ebuild with that minor change to my localrepo, no big deal. Thank you ! |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 5:06 pm Post subject: |
|
|
You could add it to the ebuild, but I'd do it by way of adding a USE flag so that it could be turned on and off without re-digesting the ebuild. _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 6:02 pm Post subject: |
|
|
I still see -maes which could be a problem, that looks weird... does it work even with -maes added? _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
Anon-E-moose Watchman
Joined: 23 May 2008 Posts: 6098 Location: Dallas area
|
Posted: Sat Aug 14, 2021 6:14 pm Post subject: |
|
|
eccerr0r wrote: | I still see -maes which could be a problem, that looks weird... does it work even with -maes added? |
I believe cmake runs a little program to test it and makes it's decision on that.
But I'd be curious to see what the flags (cmake generated) are on the target system _________________ PRIME x570-pro, 3700x, 6.1 zen kernel
gcc 13, profile 17.0 (custom bare multilib), openrc, wayland |
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 7:14 pm Post subject: |
|
|
correct, -DNO_AES=1 should disable the test and also -maes, but thought that ARCH=default should also automatically disable the test and -maes... apparently I was wrong, else something doesn't quite make sense here... _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
sdauth Guru
Joined: 19 Sep 2018 Posts: 569 Location: Ásgarðr
|
Posted: Sat Aug 14, 2021 7:43 pm Post subject: |
|
|
eccerr0r wrote: | I still see -maes which could be a problem, that looks weird... does it work even with -maes added? |
yes, it works, i'm currently resynchronizing the blockchain, I'm looking at monerod log and nothing wrong
I haven't tried to explicitly disable aes with -DNO_AES yet (I only tested to see what flags were generated but interrupted the build since I need cpu power atm) since it worked without it.
Without -DNO_AES :
Code: | -- Performing Test _maes_cxx
-- Performing Test _maes_cxx - Success
-- Setting CXX flag -maes
-- Performing Test _maes_c
-- Performing Test _maes_c - Success
-- Setting C flag -maes
-- Performing Test HAVE_SSSE3
-- Performing Test HAVE_SSSE3 - Success
-- Performing Test HAVE_AVX2
-- Performing Test HAVE_AVX2 - Success
-- Performing Test HAVE_CXX_ATOMICS
-- Performing Test HAVE_CXX_ATOMICS - Success
-- Could not find HIDAPI
-- Trezor support disabled by USE_DEVICE_TREZOR
-- Building on x86_64 for default
-- AES support enabled
-- Performing Test _Wformat_c
-- Performing Test _Wformat_c - Success
-- Performing Test _Wformat_cxx
-- Performing Test _Wformat_cxx - Success
-- Performing Test _Wformat_security_c
-- Performing Test _Wformat_security_c - Success
-- Performing Test _Wformat_security_cxx
-- Performing Test _Wformat_security_cxx - Success
-- Performing Test _fstack_protector_c
-- Performing Test _fstack_protector_c - Success
-- Performing Test _fstack_protector_cxx
-- Performing Test _fstack_protector_cxx - Success
-- Performing Test _fstack_protector_strong_c
-- Performing Test _fstack_protector_strong_c - Success
-- Performing Test _fstack_protector_strong_cxx
-- Performing Test _fstack_protector_strong_cxx - Success
-- Performing Test _fcf_protection=full_c
-- Performing Test _fcf_protection=full_c - Success
-- Performing Test _fcf_protection=full_cxx
-- Performing Test _fcf_protection=full_cxx - Success
-- Performing Test _fstack_clash_protection_c
-- Performing Test _fstack_clash_protection_c - Success
-- Performing Test _fstack_clash_protection_cxx
-- Performing Test _fstack_clash_protection_cxx - Success
-- Looking for -pie linker flag
-- Looking for -pie linker flag - found
-- Looking for -Wl,-z,relro linker flag
-- Looking for -Wl,-z,relro linker flag - found
-- Looking for -Wl,-z,now linker flag
-- Looking for -Wl,-z,now linker flag - found
-- Looking for -Wl,-z,noexecstack linker flag
-- Looking for -Wl,-z,noexecstack linker flag - found
-- Looking for -Wl,-z,noexecheap linker flag
-- Looking for -Wl,-z,noexecheap linker flag - not found
-- Using C security hardening flags: -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection
-- Using C++ security hardening flags: -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection
-- Using linker security hardening flags: -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
-- Found Boost Version: 107600
-- Looking for rl_copy_text
-- Looking for rl_copy_text - found
-- Looking for rl_filename_completion_function
-- Looking for rl_filename_completion_function - found
-- Found readline library at: /usr
Wallet crypto is using amd64-64-24k backend
CMake Deprecation Warning at src/p2p/CMakeLists.txt:29 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
CMake Deprecation Warning at src/cryptonote_protocol/CMakeLists.txt:29 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
-- Trezor support disabled
-- Not building tests
-- Not building debug utilities
-- Performing Test HAVE_C11
-- Performing Test HAVE_C11 - Success
-- <<< Gentoo configuration >>>
Build type Gentoo
Install path /usr
Compiler flags:
C -march=core2 -O2 -pipe -pthread -maes -fno-strict-aliasing -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing
C++ -march=core2 -O2 -pipe -pthread -maes -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing -ftemplate-depth=900
Linker flags:
Executable -Wl,-O1 -Wl,--as-needed -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
Module -Wl,-O1 -Wl,--as-needed
Shared -Wl,-O1 -Wl,--as-needed
-- Configuring done
|
If I add -DNO_AES=ON, then it warns that AES is disabled (AES support explicitly disabled) but still test for it ! Even when building directly on the laptop lacking aes instruction, it tests for and sets -maes anyway lol.. really strange to say the least.
Code: | -- Performing Test _maes_cxx
-- Performing Test _maes_cxx - Success
-- Setting CXX flag -maes
-- Performing Test _maes_c
-- Performing Test _maes_c - Success
-- Setting C flag -maes
-- Performing Test HAVE_SSSE3
-- Performing Test HAVE_SSSE3 - Success
-- Performing Test HAVE_AVX2
-- Performing Test HAVE_AVX2 - Success
-- Performing Test HAVE_CXX_ATOMICS
-- Performing Test HAVE_CXX_ATOMICS - Success
-- Could not find HIDAPI
-- Trezor support disabled by USE_DEVICE_TREZOR
-- Building on x86_64 for default
-- AES support explicitly disabled
-- Performing Test _Wformat_c
-- Performing Test _Wformat_c - Success
-- Performing Test _Wformat_cxx
-- Performing Test _Wformat_cxx - Success
-- Performing Test _Wformat_security_c
-- Performing Test _Wformat_security_c - Success
-- Performing Test _Wformat_security_cxx
-- Performing Test _Wformat_security_cxx - Success
-- Performing Test _fstack_protector_c
-- Performing Test _fstack_protector_c - Success
-- Performing Test _fstack_protector_cxx
-- Performing Test _fstack_protector_cxx - Success
-- Performing Test _fstack_protector_strong_c
-- Performing Test _fstack_protector_strong_c - Success
-- Performing Test _fstack_protector_strong_cxx
-- Performing Test _fstack_protector_strong_cxx - Success
-- Performing Test _fcf_protection=full_c
-- Performing Test _fcf_protection=full_c - Success
-- Performing Test _fcf_protection=full_cxx
-- Performing Test _fcf_protection=full_cxx - Success
-- Performing Test _fstack_clash_protection_c
-- Performing Test _fstack_clash_protection_c - Success
-- Performing Test _fstack_clash_protection_cxx
-- Performing Test _fstack_clash_protection_cxx - Success
-- Looking for -pie linker flag
-- Looking for -pie linker flag - found
-- Looking for -Wl,-z,relro linker flag
-- Looking for -Wl,-z,relro linker flag - found
-- Looking for -Wl,-z,now linker flag
-- Looking for -Wl,-z,now linker flag - found
-- Looking for -Wl,-z,noexecstack linker flag
-- Looking for -Wl,-z,noexecstack linker flag - found
-- Looking for -Wl,-z,noexecheap linker flag
-- Looking for -Wl,-z,noexecheap linker flag - not found
-- Using C security hardening flags: -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection
-- Using C++ security hardening flags: -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection
-- Using linker security hardening flags: -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
-- Found Boost Version: 107600
-- Looking for rl_copy_text
-- Looking for rl_copy_text - found
-- Looking for rl_filename_completion_function
-- Looking for rl_filename_completion_function - found
-- Found readline library at: /usr
Wallet crypto is using amd64-64-24k backend
CMake Deprecation Warning at src/p2p/CMakeLists.txt:29 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
CMake Deprecation Warning at src/cryptonote_protocol/CMakeLists.txt:29 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
-- Trezor support disabled
-- Not building tests
-- Not building debug utilities
-- Performing Test HAVE_C11
-- Performing Test HAVE_C11 - Success
-- <<< Gentoo configuration >>>
Build type Gentoo
Install path /usr
Compiler flags:
C -march=core2 -O2 -pipe -pthread -DNO_AES -fno-strict-aliasing -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Waggregate-return -Wnested-externs -Wold-style-definition -Wstrict-prototypes -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing
C++ -march=core2 -O2 -pipe -pthread -DNO_AES -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fcf-protection=full -fstack-clash-protection -fno-strict-aliasing -ftemplate-depth=900
Linker flags:
Executable -Wl,-O1 -Wl,--as-needed -pie -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack
Module -Wl,-O1 -Wl,--as-needed
Shared -Wl,-O1 -Wl,--as-needed
-- Configuring done |
|
|
Back to top |
|
|
eccerr0r Watchman
Joined: 01 Jul 2004 Posts: 9679 Location: almost Mile High in the USA
|
Posted: Sat Aug 14, 2021 8:02 pm Post subject: |
|
|
Well in the compiler flags section it puts a superfluous -DNO_AES there but theres no -maes so this is actually the desired behavior, however, if it did not actually emit any aes instructions, then it doesn't matter. Maybe gcc couldn't figure out how to convert C to using the aes instructions *shrug*...
Well, at least it works so I guess it's a no-op... _________________ Intel Core i7 2700K/Radeon R7 250/24GB DDR3/256GB SSD
What am I supposed watching? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|