From 90137b391e090785461027fc4c0ddc3efff509ec Mon Sep 17 00:00:00 2001 From: Jay D Dee Date: Sun, 30 Jan 2022 20:59:54 -0500 Subject: [PATCH] v3.19.5 --- RELEASE_NOTES | 13 ++ .../argon2a/ar2/sj/scrypt-jane-portable-x86.h | 4 +- .../argon2a/ar2/sj/scrypt-jane-romix-basic.h | 3 +- algo/blake/decred-gate.c | 3 + algo/hodl/sha512-avx.h | 2 +- algo/ripemd/sph_ripemd.c | 6 + algo/ripemd/sph_ripemd.h | 3 + algo/sm3/sph_sm3.h | 2 +- algo/x16/x16rt-4way.c | 20 ++-- algo/x16/x16rt.c | 10 +- build-msys2.sh | 10 ++ configure | 20 ++-- configure.ac | 2 +- cpu-miner.c | 113 ++++++++++++------ miner.h | 19 +-- sysinfos.c | 2 +- util.c | 2 +- winbuild-cross.sh | 6 +- 18 files changed, 159 insertions(+), 81 deletions(-) create mode 100755 build-msys2.sh diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 441c15dd..54d18080 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -65,6 +65,19 @@ If not what makes it happen or not happen? Change Log ---------- +v3.19.5 + +Enhanced stratum-keepalive preemptively resets the stratum connection +before the server to avoid lost shares. + +Added build-msys2.sh scrypt for easier compiling on Windows, see Wiki for details. + +X16RT: eliminate unnecessary recalculations of the hash order. + +Fix a few compiler warnings. + +Fixed log colour error when a block is solved. + v3.19.4 #359: Fix verthash memory allocation for non-hugepages, broken in v3.19.3. diff --git a/algo/argon2/argon2a/ar2/sj/scrypt-jane-portable-x86.h b/algo/argon2/argon2a/ar2/sj/scrypt-jane-portable-x86.h index fb457945..c2f9edcc 100644 --- a/algo/argon2/argon2a/ar2/sj/scrypt-jane-portable-x86.h +++ b/algo/argon2/argon2a/ar2/sj/scrypt-jane-portable-x86.h @@ -344,7 +344,7 @@ static size_t detect_cpu(void) { //union { uint8_t s[12]; uint32_t i[3]; } vendor_string; //cpu_vendors_x86 vendor = cpu_nobody; - x86_regs regs; + x86_regs regs; regs.eax = regs.ebx = regs.ecx = 0; uint32_t max_level, max_ext_level; size_t cpu_flags = 0; #if defined(X86ASM_AVX) || defined(X86_64ASM_AVX) @@ -460,4 +460,4 @@ get_top_cpuflag_desc(size_t flag) { #endif #endif -#endif /* defined(CPU_X86) || defined(CPU_X86_64) */ \ No newline at end of file +#endif /* defined(CPU_X86) || defined(CPU_X86_64) */ diff --git a/algo/argon2/argon2a/ar2/sj/scrypt-jane-romix-basic.h b/algo/argon2/argon2a/ar2/sj/scrypt-jane-romix-basic.h index 57ba649f..3124c847 100644 --- a/algo/argon2/argon2a/ar2/sj/scrypt-jane-romix-basic.h +++ b/algo/argon2/argon2a/ar2/sj/scrypt-jane-romix-basic.h @@ -4,11 +4,12 @@ typedef void (FASTCALL *scrypt_ROMixfn)(scrypt_mix_word_t *X/*[chunkWords]*/, sc #endif /* romix pre/post nop function */ +/* static void asm_calling_convention scrypt_romix_nop(scrypt_mix_word_t *blocks, size_t nblocks) { (void)blocks; (void)nblocks; } - +*/ /* romix pre/post endian conversion function */ static void asm_calling_convention scrypt_romix_convert_endian(scrypt_mix_word_t *blocks, size_t nblocks) { diff --git a/algo/blake/decred-gate.c b/algo/blake/decred-gate.c index 9c58b21b..bee00dd1 100644 --- a/algo/blake/decred-gate.c +++ b/algo/blake/decred-gate.c @@ -70,7 +70,10 @@ void decred_be_build_stratum_request( char *req, struct work *work, rpc_user, work->job_id, xnonce2str, ntimestr, noncestr ); free(xnonce2str); } + +#if !defined(min) #define min(a,b) (a>b ? (b) :(a)) +#endif void decred_build_extraheader( struct work* g_work, struct stratum_ctx* sctx ) { diff --git a/algo/hodl/sha512-avx.h b/algo/hodl/sha512-avx.h index eb7f094a..6fbb5bf7 100644 --- a/algo/hodl/sha512-avx.h +++ b/algo/hodl/sha512-avx.h @@ -45,6 +45,6 @@ void sha512Compute32b_parallel( uint64_t *data[SHA512_PARALLEL_N], uint64_t *digest[SHA512_PARALLEL_N]); -void sha512ProcessBlock(Sha512Context *context); +void sha512ProcessBlock(Sha512Context contexti[2] ); #endif diff --git a/algo/ripemd/sph_ripemd.c b/algo/ripemd/sph_ripemd.c index 9273fb8d..dd610966 100644 --- a/algo/ripemd/sph_ripemd.c +++ b/algo/ripemd/sph_ripemd.c @@ -35,6 +35,7 @@ #include "sph_ripemd.h" +#if 0 /* * Round functions for RIPEMD (original). */ @@ -46,6 +47,7 @@ static const sph_u32 oIV[5] = { SPH_C32(0x67452301), SPH_C32(0xEFCDAB89), SPH_C32(0x98BADCFE), SPH_C32(0x10325476) }; +#endif /* * Round functions for RIPEMD-128 and RIPEMD-160. @@ -63,6 +65,8 @@ static const sph_u32 IV[5] = { #define ROTL SPH_ROTL32 +#if 0 + /* ===================================================================== */ /* * RIPEMD (original hash, deprecated). @@ -539,6 +543,8 @@ sph_ripemd128_comp(const sph_u32 msg[16], sph_u32 val[4]) #undef RIPEMD128_IN } +#endif + /* ===================================================================== */ /* * RIPEMD-160. diff --git a/algo/ripemd/sph_ripemd.h b/algo/ripemd/sph_ripemd.h index 39fe5d1a..b677bd54 100644 --- a/algo/ripemd/sph_ripemd.h +++ b/algo/ripemd/sph_ripemd.h @@ -84,6 +84,7 @@ * can be cloned by copying the context (e.g. with a simple * memcpy()). */ +#if 0 typedef struct { #ifndef DOXYGEN_IGNORE unsigned char buf[64]; /* first field, for alignment */ @@ -204,6 +205,8 @@ void sph_ripemd128_close(void *cc, void *dst); */ void sph_ripemd128_comp(const sph_u32 msg[16], sph_u32 val[4]); +#endif + /* ===================================================================== */ /** diff --git a/algo/sm3/sph_sm3.h b/algo/sm3/sph_sm3.h index eab61d36..3d69e55a 100644 --- a/algo/sm3/sph_sm3.h +++ b/algo/sm3/sph_sm3.h @@ -74,7 +74,7 @@ typedef struct { void sm3_init(sm3_ctx_t *ctx); void sm3_update(sm3_ctx_t *ctx, const unsigned char* data, size_t data_len); -void sm3_final(sm3_ctx_t *ctx, unsigned char digest[SM3_DIGEST_LENGTH]); +void sm3_final(sm3_ctx_t *ctx, unsigned char *digest); void sm3_compress(uint32_t digest[8], const unsigned char block[SM3_BLOCK_SIZE]); void sm3(const unsigned char *data, size_t datalen, unsigned char digest[SM3_DIGEST_LENGTH]); diff --git a/algo/x16/x16rt-4way.c b/algo/x16/x16rt-4way.c index fcd56af6..fee47ffa 100644 --- a/algo/x16/x16rt-4way.c +++ b/algo/x16/x16rt-4way.c @@ -24,15 +24,15 @@ int scanhash_x16rt_8way( struct work *work, uint32_t max_nonce, if ( bench ) ptarget[7] = 0x0cff; static __thread uint32_t s_ntime = UINT32_MAX; - uint32_t ntime = bswap_32( pdata[17] ); - if ( s_ntime != ntime ) + uint32_t masked_ntime = bswap_32( pdata[17] ) & 0xffffff80; + if ( s_ntime != masked_ntime ) { - x16rt_getTimeHash( ntime, &timeHash ); + x16rt_getTimeHash( masked_ntime, &timeHash ); x16rt_getAlgoString( &timeHash[0], x16r_hash_order ); - s_ntime = ntime; + s_ntime = masked_ntime; if ( opt_debug && !thr_id ) applog( LOG_INFO, "hash order: %s time: (%08x) time hash: (%08x)", - x16r_hash_order, ntime, timeHash ); + x16r_hash_order, bswap_32( pdata[17] ), timeHash ); } x16r_8way_prehash( vdata, pdata ); @@ -78,15 +78,15 @@ int scanhash_x16rt_4way( struct work *work, uint32_t max_nonce, if ( bench ) ptarget[7] = 0x0cff; static __thread uint32_t s_ntime = UINT32_MAX; - uint32_t ntime = bswap_32( pdata[17] ); - if ( s_ntime != ntime ) + uint32_t masked_ntime = bswap_32( pdata[17] ) & 0xffffff80; + if ( s_ntime != masked_ntime ) { - x16rt_getTimeHash( ntime, &timeHash ); + x16rt_getTimeHash( masked_ntime, &timeHash ); x16rt_getAlgoString( &timeHash[0], x16r_hash_order ); - s_ntime = ntime; + s_ntime = masked_ntime; if ( opt_debug && !thr_id ) applog( LOG_INFO, "hash order: %s time: (%08x) time hash: (%08x)", - x16r_hash_order, ntime, timeHash ); + x16r_hash_order, bswap_32( pdata[17] ), timeHash ); } x16r_4way_prehash( vdata, pdata ); diff --git a/algo/x16/x16rt.c b/algo/x16/x16rt.c index 62507098..7ff8dc5d 100644 --- a/algo/x16/x16rt.c +++ b/algo/x16/x16rt.c @@ -20,15 +20,15 @@ int scanhash_x16rt( struct work *work, uint32_t max_nonce, mm128_bswap32_80( edata, pdata ); static __thread uint32_t s_ntime = UINT32_MAX; - uint32_t ntime = swab32( pdata[17] ); - if ( s_ntime != ntime ) + uint32_t masked_ntime = swab32( pdata[17] ) & 0xffffff80; + if ( s_ntime != masked_ntime ) { - x16rt_getTimeHash( ntime, &timeHash ); + x16rt_getTimeHash( masked_ntime, &timeHash ); x16rt_getAlgoString( &timeHash[0], x16r_hash_order ); - s_ntime = ntime; + s_ntime = masked_ntime; if ( opt_debug && !thr_id ) applog( LOG_INFO, "hash order: %s time: (%08x) time hash: (%08x)", - x16r_hash_order, ntime, timeHash ); + x16r_hash_order, swab32( pdata[17] ), timeHash ); } x16r_prehash( edata, pdata ); diff --git a/build-msys2.sh b/build-msys2.sh new file mode 100755 index 00000000..8f257d40 --- /dev/null +++ b/build-msys2.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# +# Compile on Windows using MSYS2 and MinGW. + +make distclean || echo clean +rm -f config.status +./autogen.sh || echo done +CFLAGS="-O3 --param=evrp-mode=legacy -march=native -Wall -D_WIN32_WINNT=0x0601" ./configure --with-curl +make -j 4 +strip -s cpuminer diff --git a/configure b/configure index 6c1104c0..9b150f2d 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cpuminer-opt 3.19.4. +# Generated by GNU Autoconf 2.69 for cpuminer-opt 3.19.5. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -577,8 +577,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cpuminer-opt' PACKAGE_TARNAME='cpuminer-opt' -PACKAGE_VERSION='3.19.4' -PACKAGE_STRING='cpuminer-opt 3.19.4' +PACKAGE_VERSION='3.19.5' +PACKAGE_STRING='cpuminer-opt 3.19.5' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1332,7 +1332,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cpuminer-opt 3.19.4 to adapt to many kinds of systems. +\`configure' configures cpuminer-opt 3.19.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1404,7 +1404,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cpuminer-opt 3.19.4:";; + short | recursive ) echo "Configuration of cpuminer-opt 3.19.5:";; esac cat <<\_ACEOF @@ -1509,7 +1509,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cpuminer-opt configure 3.19.4 +cpuminer-opt configure 3.19.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2012,7 +2012,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cpuminer-opt $as_me 3.19.4, which was +It was created by cpuminer-opt $as_me 3.19.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2993,7 +2993,7 @@ fi # Define the identity of the package. PACKAGE='cpuminer-opt' - VERSION='3.19.4' + VERSION='3.19.5' cat >>confdefs.h <<_ACEOF @@ -6690,7 +6690,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cpuminer-opt $as_me 3.19.4, which was +This file was extended by cpuminer-opt $as_me 3.19.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6756,7 +6756,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cpuminer-opt config.status 3.19.4 +cpuminer-opt config.status 3.19.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 35567589..bf8f9991 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([cpuminer-opt], [3.19.4]) +AC_INIT([cpuminer-opt], [3.19.5]) AC_PREREQ([2.59c]) AC_CANONICAL_SYSTEM diff --git a/cpu-miner.c b/cpu-miner.c index abda606e..992842a3 100644 --- a/cpu-miner.c +++ b/cpu-miner.c @@ -131,6 +131,8 @@ static bool opt_stratum_keepalive = false; static struct timeval stratum_keepalive_timer; // Stratum typically times out in 5 minutes or 300 seconds #define stratum_keepalive_timeout 180 // 3 minutes +static struct timeval stratum_reset_time; + // pk_buffer_size is used as a version selector by b58 code, therefore // it must be set correctly to work. @@ -191,7 +193,6 @@ int default_api_listen = 4048; static struct timeval session_start; static struct timeval five_min_start; static uint64_t session_first_block = 0; -static double latency_sum = 0.; static uint64_t submit_sum = 0; static uint64_t accept_sum = 0; static uint64_t stale_sum = 0; @@ -1147,7 +1148,7 @@ void report_summary_log( bool force ) solved, solved_block_count ); } if ( stratum_errors ) - applog2( LOG_INFO, "Stratum errors %7d", stratum_errors ); + applog2( LOG_INFO, "Stratum resets %7d", stratum_errors ); applog2( LOG_INFO, "Hi/Lo Share Diff %.5g / %.5g", highest_share, lowest_share ); @@ -1278,7 +1279,6 @@ static int share_result( int result, struct work *work, else reject_sum++; } submit_sum++; - latency_sum += latency; pthread_mutex_unlock( &stats_lock ); @@ -1294,9 +1294,9 @@ static int share_result( int result, struct work *work, else rcol = CL_LRD; } - applog( LOG_INFO, "%d %s%s %s%s %s%s %s%s" CL_WHT ", %.3f sec (%dms)", + applog( LOG_INFO, "%d %s%s %s%s %s%s %s%s%s, %.3f sec (%dms)", my_stats.share_count, acol, ares, scol, sres, rcol, rres, bcol, - bres, share_time, latency ); + bres, CL_N, share_time, latency ); if ( unlikely( opt_debug || !result || solved ) ) { @@ -2114,7 +2114,7 @@ static void stratum_gen_work( struct stratum_ctx *sctx, struct work *g_work ) { unsigned char *xnonce2str = bebin2hex( g_work->xnonce2, g_work->xnonce2_len ); - applog( LOG_INFO, "Extranonce2 %s, Block %d, Job %s", + applog( LOG_INFO, "Extranonce2 0x%s, Block %d, Job %s", xnonce2str, sctx->block_height, g_work->job_id ); free( xnonce2str ); } @@ -2733,6 +2733,18 @@ void std_build_extraheader( struct work* g_work, struct stratum_ctx* sctx ) sctx->job.final_sapling_hash ); } +// Loop is out of order: +// +// connect/reconnect +// handle message +// get new message +// +// change to +// connect/reconnect +// get new message +// handle message + + static void *stratum_thread(void *userdata ) { struct thr_info *mythr = (struct thr_info *) userdata; @@ -2750,6 +2762,7 @@ static void *stratum_thread(void *userdata ) if ( unlikely( stratum_need_reset ) ) { stratum_need_reset = false; + gettimeofday( &stratum_reset_time, NULL ); stratum_down = true; stratum_errors++; stratum_disconnect( &stratum ); @@ -2760,7 +2773,7 @@ static void *stratum_thread(void *userdata ) applog(LOG_BLUE, "Connection changed to %s", short_url); } else - applog(LOG_WARNING, "Stratum connection reset"); + applog(LOG_BLUE, "Stratum connection reset"); // reset stats queue as well restart_threads(); if ( s_get_ptr != s_put_ptr ) s_get_ptr = s_put_ptr = 0; @@ -2795,34 +2808,11 @@ static void *stratum_thread(void *userdata ) } } - report_summary_log( ( stratum_diff != stratum.job.diff ) - && ( stratum_diff != 0. ) ); +// report_summary_log( ( stratum_diff != stratum.job.diff ) +// && ( stratum_diff != 0. ) ); - if ( stratum.new_job ) - stratum_gen_work( &stratum, &g_work ); - - // is keepalive needed? - if ( opt_stratum_keepalive ) - { - struct timeval now, et; - gettimeofday( &now, NULL ); - // any shares submitted since last keepalive? - if ( last_submit_time.tv_sec > stratum_keepalive_timer.tv_sec ) - memcpy( &stratum_keepalive_timer, &last_submit_time, - sizeof (struct timeval) ); - - timeval_subtract( &et, &now, &stratum_keepalive_timer ); - - if ( et.tv_sec > stratum_keepalive_timeout ) - { - double diff = stratum.job.diff * 0.5; - stratum_keepalive_timer = now; - if ( !opt_quiet ) - applog( LOG_BLUE, - "Stratum keepalive requesting lower difficulty" ); - stratum_suggest_difficulty( &stratum, diff ); - } - } +// if ( stratum.new_job ) +// stratum_gen_work( &stratum, &g_work ); // Wait for new message from server if ( likely( stratum_socket_full( &stratum, opt_timeout ) ) ) @@ -2846,6 +2836,54 @@ static void *stratum_thread(void *userdata ) stratum_need_reset = true; // stratum_disconnect( &stratum ); } + + report_summary_log( ( stratum_diff != stratum.job.diff ) + && ( stratum_diff != 0. ) ); + + if ( !stratum_need_reset ) + { + // Is keepalive needed? Mutex would normally be required but that + // would block any attempt to submit a share. A share is more + // important even if it messes up the keepalive. + + if ( opt_stratum_keepalive ) + { + struct timeval now, et; + gettimeofday( &now, NULL ); + // any shares submitted since last keepalive? + if ( last_submit_time.tv_sec > stratum_keepalive_timer.tv_sec ) + memcpy( &stratum_keepalive_timer, &last_submit_time, + sizeof (struct timeval) ); + + timeval_subtract( &et, &now, &stratum_keepalive_timer ); + + if ( et.tv_sec > stratum_keepalive_timeout ) + { + double diff = stratum.job.diff * 0.5; + stratum_keepalive_timer = now; + if ( !opt_quiet ) + applog( LOG_BLUE, + "Stratum keepalive requesting lower difficulty" ); + stratum_suggest_difficulty( &stratum, diff ); + } + + if ( last_submit_time.tv_sec > stratum_reset_time.tv_sec ) + timeval_subtract( &et, &now, &last_submit_time ); + else + timeval_subtract( &et, &now, &stratum_reset_time ); + + if ( et.tv_sec > stratum_keepalive_timeout + 60 ) + { + applog( LOG_NOTICE, "No shares submitted, resetting stratum connection" ); + stratum_need_reset = true; + stratum_keepalive_timer = now; + } + } // stratum_keepalive + + if ( stratum.new_job && !stratum_need_reset ) + stratum_gen_work( &stratum, &g_work ); + + } // stratum_need_reset } // loop out: return NULL; @@ -3434,7 +3472,8 @@ void parse_arg(int key, char *arg ) break; case 1021: // cpu-priority v = atoi(arg); - if (v < 0 || v > 5) /* sanity check */ + applog(LOG_NOTICE,"--cpu-priority is deprecated and will be removed from a future release"); + if (v < 0 || v > 5) /* sanity check */ show_usage_and_exit(1); opt_priority = v; break; @@ -3470,7 +3509,8 @@ void parse_arg(int key, char *arg ) break; case 1024: opt_randomize = true; - break; + applog(LOG_NOTICE,"--randomize is deprecated and will be removed from a future release"); + break; case 1027: // data-file opt_data_file = strdup( arg ); break; @@ -3930,6 +3970,7 @@ int main(int argc, char *argv[]) memcpy( &five_min_start, &last_submit_time, sizeof (struct timeval) ); memcpy( &session_start, &last_submit_time, sizeof (struct timeval) ); memcpy( &stratum_keepalive_timer, &last_submit_time, sizeof (struct timeval) ); + memcpy( &stratum_reset_time, &last_submit_time, sizeof (struct timeval) ); memcpy( &total_hashes_time, &last_submit_time, sizeof (struct timeval) ); pthread_mutex_unlock( &stats_lock ); diff --git a/miner.h b/miner.h index 903ddc18..407a25db 100644 --- a/miner.h +++ b/miner.h @@ -824,6 +824,7 @@ Options:\n\ qubit Qubit\n\ scrypt scrypt(1024, 1, 1) (default)\n\ scrypt:N scrypt(N, 1, 1)\n\ + scryptn2 scrypt(1048576, 1,1)\n\ sha256d Double SHA-256\n\ sha256q Quad SHA-256, Pyrite (PYE)\n\ sha256t Triple SHA-256, Onecoin (OC)\n\ @@ -886,10 +887,10 @@ Options:\n\ -T, --timeout=N timeout for long poll and stratum (default: 300 seconds)\n\ -s, --scantime=N upper bound on time spent scanning current work when\n\ long polling is unavailable, in seconds (default: 5)\n\ - --randomize Randomize scan range start to reduce duplicates\n\ - -f, --diff-factor=N Divide req. difficulty by this factor (std is 1.0)\n\ + --randomize randomize scan range (deprecated)\n\ + -f, --diff-factor=N divide req. difficulty by this factor (std is 1.0)\n\ -m, --diff-multiplier=N Multiply difficulty by this factor (std is 1.0)\n\ - --hash-meter Display thread hash rates\n\ + --hash-meter display thread hash rates\n\ --coinbase-addr=ADDR payout address for solo mining\n\ --coinbase-sig=TEXT data to insert in the coinbase when possible\n\ --no-longpoll disable long polling support\n\ @@ -910,16 +911,16 @@ Options:\n\ -B, --background run the miner in the background\n\ --benchmark run in offline benchmark mode\n\ --cpu-affinity set process affinity to cpu core(s), mask 0x3 for cores 0 and 1\n\ - --cpu-priority set process priority (default: 0 idle, 2 normal to 5 highest)\n\ + --cpu-priority set process priority (default: 0 idle, 2 normal to 5 highest) (deprecated)\n\ -b, --api-bind=address[:port] IP address for the miner API, default port is 4048)\n\ - --api-remote Allow remote control\n\ - --max-temp=N Only mine if cpu temp is less than specified value (linux)\n\ - --max-rate=N[KMG] Only mine if net hashrate is less than specified value\n\ - --max-diff=N Only mine if net difficulty is less than specified value\n\ + --api-remote allow remote control\n\ + --max-temp=N only mine if cpu temp is less than specified value (linux)\n\ + --max-rate=N[KMG] only mine if net hashrate is less than specified value\n\ + --max-diff=N only mine if net difficulty is less than specified value\n\ -c, --config=FILE load a JSON-format configuration file\n\ --data-file=FILE path and name of data file\n\ --verify enable additional time consuming start up tests\n\ - --stratum-keepalive Prevent disconnects when difficulty is too high\n\ + --stratum-keepalive prevent disconnects when difficulty is too high\n\ -V, --version display version and CPU information and exit\n\ -h, --help display this help text and exit\n\ "; diff --git a/sysinfos.c b/sysinfos.c index ed453e2f..999df9fe 100644 --- a/sysinfos.c +++ b/sysinfos.c @@ -209,7 +209,7 @@ static inline void cpu_getname(char *outbuf, size_t maxsz) { memset(outbuf, 0, maxsz); #ifdef WIN32 - char brand[0xC0] = { 0 }; + char brand[256] = { 0 }; int output[4] = { 0 }, ext; cpuid(0x80000000, output); ext = output[0]; diff --git a/util.c b/util.c index a462bccc..b746ef9a 100644 --- a/util.c +++ b/util.c @@ -1658,7 +1658,7 @@ static bool stratum_parse_extranonce(struct stratum_ctx *sctx, json_t *params, i pthread_mutex_unlock(&sctx->work_lock); if ( !opt_quiet ) /* pool dynamic change */ - applog( LOG_INFO, "Stratum extranonce1= %s, extranonce2 size= %d", + applog( LOG_INFO, "Stratum extranonce1 0x%s, extranonce2 size %d", xnonce1, xn2_size); return true; diff --git a/winbuild-cross.sh b/winbuild-cross.sh index 5774430f..26d10769 100755 --- a/winbuild-cross.sh +++ b/winbuild-cross.sh @@ -16,8 +16,8 @@ export MINGW_LIB="/usr/x86_64-w64-mingw32/lib" export GCC_MINGW_LIB="/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32" # used by GCC export LDFLAGS="-L$LOCAL_LIB/curl/lib/.libs -L$LOCAL_LIB/gmp/.libs -L$LOCAL_LIB/openssl" -# support for Windows CPU groups, AES sometimes not included in -march -export DEFAULT_CFLAGS="-O3 -maes -Wall -D_WIN32_WINNT=0x0601" +# Support for Windows 7 CPU groups, AES sometimes not included in -march +export DEFAULT_CFLAGS="-maes -O3 -Wall -D_WIN32_WINNT=0x0601" export DEFAULT_CFLAGS_OLD="-O3 -Wall" # make link to local gmp header file. @@ -26,8 +26,8 @@ ln -s $LOCAL_LIB/gmp/gmp.h ./gmp.h # make release directory and copy selected DLLs. rm -rf release > /dev/null - mkdir release + cp README.txt release/ cp README.md release/ cp RELEASE_NOTES release/