fireice-uk / xmr-stak

Free Monero RandomX Miner and unified CryptoNight miner

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Compile error of xmd-stak-rx on OpenBSD 6.8

siegfried opened this issue · comments

Describe the bug
Cannot compile.

**Which operating system do you use? **

OpenBSD 6.8

To Reproduce

# Please post all commands and the output.
$ mkdir build
$ cd build
$ cmake .. -DMICROHTTPD_ENABLE=OFF -DHWLOC_ENABLE=OFF -DOpenCL_ENABLE=OFF -DCUDA_ENABLE=OFF 
-- The C compiler identification is Clang 10.0.1
-- The CXX compiler identification is Clang 10.0.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found OpenSSL: /usr/lib/libcrypto.so.46.1 (found version "2.0.0")  
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/warehouse/repos/xmr-stak/build
$ ls
CMakeCache.txt      CMakeFiles          Makefile            bin                 cmake_install.cmake
$ make
Scanning dependencies of target xmr-stak-randomx
[  2%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/aes_hash.cpp.o
[  4%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/allocator.cpp.o
[  6%] Building C object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/argon2_core.c.o
[  8%] Building C object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/argon2_ref.c.o
[ 10%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/blake2_generator.cpp.o
[ 12%] Building C object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/blake2/blake2b.c.o
[ 14%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/bytecode_machine.cpp.o
[ 17%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/dataset.cpp.o
[ 19%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/instructions_portable.cpp.o
[ 21%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/randomx.cpp.o
[ 23%] Building C object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/reciprocal.c.o
[ 25%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/soft_aes.cpp.o
[ 27%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/superscalar.cpp.o
[ 29%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/virtual_machine.cpp.o
[ 31%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/virtual_memory.cpp.o
[ 34%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/vm_compiled_light.cpp.o
[ 36%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/vm_compiled.cpp.o
[ 38%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/vm_interpreted_light.cpp.o
[ 40%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/vm_interpreted.cpp.o
[ 42%] Building C object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/jit_compiler_x86_static.S.o
[ 44%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/randomx/jit_compiler_x86.cpp.o
[ 46%] Building CXX object CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp.o
/mnt/warehouse/repos/xmr-stak/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp:109:38: error: use of undeclared identifier 'MAP_HUGE_SHIFT'
        constexpr int MAP_HUGE_2MB = (21 << MAP_HUGE_SHIFT);
                                            ^
/mnt/warehouse/repos/xmr-stak/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp:110:38: error: use of undeclared identifier 'MAP_HUGE_SHIFT'
        constexpr int MAP_HUGE_1GB = (30 << MAP_HUGE_SHIFT);
                                            ^
/mnt/warehouse/repos/xmr-stak/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp:118:85: error: use of undeclared identifier 'MAP_HUGETLB'
    void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_POPULATE | page_size_flags, 0, 0);
                                                                                    ^
/mnt/warehouse/repos/xmr-stak/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp:118:99: error: use of undeclared identifier 'MAP_POPULATE'
    void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_POPULATE | page_size_flags, 0, 0);
                                                                                                  ^
4 errors generated.
*** Error 1 in . (CMakeFiles/xmr-stak-randomx.dir/build.make:356 'CMakeFiles/xmr-stak-randomx.dir/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp.o')
*** Error 2 in . (CMakeFiles/Makefile2:155 'CMakeFiles/xmr-stak-randomx.dir/all': make -s -f CMakeFiles/xmr-stak-randomx.dir/build.make CMak...)
*** Error 2 in /mnt/warehouse/repos/xmr-stak/build (Makefile:150 'all': make -s -f CMakeFiles/Makefile2 all)

Additional information.
Those macros defined is not supported by OpenBSD. I guess those are Linux dedicate?

# run `cmake -LA .` in the build folder and add the output here
$ cmake -LA
CMake Warning:
  No source or binary directory provided.  Both will be assumed to be the
  same as the current working directory, but note that this warning will
  become a fatal error in future CMake releases.


CMake Error: The source directory "/mnt/warehouse/repos/xmr-stak/build" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
-- Cache values
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
CMAKE_AR:FILEPATH=/usr/bin/ar
CMAKE_BUILD_TYPE:STRING=Release
CMAKE_COLOR_MAKEFILE:BOOL=ON
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
CMAKE_CXX_COMPILER_AR:FILEPATH=CMAKE_CXX_COMPILER_AR-NOTFOUND
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=CMAKE_CXX_COMPILER_RANLIB-NOTFOUND
CMAKE_CXX_FLAGS:STRING=
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=-DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-g -DNDEBUG
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
CMAKE_C_COMPILER_AR:FILEPATH=CMAKE_C_COMPILER_AR-NOTFOUND
CMAKE_C_COMPILER_RANLIB:FILEPATH=CMAKE_C_COMPILER_RANLIB-NOTFOUND
CMAKE_C_FLAGS:STRING=
CMAKE_C_FLAGS_DEBUG:STRING=-g
CMAKE_C_FLAGS_MINSIZEREL:STRING=-DNDEBUG
CMAKE_C_FLAGS_RELEASE:STRING=-DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-g -DNDEBUG
CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
CMAKE_EXE_LINKER_FLAGS:STRING=
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
CMAKE_INSTALL_PREFIX:PATH=/mnt/warehouse/repos/xmr-stak/build
CMAKE_LINKER:FILEPATH=/usr/bin/ld
CMAKE_LINK_STATIC:BOOL=OFF
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
CMAKE_MODULE_LINKER_FLAGS:STRING=
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_NM:FILEPATH=/usr/bin/nm
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
CMAKE_READELF:FILEPATH=/usr/bin/readelf
CMAKE_SHARED_LINKER_FLAGS:STRING=
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
CMAKE_SKIP_RPATH:BOOL=NO
CMAKE_STATIC_LINKER_FLAGS:STRING=
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_STRIP:FILEPATH=/usr/bin/strip
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
CPU_ENABLE:BOOL=ON
CUDA_ENABLE:BOOL=OFF
EXECUTABLE_OUTPUT_PATH:STRING=bin
HWLOC_ENABLE:BOOL=OFF
LIBRARY_OUTPUT_PATH:STRING=bin
MICROHTTPD_ENABLE:BOOL=OFF
OPENSSL_CRYPTO_LIBRARY:FILEPATH=/usr/lib/libcrypto.so.46.1
OPENSSL_INCLUDE_DIR:PATH=/usr/include
OPENSSL_SSL_LIBRARY:FILEPATH=/usr/lib/libssl.so.48.1
OpenCL_ENABLE:BOOL=OFF
OpenSSL_ENABLE:BOOL=ON
PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config
XMR-STAK_COMPILE:STRING=native
pkgcfg_lib__OPENSSL_crypto:FILEPATH=/usr/lib/libcrypto.so.46.1
pkgcfg_lib__OPENSSL_ssl:FILEPATH=/usr/lib/libssl.so.48.1

Feel free to add more information.

Is it possible to make this a compile option?

I added this like FreeBSD. It compiled successfully with several warnings, but running it would get a segment fault.

--- a/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp
+++ b/xmrstak/backend/cpu/crypto/common/VirtualMemory_unix.cpp
@@ -105,6 +105,8 @@ void *xmrstak::VirtualMemory::allocateLargePagesMemory(size_t size, size_t page_
     void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, VM_FLAGS_SUPERPAGE_SIZE_2MB, 0);
 #   elif defined(__FreeBSD__)
     void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_ALIGNED_SUPER | MAP_PREFAULT_READ, -1, 0);
+#   elif defined(__OpenBSD__)
+    void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
 #   else
        constexpr int MAP_HUGE_2MB = (21 << MAP_HUGE_SHIFT);
        constexpr int MAP_HUGE_1GB = (30 << MAP_HUGE_SHIFT);