`bench_bitcoin` crashes at startup, even before getting to main. It seems to have to do with the registration system:

``` c++
// BENCHMARK(foo) expands to:  benchmark::BenchRunner bench_11foo("foo", foo);
#define BENCHMARK(n) \
    benchmark::BenchRunner BOOST_PP_CAT(bench_, BOOST_PP_CAT(__LINE__, n))(BOOST_PP_STRINGIZE(n), n);
```

I don't know how the BOOST_PP_CAT stuff is working internally. This is likely an upstream issue with boost, to do with initialization order.
(FreeBSD 10.3, Boost 1.55)

struct timeval tv;
    gettimeofday(&tv, NULL);
    return tv.tv_usec * 0.000001 + tv.tv_sec;
}
benchmark::BenchRunner::BenchRunner(std::string name, benchmark::BenchFunction func)
{
    benchmarks.insert(std::make_pair(name, func));
}
void
benchmark::BenchRunner::RunAll(double elapsedTimeForOne)
{
    perf_init();
    std::cout << "#Benchmark" << "," << "count" << "," << "min" << "," << "max" << "," << "average" << ","
              << "min_cycles" << "," << "max_cycles" << "," << "average_cycles" << "\n";
    for (std::map<std::string,benchmark::BenchFunction>::iterator it = benchmarks.begin();
         it != benchmarks.end(); ++it) {
        State state(it->first, elapsedTimeForOne);
        benchmark::BenchFunction& func = it->second;
        func(state);
    }
    perf_fini();
}
bool benchmark::State::KeepRunning()