Pages:
Author

Topic: [ANN]: cpuminer-opt v3.8.8.1, open source optimized multi-algo CPU miner - page 93. (Read 444067 times)

hero member
Activity: 630
Merit: 502
The Dockerfile in the repo is horribly out of date so I created one for my use.

Code:
FROM ubuntu:16.04
RUN BUILD_DEPS="build-essential \
libssl-dev \
libgmp-dev \
automake \
git" && \

apt-get update && \
apt-get install -y ${BUILD_DEPS} libcurl4-openssl-dev libjansson-dev && \
git clone --depth 1 https://github.com/JayDDee/cpuminer-opt.git && \
cd cpuminer-opt && \
./autogen.sh && \
CFLAGS="-O3 -march=native -s -Wall -Wl,--build-id=none" \
CXXFLAGS="$CFLAGS -std=gnu++11 -fpermissive" \
./configure --with-curl --with-crypto && \
make -j $(nproc) && \
make install && \
apt-get remove -y ${BUILD_DEPS} && \
apt-get autoremove -y && \
rm -rf /cpuminer-opt

ENTRYPOINT ["/usr/local/bin/cpuminer"]
CMD ["-h"]
legendary
Activity: 1470
Merit: 1114
Dont waste your time with gcc upgrades.
Time will tell.
Most of them can be only gcc bugs, not the code.

I'm kinda hoping some of my upcoming changes magically make the problem disappear. Currently
the optimized functions define all their internal data as scalar: u64, u32 or bytes. then cast them as vectors.
I'm reversing that, defining them as vectors and only casting them as scalar when interfacing with the
parent algo. all internal operations are vectored.

If there is a subtle pointer mix up somewhere this
change should flush it out. Lyra2 and Cubehash were previously converted, Luffa in 3.5.9, and the
next release will have Groestl done. That will leave Echo and Simd, which coincidentally are used by
hmq1725.

The other functions use sph which is a reference standard of sorts and widely used by many
other miners, notably cpuminer-multi as well as for CPU verification in GPU miners. So the're not likely
the problem.

Like you said, time will tell.
legendary
Activity: 1470
Merit: 1114
@My9bot

 I just tested the hodl workaround. If you want to try it out it's only a 2 line code change.
Edit ./algo/hodl/hodl.cpp and add a line at the top and bottom of the file. It's not a fix but it does do a good
job of avoiding the problem, as long as there's nothing hidden underneath. It might just be a game of
whack-a-mole.

Code:
// don't compile on CPU with AES
#ifndef NO_AES_NI        ///////////////// NEW

#include "miner.h"
...
...
    SHA512Filler( mainMemoryPsuedoRandomData, thr_id, midHash);
  }

#endif          ///////////////////////// NEW

Let me know if it works.

Edit: I had another thought. I had to use a hack to get non-aes hodl to work on Windows. That may
be part of the problem. Hacks have a tendecy to be fragile.

Edit: Another thought and a question. Did you compile with -std=gnu++11 as is done in the winbuild.sh script?

This question might also applies to the hmq1725. I don't think there's any c++ code in hmq1725
but it doesn't hurt to try. There may be a switch in the newer compilers that makes them compile
like gcc 4.8.
full member
Activity: 154
Merit: 100
Dont waste your time with gcc upgrades.
Time will tell.
Most of them can be only gcc bugs, not the code.
legendary
Activity: 1470
Merit: 1114
14.04 gcc 4.8 with intel  avx works 
16.04 gcc 5.4 with sse2 only Cpu still present as of many other algo´s

have nice day
Have noticed it is best to stick at 4.x to avoid issues with miners.

At least until I can figure out what's going on. I can setup a Ubuntu 16.04 VM but I've been busy
making the code faster. Trying to fix gcc 5.4 and 6.3 while still developping on 4.8 would be
a lot more work.

[TLDR skip ahead]

Right now my focus is on trying to do more AVX2 optimizing. As I learn more
I get more ideas and some of them work out. I'm also experimenting with a mix of SSE2 and
AVX2. Some operations are very difficult to perform while juggling 256 bits and are easier if
done 128 at a time. There is some overhead with switching back and forth because the compiler
has to maintain data integrity and move the data from xmm to ymm registers as necessary.
The balance is if the AVX2 code can overcome this overhead. The more AVX2 code there is
the less the overhead.

I'm now testing this with Luffa. Most of the final transformation can easilly be done in AVX2.
There is only one function that I haven't been able to get working in AVX2 so I just call the
SSE2 version. Unforftunately it's a big function so thegain is limited for now. These kinds of
optimizations apply to many algos.

This is much more fun than trying to figure why stuff that works fine when compiled with gcc 4.8
goes to hell when compiled with 5.4 or 6.3.

[TLDR start here]

Issue status

1. gcc 5.4 hmq1725 crashes

There is clearly a problem with hmq1725 but most of its code is shared with many other algos.
Its unique code is straightforward and doesn't any nasty pointer casting, nothing that the other
algos don't do as well. The anly clue that was specific to hmq1725 was it stack usage. That has
been reduced but the problem still occurs. It's back to square one. I don't know whether the problem
is in hmq1725 code or shared code. Whatever it is shows no symptoms when compiled with gcc 4.8
but corrupts the hash and violates the stack when compiled with gcc 5.4.

2. gcc 6.3 non-aes hodl code fails to compile.

I thought of a possible workaround for the hodl compile issue. I can block out the non-aes code so
the compiler doesn't see it when compiling for aes. It's the reverse of what I do to aes code when
compiling on non-aes CPUs. It doesn't fix anything but will allow the compile to succeed on aes CPUs
with the aes version of hodl avaiable. What happens on non-aes CPUs is anyone's guess.
full member
Activity: 154
Merit: 100
14.04 gcc 4.8 with intel  avx works 
16.04 gcc 5.4 with sse2 only Cpu still present as of many other algo´s

have nice day
Have noticed it is best to stick at 4.x to avoid issues with miners.
full member
Activity: 144
Merit: 100
Eager to learn
14.04 gcc 4.8 with intel  avx works 
16.04 gcc 5.4 with sse2 only Cpu still present as of many other algo´s

have nice day
hero member
Activity: 700
Merit: 500
Has anyone retested hmq1725 to see if the stack smashing went away in v3.5.9
on Ubuntu 16.04?

just tested, same results as with 3.5.8 and before, without fno option stack smashing detected, with fno option only rejects (fast)

cheers
legendary
Activity: 1470
Merit: 1114
Has anyone retested hmq1725 to see if the stack smashing went away in v3.5.9
on Ubuntu 16.04?
legendary
Activity: 1470
Merit: 1114
[snipped]

Thanks for testing. All the compile errors are in hodl.cpp yet that file hasn't changed in
several releases. This is c++ and it involves templates, way over my head.

The trigger was a change in algo-gate by moving some code from the default target to the hodl
target. A simple cut/paste from cpu-miner.c into hodl-gate.c (and a few other algos' targets).
hodl-gate.c is the only file in the hodl dir that was modified. The only connection to hodl.cpp
is hodl.cpp includes hodl-gate.h.

Hodl.cpp contains a number of hacks already to get it working, perhaps the new compiler doesn't like
them.

The only difference I can see from moving code from cpu-miner.c to hodl-gate.c is that code now sees
different #includes. But how does that affect compiling a third file?

I'm pretty much stuck. All I can do is tinker with the code so see if I can fix it as magically as I broke
it. But that tinkering would have no direction and would be like throwing darts blindfolded.

The unfortunate part of this is it prevents using any of the algos in that release.

I am considering dropping support for non-aes hodl in the next release and ripping out all those hacks.
I knew it was fragile code and was afraid to touch it once it was working.
Non-aes hodl will still available in the legacy 3.4.12 version. There have been no changes to hodl
since then and not likely any changes in the future, espescially to the non-aes version.

newbie
Activity: 4
Merit: 0
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc


There's not much I can do about your build environment. Like I said you can use the binaries or if you're
comfortable with code you can comment out the lines that don't compile. Since the code is only
used on non-AES CPUs, removing it will have no effect on your mining.
ok first of all thx for your time and help!!!
i recompiled 3.5.8 no problems
3.5.9 i get  errors
because of that i don´t think it is a build environment problem

sry for my bad english

Thanks for that info.

I made a small change in Hodl in v3.5.9 but I see no connection with the code that won't compile. It compiles
and runs fine for me. I simply moved some code from one function to another, I have no idea why it broke
your compile. Unfortunately the vague error messages don't help.

Since the error does not occur for me I have no way to debug it.
ok thx

Same error on master branch with gcc 6.3 (building Docker image from clearlinux)
Dockerfile to compile/reproduce the issue:
Code:
FROM clearlinux:latest

RUN swupd bundle-add dev-utils os-core-dev c-basic && \
    rm -rf /var/lib/swupd/*

RUN git clone https://github.com/JayDDee/cpuminer-opt.git && \
    cd cpuminer-opt && \
    sh build.sh

WORKDIR /cpuminer-opt
ENTRYPOINT ["./cpuminer"]

It crashed on same things on hodl, I have a CPU with aes_ni.
Code:
g++ -DHAVE_CONFIG_H -I.  -Iyes/include -fno-strict-aliasing -I./compat/jansson -I. -Iyes/include  -O3 -march=native -Wall -std=gnu++11 -MT algo/hodl/cpuminer-hodl.o -MD -MP -MF algo/hodl/.deps/cpuminer-hodl.Tpo -c -o algo/hodl/cpuminer-hodl.o `test -f 'algo/hodl/hodl.cpp' || echo './'`algo/hodl/hodl.cpp
In file included from /usr/include/c++/bits/char_traits.h:39:0,
                 from /usr/include/c++/string:40,
                 from /usr/include/c++/stdexcept:39,
                 from algo/hodl/hodl_uint256.h:11,
                 from algo/hodl/hodl.cpp:3:
/usr/include/c++/bits/stl_algobase.h:243:56: error: macro "min" passed 3 arguments, but takes just 2
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
/usr/include/c++/bits/stl_algobase.h:265:56: error: macro "max" passed 3 arguments, but takes just 2
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
In file included from /usr/include/c++/bits/stl_algo.h:60:0,
                 from /usr/include/c++/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
/usr/include/c++/bits/algorithmfwd.h:362:41: error: macro "max" passed 3 arguments, but takes just 2
     max(const _Tp&, const _Tp&, _Compare);
                                         ^
/usr/include/c++/bits/algorithmfwd.h:375:41: error: macro "min" passed 3 arguments, but takes just 2
     min(const _Tp&, const _Tp&, _Compare);
                                         ^
/usr/include/c++/bits/algorithmfwd.h:403:30: error: macro "min" requires 2 arguments, but only 1 given
     min(initializer_list<_Tp>);
                              ^
/usr/include/c++/bits/algorithmfwd.h:413:30: error: macro "max" requires 2 arguments, but only 1 given
     max(initializer_list<_Tp>);
                              ^
In file included from /usr/include/c++/bits/uniform_int_dist.h:35:0,
                 from /usr/include/c++/bits/stl_algo.h:66,
                 from /usr/include/c++/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
/usr/include/c++/limits:320:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
           ^
/usr/include/c++/limits:324:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
           ^
/usr/include/c++/limits:387:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return false; }
           ^
/usr/include/c++/limits:390:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return true; }
           ^
/usr/include/c++/limits:394:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:456:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min(char); }
           ^
/usr/include/c++/limits:459:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max(char); }
           ^
/usr/include/c++/limits:463:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:523:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__SCHAR_MAX__ - 1; }
           ^
/usr/include/c++/limits:526:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__; }
           ^
/usr/include/c++/limits:530:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:593:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
/usr/include/c++/limits:596:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__ * 2U + 1; }
           ^
/usr/include/c++/limits:600:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:666:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (wchar_t); }
           ^
/usr/include/c++/limits:669:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max (wchar_t); }
           ^
/usr/include/c++/limits:673:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:735:11: error: macro "min" requires 2 arguments, but only 1 given
       min() noexcept { return __glibcxx_min (char16_t); }
           ^
/usr/include/c++/limits:738:11: error: macro "max" requires 2 arguments, but only 1 given
       max() noexcept { return __glibcxx_max (char16_t); }
           ^
/usr/include/c++/limits:741:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:796:11: error: macro "min" requires 2 arguments, but only 1 given
       min() noexcept { return __glibcxx_min (char32_t); }
           ^
/usr/include/c++/limits:799:11: error: macro "max" requires 2 arguments, but only 1 given
       max() noexcept { return __glibcxx_max (char32_t); }
           ^
/usr/include/c++/limits:802:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:858:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__SHRT_MAX__ - 1; }
           ^
/usr/include/c++/limits:861:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__; }
           ^
/usr/include/c++/limits:865:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:925:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
/usr/include/c++/limits:928:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__ * 2U + 1; }
           ^
/usr/include/c++/limits:932:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:998:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__INT_MAX__ - 1; }
           ^
/usr/include/c++/limits:1001:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__; }
           ^
/usr/include/c++/limits:1005:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1065:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
/usr/include/c++/limits:1068:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__ * 2U + 1; }
           ^
/usr/include/c++/limits:1072:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1137:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_MAX__ - 1; }
           ^
/usr/include/c++/limits:1140:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__; }
           ^
/usr/include/c++/limits:1144:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1204:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
/usr/include/c++/limits:1207:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__ * 2UL + 1; }
           ^
/usr/include/c++/limits:1211:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1277:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_LONG_MAX__ - 1; }
           ^
/usr/include/c++/limits:1280:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__; }
           ^
/usr/include/c++/limits:1284:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1347:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
/usr/include/c++/limits:1350:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__ * 2ULL + 1; }
           ^
/usr/include/c++/limits:1354:38: error: macro "min" requires 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
/usr/include/c++/limits:1570:85: error: macro "min" requires 2 arguments, but only 1 given
    __INT_N_201103 (__GLIBCXX_TYPE_INT_N_0), __INT_N_U201103 (__GLIBCXX_TYPE_INT_N_0))
                                                                                     ^
/usr/include/c++/limits:1570:85: error: macro "min" requires 2 arguments, but only 1 given
/usr/include/c++/limits:1570:85: error: macro "min" requires 2 arguments, but only 1 given
/usr/include/c++/limits:1570:85: error: macro "max" requires 2 arguments, but only 1 given
/usr/include/c++/limits:1570:85: error: macro "min" requires 2 arguments, but only 1 given
/usr/include/c++/limits:1570:85: error: macro "max" requires 2 arguments, but only 1 given
/usr/include/c++/limits:1598:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MIN__; }
           ^
/usr/include/c++/limits:1601:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
           ^
/usr/include/c++/limits:1673:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __DBL_MIN__; }
           ^
/usr/include/c++/limits:1676:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __DBL_MAX__; }
           ^
/usr/include/c++/limits:1748:11: error: macro "min" requires 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
           ^
/usr/include/c++/limits:1751:11: error: macro "max" requires 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
           ^
In file included from /usr/include/c++/bits/stl_algo.h:66:0,
                 from /usr/include/c++/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
/usr/include/c++/bits/uniform_int_dist.h:76:56: error: macro "max" requires 2 arguments, but only 1 given
      _IntType __b = std::numeric_limits<_IntType>::max())
                                                        ^
/usr/include/c++/bits/uniform_int_dist.h:105:57: error: macro "max" requires 2 arguments, but only 1 given
       _IntType __b = std::numeric_limits<_IntType>::max())
                                                         ^
/usr/include/c++/bits/uniform_int_dist.h:149:11: error: macro "min" requires 2 arguments, but only 1 given
       min() const
           ^
/usr/include/c++/bits/uniform_int_dist.h:156:11: error: macro "max" requires 2 arguments, but only 1 given
       max() const
           ^
/usr/include/c++/bits/uniform_int_dist.h:227:40: error: macro "min" requires 2 arguments, but only 1 given
  const __uctype __urngmin = __urng.min();
                                        ^
/usr/include/c++/bits/uniform_int_dist.h:228:40: error: macro "max" requires 2 arguments, but only 1 given
  const __uctype __urngmax = __urng.max();
                                        ^
/usr/include/c++/bits/uniform_int_dist.h:296:40: error: macro "min" requires 2 arguments, but only 1 given
  const __uctype __urngmin = __urng.min();
                                        ^
/usr/include/c++/bits/uniform_int_dist.h:297:40: error: macro "max" requires 2 arguments, but only 1 given
  const __uctype __urngmax = __urng.max();
                                        ^
In file included from /usr/include/c++/algorithm:62:0,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
/usr/include/c++/bits/stl_algo.h:3447:34: error: macro "min" requires 2 arguments, but only 1 given
     min(initializer_list<_Tp> __l)
                                  ^
/usr/include/c++/bits/stl_algo.h:3459:34: error: macro "max" requires 2 arguments, but only 1 given
     max(initializer_list<_Tp> __l)
                                  ^
In file included from algo/hodl/block.h:9:0,
                 from algo/hodl/hodl.cpp:5:
algo/hodl/serialize.h:246:64: error: macro "max" requires 2 arguments, but only 1 given
     else if (nSize <= std::numeric_limits::max()) return sizeof(unsigned char) + sizeof(unsigned short);
                                                                ^
algo/hodl/serialize.h:247:62: error: macro "max" requires 2 arguments, but only 1 given
     else if (nSize <= std::numeric_limits::max())  return sizeof(unsigned char) + sizeof(unsigned int);
                                                              ^
algo/hodl/serialize.h:258:64: error: macro "max" requires 2 arguments, but only 1 given
     else if (nSize <= std::numeric_limits::max())
                                                                ^
algo/hodl/serialize.h:263:62: error: macro "max" requires 2 arguments, but only 1 given
     else if (nSize <= std::numeric_limits::max())
                                                              ^
In file included from algo/hodl/hodl.cpp:1:0:
/usr/include/c++/bits/stl_algobase.h:195:5: error: expected unqualified-id before 'const'
     min(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/bits/stl_algobase.h:195:5: error: expected ')' before 'const'
/usr/include/c++/bits/stl_algobase.h:195:5: error: expected initializer before 'const'
/usr/include/c++/bits/stl_algobase.h:219:5: error: expected unqualified-id before 'const'
     max(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/bits/stl_algobase.h:219:5: error: expected ')' before 'const'
/usr/include/c++/bits/stl_algobase.h:219:5: error: expected initializer before 'const'
In file included from /usr/include/c++/bits/char_traits.h:39:0,
                 from /usr/include/c++/string:40,
                 from /usr/include/c++/stdexcept:39,
                 from algo/hodl/hodl_uint256.h:11,
                 from algo/hodl/hodl.cpp:3:
/usr/include/c++/bits/stl_algobase.h:243:5: error: 'std::min' declared as an 'inline' variable
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/bits/stl_algobase.h:246:7: error: expected primary-expression before 'if'
       if (__comp(__b, __a))
       ^~
/usr/include/c++/bits/stl_algobase.h:246:7: error: expected '}' before 'if'
/usr/include/c++/bits/stl_algobase.h:246:7: error: expected ';' before 'if'
/usr/include/c++/bits/stl_algobase.h:248:7: error: expected unqualified-id before 'return'
       return __a;
       ^~~~~~
/usr/include/c++/bits/stl_algobase.h:265:5: error: 'max' declared as an 'inline' variable
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/bits/stl_algobase.h:268:7: error: expected primary-expression before 'if'
       if (__comp(__a, __b))
       ^~
/usr/include/c++/bits/stl_algobase.h:268:7: error: expected '}' before 'if'
/usr/include/c++/bits/stl_algobase.h:268:7: error: expected ';' before 'if'
/usr/include/c++/bits/stl_algobase.h:270:7: error: expected unqualified-id before 'return'
       return __a;
       ^~~~~~
/usr/include/c++/bits/stl_algobase.h:271:5: error: expected declaration before '}' token
     }
     ^
make[2]: *** [Makefile:3390: algo/hodl/cpuminer-hodl.o] Error 1
make[2]: *** Waiting for unfinished jobs....
mv -f algo/groestl/aes_ni/.deps/cpuminer-hash-groestl.Tpo algo/groestl/aes_ni/.deps/cpuminer-hash-groestl.Po
mv -f algo/groestl/aes_ni/.deps/cpuminer-hash-groestl256.Tpo algo/groestl/aes_ni/.deps/cpuminer-hash-groestl256.Po
mv -f algo/haval/.deps/cpuminer-haval.Tpo algo/haval/.deps/cpuminer-haval.Po
make[2]: Leaving directory '/cpuminer-opt'
make[1]: *** [Makefile:3551: all-recursive] Error 1
make[1]: Leaving directory '/cpuminer-opt'
make: *** [Makefile:675: all] Error 2

full member
Activity: 239
Merit: 100
ok thx

I had another thought. You could try compiling with -O2 instead of -O3. This will disable some of
the more aggressive compiler optimizations. Perhaps some of my code conflicts with the
optimizer.

This suggestion might also be useful for the stack smashing crash seen with hmq1725.
Sad
same errors
legendary
Activity: 1470
Merit: 1114
ok thx

I had another thought. You could try compiling with -O2 instead of -O3. This will disable some of
the more aggressive compiler optimizations. Perhaps some of my code conflicts with the
optimizer.

This suggestion might also be useful for the stack smashing crash seen with hmq1725.
full member
Activity: 239
Merit: 100
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc


There's not much I can do about your build environment. Like I said you can use the binaries or if you're
comfortable with code you can comment out the lines that don't compile. Since the code is only
used on non-AES CPUs, removing it will have no effect on your mining.
ok first of all thx for your time and help!!!
i recompiled 3.5.8 no problems
3.5.9 i get  errors
because of that i don´t think it is a build environment problem

sry for my bad english

Thanks for that info.

I made a small change in Hodl in v3.5.9 but I see no connection with the code that won't compile. It compiles
and runs fine for me. I simply moved some code from one function to another, I have no idea why it broke
your compile. Unfortunately the vague error messages don't help.

Since the error does not occur for me I have no way to debug it.
ok thx
legendary
Activity: 1470
Merit: 1114
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc


There's not much I can do about your build environment. Like I said you can use the binaries or if you're
comfortable with code you can comment out the lines that don't compile. Since the code is only
used on non-AES CPUs, removing it will have no effect on your mining.
ok first of all thx for your time and help!!!
i recompiled 3.5.8 no problems
3.5.9 i get  errors
because of that i don´t think it is a build environment problem

sry for my bad english

Thanks for that info.

I made a small change in Hodl in v3.5.9 but I see no connection with the code that won't compile. It compiles
and runs fine for me. I simply moved some code from one function to another, I have no idea why it broke
your compile. Unfortunately the vague error messages don't help.

Since the error does not occur for me I have no way to debug it.
full member
Activity: 239
Merit: 100
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc


There's not much I can do about your build environment. Like I said you can use the binaries or if you're
comfortable with code you can comment out the lines that don't compile. Since the code is only
used on non-AES CPUs, removing it will have no effect on your mining.
ok first of all thx for your time and help!!!
i recompiled 3.5.8 no problems
3.5.9 i get  errors
because of that i don´t think it is a build environment problem

sry for my bad english
legendary
Activity: 1470
Merit: 1114
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc


There's not much I can do about your build environment. Like I said you can use the binaries or if you're
comfortable with code you can comment out the lines that don't compile. Since the code is only
used on non-AES CPUs, removing it will have no effect on your mining.
full member
Activity: 239
Merit: 100
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
my cpu has AES and im using msys2 and it doesn´t support to install a older version of gcc

legendary
Activity: 1470
Merit: 1114
got this error at 3.5.9

Ths look like a problem with your environment. Does 3.5.8 compile? If I recently broke it it's easier to
fix.

This looks to be in c++ code which is only used by the non-AES version of Hodl, suggesting your CPU doesn't
have AES. It also appears you are using gcc 6.4. The Windows binaries are built with 4.8.

I suggest you use gcc 4.8 if possible as there have been other reports of problems with newer compilers. If the
compile fails with 4.8 there may be other issues with your environment.

Or you could take the lazy way out and use the binaries.
full member
Activity: 239
Merit: 100
Code:
got this error at 3.5.9

[code]C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:243:56: error: macro "                                                                                        min" passed 3 arguments, but takes just 2
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:265:56: error: macro "                                                                                        max" passed 3 arguments, but takes just 2
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
                                                        ^
In file included from C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algo.h:60:                                                                                         ,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
C:/msys64_3/mingw64/include/c++/6.3.0/bits/algorithmfwd.h:362:41: error: macro "                                                                                        max" passed 3 arguments, but takes just 2
     max(const _Tp&, const _Tp&, _Compare);
                                         ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/algorithmfwd.h:375:41: error: macro "                                                                                        min" passed 3 arguments, but takes just 2
     min(const _Tp&, const _Tp&, _Compare);
                                         ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/algorithmfwd.h:403:30: error: macro "                                                                                        min" requires 2 arguments, but only 1 given
     min(initializer_list<_Tp>);
                              ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/algorithmfwd.h:413:30: error: macro "                                                                                        max" requires 2 arguments, but only 1 given
     max(initializer_list<_Tp>);
                              ^
In file included from C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dis                                                                                        t.h:35:0,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algo.h:66,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
C:/msys64_3/mingw64/include/c++/6.3.0/limits:320:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:324:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:387:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return false; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:390:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return true; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:394:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:456:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min(char); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:459:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max(char); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:463:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:523:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__SCHAR_MAX__ - 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:526:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:530:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:593:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:596:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__ * 2U + 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:600:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:666:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (wchar_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:669:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max (wchar_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:673:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:735:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() noexcept { return __glibcxx_min (char16_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:738:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() noexcept { return __glibcxx_max (char16_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:741:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:796:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() noexcept { return __glibcxx_min (char32_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:799:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() noexcept { return __glibcxx_max (char32_t); }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:802:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:858:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__SHRT_MAX__ - 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:861:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:865:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:925:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:928:11: error: macro "max" requires                                                                                         2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__ * 2U + 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:932:38: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:998:11: error: macro "min" requires                                                                                         2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__INT_MAX__ - 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1001:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1005:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1065:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1068:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__ * 2U + 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1072:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1137:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_MAX__ - 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1140:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1144:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1204:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1207:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__ * 2UL + 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1211:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1277:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_LONG_MAX__ - 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1280:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1284:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1347:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return 0; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1350:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__ * 2ULL + 1; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1354:38: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       lowest() noexcept { return min(); }
                                      ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
    __INT_N_201103 (__GLIBCXX_TYPE_INT_N_0), __INT_N_U201103 (__GLIBCXX_TYPE_INT                                                                                        _N_0))
                                                                                                                                                                             ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1570:85: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1598:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MIN__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1601:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1673:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __DBL_MIN__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1676:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __DBL_MAX__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1748:11: error: macro "min" require                                                                                        s 2 arguments, but only 1 given
       min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/limits:1751:11: error: macro "max" require                                                                                        s 2 arguments, but only 1 given
       max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
           ^
In file included from C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algo.h:66:                                                                                         ,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/algorithm:62,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:76:56: error: macr                                                                                        o "max" requires 2 arguments, but only 1 given
      _IntType __b = std::numeric_limits<_IntType>::max())
                                                        ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:105:57: error: mac                                                                                        ro "max" requires 2 arguments, but only 1 given
       _IntType __b = std::numeric_limits<_IntType>::max())
                                                         ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:149:11: error: mac                                                                                        ro "min" requires 2 arguments, but only 1 given
       min() const
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:156:11: error: mac                                                                                        ro "max" requires 2 arguments, but only 1 given
       max() const
           ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:227:40: error: mac                                                                                        ro "min" requires 2 arguments, but only 1 given
  const __uctype __urngmin = __urng.min();
                                        ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:228:40: error: mac                                                                                        ro "max" requires 2 arguments, but only 1 given
  const __uctype __urngmax = __urng.max();
                                        ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:296:40: error: mac                                                                                        ro "min" requires 2 arguments, but only 1 given
  const __uctype __urngmin = __urng.min();
                                        ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/uniform_int_dist.h:297:40: error: mac                                                                                        ro "max" requires 2 arguments, but only 1 given
  const __uctype __urngmax = __urng.max();
                                        ^
In file included from C:/msys64_3/mingw64/include/c++/6.3.0/algorithm:62:0,
                 from algo/hodl/serialize.h:13,
                 from algo/hodl/block.h:9,
                 from algo/hodl/hodl.cpp:5:
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algo.h:3447:34: error: macro "min                                                                                        " requires 2 arguments, but only 1 given
     min(initializer_list<_Tp> __l)
                                  ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algo.h:3459:34: error: macro "max                                                                                        " requires 2 arguments, but only 1 given
     max(initializer_list<_Tp> __l)
                                  ^
In file included from algo/hodl/block.h:9:0,
                 from algo/hodl/hodl.cpp:5:
algo/hodl/serialize.h:246:64: error: macro "max" requires 2 arguments, but only                                                                                         1 given
     else if (nSize <= std::numeric_limits::max()) return sizeof                                                                                        (unsigned char) + sizeof(unsigned short);
                                                                ^
algo/hodl/serialize.h:247:62: error: macro "max" requires 2 arguments, but only                                                                                         1 given
     else if (nSize <= std::numeric_limits::max())  return sizeof(                                                                                        unsigned char) + sizeof(unsigned int);
                                                              ^
algo/hodl/serialize.h:258:64: error: macro "max" requires 2 arguments, but only                                                                                         1 given
     else if (nSize <= std::numeric_limits::max())
                                                                ^
algo/hodl/serialize.h:263:62: error: macro "max" requires 2 arguments, but only                                                                                         1 given
     else if (nSize <= std::numeric_limits::max())
                                                              ^
algo/hodl/hodl-gate.c: In function 'hodl_scanhash':
algo/hodl/hodl-gate.c:105:21: warning: passing argument 1 of 'GenRandomGarbage'                                                                                         from incompatible pointer type [-Wincompatible-pointer-types]
   GenRandomGarbage( hodl_scratchbuf, work->data, thr_id );
                     ^~~~~~~~~~~~~~~
In file included from algo/hodl/hodl-gate.c:8:0:
algo/hodl/hodl-wolf.h:25:6: note: expected 'CacheEntry * {aka union _CacheEntry                                                                                         *}' but argument is of type 'unsigned char *'
 void GenRandomGarbage( CacheEntry *Garbage, uint32_t *pdata, int thr_id);
      ^~~~~~~~~~~~~~~~
In file included from algo/hodl/hodl.cpp:1:0:
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:195:5: error: expected                                                                                         unqualified-id before 'const'
     min(const _Tp& __a, const _Tp& __b)
     ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:195:5: error: expected                                                                                         ')' before 'const'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:195:5: error: expected                                                                                         initializer before 'const'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:219:5: error: expected                                                                                         unqualified-id before 'const'
     max(const _Tp& __a, const _Tp& __b)
     ^
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:219:5: error: expected                                                                                         ')' before 'const'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:219:5: error: expected                                                                                         initializer before 'const'
In file included from C:/msys64_3/mingw64/include/c++/6.3.0/bits/char_traits.h:3                                                                                        9:0,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/string:40,
                 from C:/msys64_3/mingw64/include/c++/6.3.0/stdexcept:39,
                 from algo/hodl/hodl_uint256.h:11,
                 from algo/hodl/hodl.cpp:3:
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:243:5: error: 'std::mi                                                                                        n' declared as an 'inline' variable
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:246:7: error: expected                                                                                         primary-expression before 'if'
       if (__comp(__b, __a))
       ^~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:246:7: error: expected                                                                                         '}' before 'if'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:246:7: error: expected                                                                                         ';' before 'if'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:248:7: error: expected                                                                                         unqualified-id before 'return'
       return __a;
       ^~~~~~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:265:5: error: 'max' de                                                                                        clared as an 'inline' variable
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:268:7: error: expected                                                                                         primary-expression before 'if'
       if (__comp(__a, __b))
       ^~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:268:7: error: expected                                                                                         '}' before 'if'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:268:7: error: expected                                                                                         ';' before 'if'
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:270:7: error: expected                                                                                         unqualified-id before 'return'
       return __a;
       ^~~~~~
C:/msys64_3/mingw64/include/c++/6.3.0/bits/stl_algobase.h:271:5: error: expected                                                                                         declaration before '}' token
     }
     ^
make[2]: *** [Makefile:3381: algo/hodl/cpuminer-hodl.o] Fehler 1
make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet....
make[1]: *** [Makefile:3542: all-recursive] Fehler 1
make: *** [Makefile:665: all] Fehler 2
[/code]
Pages:
Jump to: