Xolominer in Sparc64 Solaris 11.1

Well I did get it to compile on 32-bit, but with horrible address alignment issues once it started doing the memcpy for the hello message.

Anyway now I’m running with -m64 and coming up with the following:

	

    /bin/sh ../share/genbuild.sh obj/build.h
    g++ -c -m64 -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/joeuser/xolominer2/src -I/home/joeuser/xolominer2/src/obj -I/opt/csw/gxx/include/boost -I/usr/local/BerkeleyDB.4.8/include -I/opt/csw/include -DUSE_IPV6=1 -I/home/joeuser/xolominer2/src/leveldb/include -I/home/joeuser/xolominer2/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/main.d -o obj/main.o main.cpp
    g++ -c -m64 -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/joeuser/xolominer2/src -I/home/joeuser/xolominer2/src/obj -I/opt/csw/gxx/include/boost -I/usr/local/BerkeleyDB.4.8/include -I/opt/csw/include -DUSE_IPV6=1 -I/home/joeuser/xolominer2/src/leveldb/include -I/home/joeuser/xolominer2/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/bitcoinrpc.d -o obj/bitcoinrpc.o bitcoinrpc.cpp
    g++ -c -m64 -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/joeuser/xolominer2/src -I/home/joeuser/xolominer2/src/obj -I/opt/csw/gxx/include/boost -I/usr/local/BerkeleyDB.4.8/include -I/opt/csw/include -DUSE_IPV6=1 -I/home/joeuser/xolominer2/src/leveldb/include -I/home/joeuser/xolominer2/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/rpcmining.d -o obj/rpcmining.o rpcmining.cpp
    g++ -c -m64 -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/joeuser/xolominer2/src -I/home/joeuser/xolominer2/src/obj -I/opt/csw/gxx/include/boost -I/usr/local/BerkeleyDB.4.8/include -I/opt/csw/include -DUSE_IPV6=1 -I/home/joeuser/xolominer2/src/leveldb/include -I/home/joeuser/xolominer2/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -MMD -MF obj/main_poolminer.d -o obj/main_poolminer.o main_poolminer.cpp
    rpcmining.cpp: In function ‘json_spirit::Value getblocktemplate(const json_spirit::Array&, bool)’:
    rpcmining.cpp:380:59: error: conversion from ‘std::map<uint256, long int, std::less<uint256>, std::allocator<std::pair<const uint256, long int> > >::mapped_type’ to ‘const std::vector<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char> > >, std::allocator<json_spirit::Value_impl<json_spirit::Config_vector<std::basic_string<char> > > > >::value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:385:79: error: conversion from ‘long int’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:386:84: error: conversion from ‘long int’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:409:82: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:411:80: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:414:66: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:415:63: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:416:60: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    rpcmining.cpp:418:69: error: conversion from ‘int64_t’ to ‘const json_spirit::Pair_impl<json_spirit::Config_vector<std::basic_string<char> > >::Value_type’ is ambiguous
    json/json_spirit_value.h:283:5: note: candidates are: json_spirit::Value_impl<Config>::Value_impl(double) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:275:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::uint64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::uint64_t = long long unsigned int]
    json/json_spirit_value.h:267:5: note:                 json_spirit::Value_impl<Config>::Value_impl(boost::int64_t) [with Config = json_spirit::Config_vector<std::basic_string<char> >, boost::int64_t = long long int]
    json/json_spirit_value.h:259:5: note:                 json_spirit::Value_impl<Config>::Value_impl(int) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:251:5: note:                 json_spirit::Value_impl<Config>::Value_impl(bool) [with Config = json_spirit::Config_vector<std::basic_string<char> >]
    json/json_spirit_value.h:219:5: note:                 json_spirit::Value_impl<Config>::Value_impl(json_spirit::Value_impl<Config>::Const_str_ptr) [with Config = json_spirit::Config_vector<std::basic_string<char> >, json_spirit::Value_impl<Config>::Const_str_ptr = const char*] <near match>
    gmake: *** [obj/rpcmining.o] Error 1
    gmake: *** Waiting for unfinished jobs....
    gmake: *** [obj/bitcoinrpc.o] Interrupt
    gmake: *** [obj/main_poolminer.o] Interrupt
    gmake: *** [obj/main.o] Interrupt

Now I’m an SA, not a C++ programmer, and this is a little outside of my skillset. Any ideas on what could cause this?
I’ve had a lot of luck so far in fixing any ambiguous type errors, but this is gibberish to me.

any good news?

Nothing yet. I did manage to get past that line but had issues somewhere else. I think my chainsaw approach isn’t working. :smiley:

I’m going to try on Debian though and see if it fares any better.

some info https://bitcointalk.org/index.php?topic=255782.msg5122221#msg5122221

I agree, and this seems to be prevalent across all crypto mining.

From what I know of it, it’s not an insurmountable problem, however the rewards aren’t likely to be good. I’d hoped a SPARC64 VI or better machine would fare pretty well but I would be unable to test for some time. At this point I’m just reading C++ books and trying to bump up my skillset before tackling the issue. A friend of mine suggests that I contract to a programmer in a 3rd world country. lol

cpuminer did compile and run and I posted my results in bitcointalk.

This is what I’m working on as well. Not the simplest task in my life :slight_smile: