Merge "linker: add support for odm partition"
diff --git a/android-changes-for-ndk-developers.md b/android-changes-for-ndk-developers.md
index 0620d9e..48800ca 100644
--- a/android-changes-for-ndk-developers.md
+++ b/android-changes-for-ndk-developers.md
@@ -360,23 +360,30 @@
## Enable logging of dlopen/dlsym and library loading errors for apps (Available in Android O)
-Starting with Android O it is possible to enable logging of all dlsym/dlopen calls
-for debuggable apps. Here is short instruction on how to do that:
+Starting with Android O it is possible to enable logging of dynamic
+linker activity for debuggable apps by setting a property corresponding
+to the fully-qualified name of the specific app:
```
-adb shell setprop debug.ld.app.com.example.myapp dlsym,dlopen,dlerror
+adb shell setprop debug.ld.app.com.example.myapp dlerror,dlopen,dlsym
adb logcat
```
-Any subset of (dlsym,dlopen,dlerror) can be used.
+Any combination of `dlerror`, `dlopen`, and `dlsym` can be used. There's
+no separate `dlclose` option: `dlopen` covers both loading and unloading
+of libraries. Note also that `dlerror` doesn't correspond to actual
+calls of dlerror(3) but to any time the dynamic linker writes to its
+internal error buffer, so you'll see any errors the dynamic linker would
+have reported, even if the code you're debugging doesn't actually call
+dlerror(3) itself.
-On userdebug and eng builds it is possible to enable tracing for the whole system
-by using debug.ld.all system property instead of app-specific one:
+On userdebug and eng builds it is possible to enable tracing for the
+whole system by using the `debug.ld.all` system property instead of
+app-specific one. For example, to enable logging of all dlopen(3)
+(and thus dclose(3)) calls, and all failures, but not dlsym(3) calls:
```
adb shell setprop debug.ld.all dlerror,dlopen
```
-enables logging of all errors and dlopen calls
-
## dlclose interacts badly with thread local variables with non-trivial destructors
Android allows `dlclose` to unload a library even if there are still
diff --git a/benchmarks/bionic_benchmarks.cpp b/benchmarks/bionic_benchmarks.cpp
index 27829a6..d82c739 100644
--- a/benchmarks/bionic_benchmarks.cpp
+++ b/benchmarks/bionic_benchmarks.cpp
@@ -27,11 +27,50 @@
#include <vector>
#include <android-base/file.h>
+#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <benchmark/benchmark.h>
#include <tinyxml2.h>
#include "util.h"
+static const std::vector<int> kCommonSizes{
+ 8,
+ 64,
+ 512,
+ 1 * KB,
+ 8 * KB,
+ 16 * KB,
+ 32 * KB,
+ 64 * KB,
+ 128 * KB,
+};
+
+static const std::vector<int> kSmallSizes{
+ // Increment by 1
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ // Increment by 8
+ 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144,
+ // Increment by 16
+ 160, 176, 192, 208, 224, 240, 256,
+};
+
+static const std::vector<int> kMediumSizes{
+ 512,
+ 1 * KB,
+ 8 * KB,
+ 16 * KB,
+ 32 * KB,
+ 64 * KB,
+ 128 * KB,
+};
+
+static const std::vector<int> kLargeSizes{
+ 256 * KB,
+ 512 * KB,
+ 1024 * KB,
+ 2048 * KB,
+};
+
std::map<std::string, std::pair<benchmark_func_t, std::string>> g_str_to_func;
std::mutex g_map_lock;
@@ -172,13 +211,85 @@
reinterpret_cast<void(*) (benchmark::State&)>(func_to_bench)(state);
}
+static constexpr char kOnebufManualStr[] = "AT_ONEBUF_MANUAL_ALIGN_";
+static constexpr char kTwobufManualStr[] = "AT_TWOBUF_MANUAL_ALIGN1_";
+
+static bool ParseOnebufManualStr(std::string& arg, std::vector<int>* values) {
+ // The format of this is:
+ // AT_ONEBUF_MANUAL_ALIGN_XX_SIZE_YY
+ // Where:
+ // XX is the alignment
+ // YY is the size
+ int align;
+ int size;
+ if (sscanf(arg.c_str(), "AT_ONEBUF_MANUAL_ALIGN_%d_SIZE_%d" , &align, &size) != 2) {
+ return false;
+ }
+
+ if (align != 0 && (align & (align - 1)) != 0) {
+ return false;
+ }
+
+ values->push_back(static_cast<int>(size));
+ values->push_back(static_cast<int>(align));
+ return true;
+}
+
+static bool ParseTwobufManualStr(std::string& arg, std::vector<int>* values) {
+ // The format of this is:
+ // AT_TWOBUF_MANUAL_ALIGN1_XX_ALIGN2_YY_SIZE_ZZ
+ // Where:
+ // XX is the alignment of the first argument
+ // YY is the alignment of the second argument
+ // ZZ is the size
+ int align1;
+ int align2;
+ int size;
+ if (sscanf(arg.c_str(), "AT_TWOBUF_MANUAL_ALIGN1_%d_ALIGN2_%d_SIZE_%d" ,
+ &align1, &align2, &size) != 3) {
+ return false;
+ }
+
+ // Verify the alignments are powers of 2.
+ if ((align1 != 0 && (align1 & (align1 - 1)) != 0)
+ || (align2 != 0 && (align2 & (align2 - 1)) != 0)) {
+ return false;
+ }
+
+ values->push_back(static_cast<int>(size));
+ values->push_back(static_cast<int>(align1));
+ values->push_back(static_cast<int>(align2));
+ return true;
+}
+
args_vector_t* ResolveArgs(args_vector_t* to_populate, std::string args,
std::map<std::string, args_vector_t>& args_shorthand) {
- // args is either a space-separated list of ints or a macro name.
+ // args is either a space-separated list of ints, a macro name, or
+ // special free form macro.
// To ease formatting in XML files, args is left and right trimmed.
if (args_shorthand.count(args)) {
return &args_shorthand[args];
}
+ // Check for free form macro.
+ if (android::base::StartsWith(args, kOnebufManualStr)) {
+ std::vector<int> values;
+ if (!ParseOnebufManualStr(args, &values)) {
+ errx(1, "ERROR: Bad format of macro %s, should be AT_ONEBUF_MANUAL_ALIGN_XX_SIZE_YY",
+ args.c_str());
+ }
+ to_populate->push_back(std::move(values));
+ return to_populate;
+ } else if (android::base::StartsWith(args, kTwobufManualStr)) {
+ std::vector<int> values;
+ if (!ParseTwobufManualStr(args, &values)) {
+ errx(1,
+ "ERROR: Bad format of macro %s, should be AT_TWOBUF_MANUAL_ALIGN1_XX_ALIGNE2_YY_SIZE_ZZ",
+ args.c_str());
+ }
+ to_populate->push_back(std::move(values));
+ return to_populate;
+ }
+
to_populate->push_back(std::vector<int>());
std::stringstream sstream(args);
std::string argstr;
@@ -306,27 +417,66 @@
return 0;
}
-std::map<std::string, args_vector_t> GetShorthand() {
- std::map<std::string, args_vector_t> args_shorthand {
- {"AT_ALIGNED_TWOBUF", args_vector_t{ {8, 0, 0},
- {64, 0, 0},
- {512, 0, 0},
- {1 * KB, 0, 0},
- {8 * KB, 0, 0},
- {16 * KB, 0, 0},
- {32 * KB, 0, 0},
- {64 * KB, 0, 0} }},
- {"AT_ALIGNED_ONEBUF", args_vector_t{ {(8), 0},
- {(64), 0},
- {(512), 0},
- {(1*KB), 0},
- {(8*KB), 0},
- {(16*KB), 0},
- {(32*KB), 0},
- {(64*KB), 0}}},
+static void SetArgs(const std::vector<int>& sizes, args_vector_t* args) {
+ for (int size : sizes) {
+ args->push_back({size});
+ }
+}
- {"AT_COMMON_SIZES", args_vector_t{ {8}, {64}, {512}, {1*KB}, {8*KB}, {16*KB},
- {32*KB}, {64*KB}}},
+static void SetArgs(const std::vector<int>& sizes, int align, args_vector_t* args) {
+ for (int size : sizes) {
+ args->push_back({size, align});
+ }
+}
+
+
+static void SetArgs(const std::vector<int>& sizes, int align1, int align2, args_vector_t* args) {
+ for (int size : sizes) {
+ args->push_back({size, align1, align2});
+ }
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes) {
+ args_vector_t args;
+ SetArgs(sizes, &args);
+ return args;
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes, int align) {
+ args_vector_t args;
+ SetArgs(sizes, align, &args);
+ return args;
+}
+
+static args_vector_t GetArgs(const std::vector<int>& sizes, int align1, int align2) {
+ args_vector_t args;
+ SetArgs(sizes, align1, align2, &args);
+ return args;
+}
+
+std::map<std::string, args_vector_t> GetShorthand() {
+ std::vector<int> all_sizes(kSmallSizes);
+ all_sizes.insert(all_sizes.end(), kMediumSizes.begin(), kMediumSizes.end());
+ all_sizes.insert(all_sizes.end(), kLargeSizes.begin(), kLargeSizes.end());
+
+ std::map<std::string, args_vector_t> args_shorthand {
+ {"AT_COMMON_SIZES", GetArgs(kCommonSizes)},
+ {"AT_SMALL_SIZES", GetArgs(kSmallSizes)},
+ {"AT_MEDIUM_SIZES", GetArgs(kMediumSizes)},
+ {"AT_LARGE_SIZES", GetArgs(kLargeSizes)},
+ {"AT_ALL_SIZES", GetArgs(all_sizes)},
+
+ {"AT_ALIGNED_ONEBUF", GetArgs(kCommonSizes, 0)},
+ {"AT_ALIGNED_ONEBUF_SMALL", GetArgs(kSmallSizes, 0)},
+ {"AT_ALIGNED_ONEBUF_MEDIUM", GetArgs(kMediumSizes, 0)},
+ {"AT_ALIGNED_ONEBUF_LARGE", GetArgs(kLargeSizes, 0)},
+ {"AT_ALIGNED_ONEBUF_ALL", GetArgs(all_sizes, 0)},
+
+ {"AT_ALIGNED_TWOBUF", GetArgs(kCommonSizes, 0, 0)},
+ {"AT_ALIGNED_TWOBUF_SMALL", GetArgs(kSmallSizes, 0, 0)},
+ {"AT_ALIGNED_TWOBUF_MEDIUM", GetArgs(kMediumSizes, 0, 0)},
+ {"AT_ALIGNED_TWOBUF_LARGE", GetArgs(kLargeSizes, 0, 0)},
+ {"AT_ALIGNED_TWOBUF_ALL", GetArgs(all_sizes, 0, 0)},
// Do not exceed 512. that is about the largest number of properties
// that can be created with the current property area size.
@@ -334,32 +484,26 @@
{"MATH_COMMON", args_vector_t{ {0}, {1}, {2}, {3} }}
};
- for (int i = 1; i < 15; i++) {
- int align = pow(2, i);
- std::stringstream sstream;
- sstream << "AT_" << align << "_ALIGN_TWOBUF";
- args_shorthand.emplace(sstream.str(),
- args_vector_t{ {8, align, align},
- {64, align, align},
- {512, align, align},
- {1 * KB, align, align},
- {8 * KB, align, align},
- {16 * KB, align, align},
- {32 * KB, align, align},
- {64 * KB, align, align} });
- sstream.str("");
- sstream << "AT_" << align << "_ALIGN_ONEBUF";
- args_shorthand.emplace(sstream.str(),
- args_vector_t{ {(8), align},
- {(64), align},
- {(512), align},
- {(1*KB), align},
- {(8*KB), align},
- {(16*KB), align},
- {(32*KB), align},
- {(64*KB), align} });
- sstream.str("");
+
+ args_vector_t args_onebuf;
+ args_vector_t args_twobuf;
+ for (int size : all_sizes) {
+ args_onebuf.push_back({size, 0});
+ args_twobuf.push_back({size, 0, 0});
+ // Skip alignments on zero sizes.
+ if (size == 0) {
+ continue;
+ }
+ for (int align1 = 1; align1 <= 32; align1 <<= 1) {
+ args_onebuf.push_back({size, align1});
+ for (int align2 = 1; align2 <= 32; align2 <<= 1) {
+ args_twobuf.push_back({size, align1, align2});
+ }
+ }
}
+ args_shorthand.emplace("AT_MANY_ALIGNED_ONEBUF", args_onebuf);
+ args_shorthand.emplace("AT_MANY_ALIGNED_TWOBUF", args_twobuf);
+
return args_shorthand;
}
diff --git a/benchmarks/string_benchmark.cpp b/benchmarks/string_benchmark.cpp
index 9635929..38122f2 100644
--- a/benchmarks/string_benchmark.cpp
+++ b/benchmarks/string_benchmark.cpp
@@ -187,6 +187,11 @@
const size_t src_alignment = state.range(1);
const size_t dst_alignment = state.range(2);
+ // Skip sizes that don't make sense.
+ if ((nbytes / 2) == 0) {
+ return;
+ }
+
std::vector<char> src;
std::vector<char> dst;
char* src_aligned = GetAlignedPtrFilled(&src, src_alignment, nbytes / 2, 'x');
diff --git a/benchmarks/suites/string.xml b/benchmarks/suites/string.xml
new file mode 100644
index 0000000..58278c8
--- /dev/null
+++ b/benchmarks/suites/string.xml
@@ -0,0 +1,52 @@
+<fn>
+ <name>BM_string_memcmp</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memmove_non_overlapping</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memmove_overlap_dst_before_src</name>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memmove_overlap_src_before_dst</name>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strcat_copy_only</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strcat_half_copy_half_seek</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strcat_seek_only</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strchr</name>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strcmp</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strcpy</name>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_strlen</name>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment.xml b/benchmarks/test_suites/test_alignment.xml
deleted file mode 100644
index 20df320..0000000
--- a/benchmarks/test_suites/test_alignment.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<fn>
- <name>BM_string_memcmp</name>
- <iterations>1</iterations>
- <args>AT_2_ALIGN_TWOBUF</args>
-</fn>
-<fn>
- <name>BM_string_memcmp</name>
- <iterations>1</iterations>
- <args>AT_4_ALIGN_TWOBUF</args>
-</fn>
-<fn>
- <name>BM_string_memcmp</name>
- <iterations>1</iterations>
- <args>AT_16_ALIGN_TWOBUF</args>
-</fn>
-<fn>
- <name>BM_string_memcmp</name>
- <iterations>1</iterations>
- <args>AT_512_ALIGN_TWOBUF</args>
-</fn>
-<fn>
- <name>BM_string_memcmp</name>
- <iterations>1</iterations>
- <args>AT_2048_ALIGN_TWOBUF</args>
-</fn>
-<fn>
- <name>BM_string_strlen</name>
- <iterations>1</iterations>
- <args>AT_2_ALIGN_ONEBUF</args>
-</fn>
-<fn>
- <name>BM_string_strlen</name>
- <iterations>1</iterations>
- <args>AT_4_ALIGN_ONEBUF</args>
-</fn>
-<fn>
- <name>BM_string_strlen</name>
- <iterations>1</iterations>
- <args>AT_16_ALIGN_ONEBUF</args>
-</fn>
-<fn>
- <name>BM_string_strlen</name>
- <iterations>1</iterations>
- <args>AT_512_ALIGN_ONEBUF</args>
-</fn>
-<fn>
- <name>BM_string_strlen</name>
- <iterations>1</iterations>
- <args>AT_2048_ALIGN_ONEBUF</args>
-</fn>
diff --git a/benchmarks/test_suites/test_alignment_onebuf.xml b/benchmarks/test_suites/test_alignment_onebuf.xml
new file mode 100644
index 0000000..4d7f14f
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_onebuf.xml
@@ -0,0 +1,30 @@
+<fn>
+ <name>BM_string_strlen</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_ONEBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_ONEBUF_SMALL</args>
+</fn>
+<fn>
+ <name>BM_string_strlen</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_ONEBUF_MEDIUM</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_ONEBUF_LARGE</args>
+</fn>
+<fn>
+ <name>BM_string_strlen</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_ONEBUF_ALL</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <iterations>1</iterations>
+ <args>AT_MANY_ALIGNED_ONEBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_onebuf_manual.xml b/benchmarks/test_suites/test_alignment_onebuf_manual.xml
new file mode 100644
index 0000000..97ed5dd
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_onebuf_manual.xml
@@ -0,0 +1,20 @@
+<fn>
+ <name>BM_string_strlen</name>
+ <iterations>1</iterations>
+ <args>AT_ONEBUF_MANUAL_ALIGN_0_SIZE_115</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <iterations>1</iterations>
+ <args>AT_ONEBUF_MANUAL_ALIGN_1_SIZE_1024</args>
+</fn>
+<fn>
+ <name>BM_string_strlen</name>
+ <iterations>1</iterations>
+ <args>AT_ONEBUF_MANUAL_ALIGN_4_SIZE_2048</args>
+</fn>
+<fn>
+ <name>BM_string_memset</name>
+ <iterations>1</iterations>
+ <args>AT_ONEBUF_MANUAL_ALIGN_32_SIZE_4000</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_twobuf.xml b/benchmarks/test_suites/test_alignment_twobuf.xml
new file mode 100644
index 0000000..e29401f
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_twobuf.xml
@@ -0,0 +1,30 @@
+<fn>
+ <name>BM_string_strcpy</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_TWOBUF</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_TWOBUF_SMALL</args>
+</fn>
+<fn>
+ <name>BM_string_strcpy</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_TWOBUF_MEDIUM</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_TWOBUF_LARGE</args>
+</fn>
+<fn>
+ <name>BM_string_strcpy</name>
+ <iterations>1</iterations>
+ <args>AT_ALIGNED_TWOBUF_ALL</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <iterations>1</iterations>
+ <args>AT_MANY_ALIGNED_TWOBUF</args>
+</fn>
diff --git a/benchmarks/test_suites/test_alignment_twobuf_manual.xml b/benchmarks/test_suites/test_alignment_twobuf_manual.xml
new file mode 100644
index 0000000..1d49015
--- /dev/null
+++ b/benchmarks/test_suites/test_alignment_twobuf_manual.xml
@@ -0,0 +1,20 @@
+<fn>
+ <name>BM_string_strcpy</name>
+ <iterations>1</iterations>
+ <args>AT_TWOBUF_MANUAL_ALIGN1_0_ALIGN2_0_SIZE_12345</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <iterations>1</iterations>
+ <args>AT_TWOBUF_MANUAL_ALIGN1_2_ALIGN2_1_SIZE_10248</args>
+</fn>
+<fn>
+ <name>BM_string_strcpy</name>
+ <iterations>1</iterations>
+ <args>AT_TWOBUF_MANUAL_ALIGN1_4_ALIGN2_8_SIZE_17820</args>
+</fn>
+<fn>
+ <name>BM_string_memcpy</name>
+ <iterations>1</iterations>
+ <args>AT_TWOBUF_MANUAL_ALIGN1_16_ALIGN2_32_SIZE_20000</args>
+</fn>
diff --git a/benchmarks/test_suites/test_size.xml b/benchmarks/test_suites/test_size.xml
new file mode 100644
index 0000000..4ff3b51
--- /dev/null
+++ b/benchmarks/test_suites/test_size.xml
@@ -0,0 +1,25 @@
+<fn>
+ <name>BM_stdio_fwrite</name>
+ <iterations>1</iterations>
+ <args>AT_COMMON_SIZES</args>
+</fn>
+<fn>
+ <name>BM_stdio_fread</name>
+ <iterations>1</iterations>
+ <args>AT_SMALL_SIZES</args>
+</fn>
+<fn>
+ <name>BM_stdio_fwrite</name>
+ <iterations>1</iterations>
+ <args>AT_MEDIUM_SIZES</args>
+</fn>
+<fn>
+ <name>BM_stdio_fread</name>
+ <iterations>1</iterations>
+ <args>AT_LARGE_SIZES</args>
+</fn>
+<fn>
+ <name>BM_stdio_fwrite</name>
+ <iterations>1</iterations>
+ <args>AT_ALL_SIZES</args>
+</fn>
diff --git a/benchmarks/tests/interface_test.cpp b/benchmarks/tests/interface_test.cpp
index 3e87afe..33e506e 100644
--- a/benchmarks/tests/interface_test.cpp
+++ b/benchmarks/tests/interface_test.cpp
@@ -266,6 +266,7 @@
"BM_stdio_fread/16384/iterations:1\n"
"BM_stdio_fread/32768/iterations:1\n"
"BM_stdio_fread/65536/iterations:1\n"
+ "BM_stdio_fread/131072/iterations:1\n"
"BM_stdio_fread_unbuffered/8/iterations:1\n"
"BM_stdio_fread_unbuffered/64/iterations:1\n"
"BM_stdio_fread_unbuffered/512/iterations:1\n"
@@ -274,6 +275,7 @@
"BM_stdio_fread_unbuffered/16384/iterations:1\n"
"BM_stdio_fread_unbuffered/32768/iterations:1\n"
"BM_stdio_fread_unbuffered/65536/iterations:1\n"
+ "BM_stdio_fread_unbuffered/131072/iterations:1\n"
"BM_stdio_fwrite/8/iterations:1\n"
"BM_stdio_fwrite/64/iterations:1\n"
"BM_stdio_fwrite/512/iterations:1\n"
@@ -282,6 +284,7 @@
"BM_stdio_fwrite/16384/iterations:1\n"
"BM_stdio_fwrite/32768/iterations:1\n"
"BM_stdio_fwrite/65536/iterations:1\n"
+ "BM_stdio_fwrite/131072/iterations:1\n"
"BM_stdio_fwrite_unbuffered/8/iterations:1\n"
"BM_stdio_fwrite_unbuffered/64/iterations:1\n"
"BM_stdio_fwrite_unbuffered/512/iterations:1\n"
@@ -290,6 +293,7 @@
"BM_stdio_fwrite_unbuffered/16384/iterations:1\n"
"BM_stdio_fwrite_unbuffered/32768/iterations:1\n"
"BM_stdio_fwrite_unbuffered/65536/iterations:1\n"
+ "BM_stdio_fwrite_unbuffered/131072/iterations:1\n"
"BM_stdio_printf_1$s/iterations:1\n"
"BM_stdio_printf_d/iterations:1\n"
"BM_stdio_printf_literal/iterations:1\n"
@@ -302,6 +306,7 @@
"BM_stdlib_malloc_free/16384/iterations:1\n"
"BM_stdlib_malloc_free/32768/iterations:1\n"
"BM_stdlib_malloc_free/65536/iterations:1\n"
+ "BM_stdlib_malloc_free/131072/iterations:1\n"
"BM_stdlib_mbrtowc/0/iterations:1\n"
"BM_stdlib_mbstowcs/0/0/iterations:1\n"
"BM_string_memcmp/8/0/0/iterations:1\n"
@@ -312,6 +317,7 @@
"BM_string_memcmp/16384/0/0/iterations:1\n"
"BM_string_memcmp/32768/0/0/iterations:1\n"
"BM_string_memcmp/65536/0/0/iterations:1\n"
+ "BM_string_memcmp/131072/0/0/iterations:1\n"
"BM_string_memcpy/8/0/0/iterations:1\n"
"BM_string_memcpy/64/0/0/iterations:1\n"
"BM_string_memcpy/512/0/0/iterations:1\n"
@@ -320,6 +326,7 @@
"BM_string_memcpy/16384/0/0/iterations:1\n"
"BM_string_memcpy/32768/0/0/iterations:1\n"
"BM_string_memcpy/65536/0/0/iterations:1\n"
+ "BM_string_memcpy/131072/0/0/iterations:1\n"
"BM_string_memmove_non_overlapping/8/0/0/iterations:1\n"
"BM_string_memmove_non_overlapping/64/0/0/iterations:1\n"
"BM_string_memmove_non_overlapping/512/0/0/iterations:1\n"
@@ -328,6 +335,7 @@
"BM_string_memmove_non_overlapping/16384/0/0/iterations:1\n"
"BM_string_memmove_non_overlapping/32768/0/0/iterations:1\n"
"BM_string_memmove_non_overlapping/65536/0/0/iterations:1\n"
+ "BM_string_memmove_non_overlapping/131072/0/0/iterations:1\n"
"BM_string_memmove_overlap_dst_before_src/8/0/iterations:1\n"
"BM_string_memmove_overlap_dst_before_src/64/0/iterations:1\n"
"BM_string_memmove_overlap_dst_before_src/512/0/iterations:1\n"
@@ -336,6 +344,7 @@
"BM_string_memmove_overlap_dst_before_src/16384/0/iterations:1\n"
"BM_string_memmove_overlap_dst_before_src/32768/0/iterations:1\n"
"BM_string_memmove_overlap_dst_before_src/65536/0/iterations:1\n"
+ "BM_string_memmove_overlap_dst_before_src/131072/0/iterations:1\n"
"BM_string_memmove_overlap_src_before_dst/8/0/iterations:1\n"
"BM_string_memmove_overlap_src_before_dst/64/0/iterations:1\n"
"BM_string_memmove_overlap_src_before_dst/512/0/iterations:1\n"
@@ -344,6 +353,7 @@
"BM_string_memmove_overlap_src_before_dst/16384/0/iterations:1\n"
"BM_string_memmove_overlap_src_before_dst/32768/0/iterations:1\n"
"BM_string_memmove_overlap_src_before_dst/65536/0/iterations:1\n"
+ "BM_string_memmove_overlap_src_before_dst/131072/0/iterations:1\n"
"BM_string_memset/8/0/iterations:1\n"
"BM_string_memset/64/0/iterations:1\n"
"BM_string_memset/512/0/iterations:1\n"
@@ -352,6 +362,7 @@
"BM_string_memset/16384/0/iterations:1\n"
"BM_string_memset/32768/0/iterations:1\n"
"BM_string_memset/65536/0/iterations:1\n"
+ "BM_string_memset/131072/0/iterations:1\n"
"BM_string_strcat_copy_only/8/0/0/iterations:1\n"
"BM_string_strcat_copy_only/64/0/0/iterations:1\n"
"BM_string_strcat_copy_only/512/0/0/iterations:1\n"
@@ -360,6 +371,7 @@
"BM_string_strcat_copy_only/16384/0/0/iterations:1\n"
"BM_string_strcat_copy_only/32768/0/0/iterations:1\n"
"BM_string_strcat_copy_only/65536/0/0/iterations:1\n"
+ "BM_string_strcat_copy_only/131072/0/0/iterations:1\n"
"BM_string_strcat_half_copy_half_seek/8/0/0/iterations:1\n"
"BM_string_strcat_half_copy_half_seek/64/0/0/iterations:1\n"
"BM_string_strcat_half_copy_half_seek/512/0/0/iterations:1\n"
@@ -368,6 +380,7 @@
"BM_string_strcat_half_copy_half_seek/16384/0/0/iterations:1\n"
"BM_string_strcat_half_copy_half_seek/32768/0/0/iterations:1\n"
"BM_string_strcat_half_copy_half_seek/65536/0/0/iterations:1\n"
+ "BM_string_strcat_half_copy_half_seek/131072/0/0/iterations:1\n"
"BM_string_strcat_seek_only/8/0/0/iterations:1\n"
"BM_string_strcat_seek_only/64/0/0/iterations:1\n"
"BM_string_strcat_seek_only/512/0/0/iterations:1\n"
@@ -376,6 +389,7 @@
"BM_string_strcat_seek_only/16384/0/0/iterations:1\n"
"BM_string_strcat_seek_only/32768/0/0/iterations:1\n"
"BM_string_strcat_seek_only/65536/0/0/iterations:1\n"
+ "BM_string_strcat_seek_only/131072/0/0/iterations:1\n"
"BM_string_strchr/8/0/iterations:1\n"
"BM_string_strchr/64/0/iterations:1\n"
"BM_string_strchr/512/0/iterations:1\n"
@@ -384,6 +398,7 @@
"BM_string_strchr/16384/0/iterations:1\n"
"BM_string_strchr/32768/0/iterations:1\n"
"BM_string_strchr/65536/0/iterations:1\n"
+ "BM_string_strchr/131072/0/iterations:1\n"
"BM_string_strcmp/8/0/0/iterations:1\n"
"BM_string_strcmp/64/0/0/iterations:1\n"
"BM_string_strcmp/512/0/0/iterations:1\n"
@@ -392,6 +407,7 @@
"BM_string_strcmp/16384/0/0/iterations:1\n"
"BM_string_strcmp/32768/0/0/iterations:1\n"
"BM_string_strcmp/65536/0/0/iterations:1\n"
+ "BM_string_strcmp/131072/0/0/iterations:1\n"
"BM_string_strcpy/8/0/0/iterations:1\n"
"BM_string_strcpy/64/0/0/iterations:1\n"
"BM_string_strcpy/512/0/0/iterations:1\n"
@@ -400,6 +416,7 @@
"BM_string_strcpy/16384/0/0/iterations:1\n"
"BM_string_strcpy/32768/0/0/iterations:1\n"
"BM_string_strcpy/65536/0/0/iterations:1\n"
+ "BM_string_strcpy/131072/0/0/iterations:1\n"
"BM_string_strlen/8/0/iterations:1\n"
"BM_string_strlen/64/0/iterations:1\n"
"BM_string_strlen/512/0/iterations:1\n"
@@ -408,6 +425,7 @@
"BM_string_strlen/16384/0/iterations:1\n"
"BM_string_strlen/32768/0/iterations:1\n"
"BM_string_strlen/65536/0/iterations:1\n"
+ "BM_string_strlen/131072/0/iterations:1\n"
"BM_string_strstr/8/0/0/iterations:1\n"
"BM_string_strstr/64/0/0/iterations:1\n"
"BM_string_strstr/512/0/0/iterations:1\n"
@@ -416,6 +434,7 @@
"BM_string_strstr/16384/0/0/iterations:1\n"
"BM_string_strstr/32768/0/0/iterations:1\n"
"BM_string_strstr/65536/0/0/iterations:1\n"
+ "BM_string_strstr/131072/0/0/iterations:1\n"
"BM_time_clock_gettime/iterations:1\n"
"BM_time_clock_gettime_syscall/iterations:1\n"
"BM_time_gettimeofday/iterations:1\n"
@@ -456,9 +475,6 @@
"BM_property_serial/256/iterations:1\n"
"BM_property_serial/512/iterations:1\n";
Verify(expected, 0, std::vector<const char*>{"--bionic_iterations=1"});
-
- // Make sure that the test suite can be found in the suites directory.
- Verify(expected, 0, std::vector<const char*>{"--bionic_iterations=1"});
}
TEST_F(SystemTests, small) {
@@ -480,6 +496,7 @@
"BM_string_memcmp/16384/0/0/iterations:1\n"
"BM_string_memcmp/32768/0/0/iterations:1\n"
"BM_string_memcmp/65536/0/0/iterations:1\n"
+ "BM_string_memcmp/131072/0/0/iterations:1\n"
"BM_math_sqrt/iterations:1\n"
"BM_string_memcpy/512/4/4/iterations:25\n"
"BM_property_get/1/iterations:1\n";
@@ -529,6 +546,7 @@
"BM_string_memcmp/16384/0/0/iterations:1\n"
"BM_string_memcmp/32768/0/0/iterations:1\n"
"BM_string_memcmp/65536/0/0/iterations:1\n"
+ "BM_string_memcmp/131072/0/0/iterations:1\n"
"BM_math_sqrt/iterations:1\n"
"BM_string_memcpy/512/4/4/iterations:25\n"
"BM_property_get/1/iterations:1\n"
@@ -540,6 +558,7 @@
"BM_string_memcpy/16384/0/0/iterations:1\n"
"BM_string_memcpy/32768/0/0/iterations:1\n"
"BM_string_memcpy/65536/0/0/iterations:1\n"
+ "BM_string_memcpy/131072/0/0/iterations:1\n"
"BM_math_log10/iterations:1\n";
Verify(expected, 0, std::vector<const char*>{"--bionic_extra=BM_string_memcpy AT_ALIGNED_TWOBUF",
"--bionic_extra=BM_math_log10",
@@ -548,88 +567,2571 @@
"--bionic_iterations=1"});
}
-TEST_F(SystemTests, alignment) {
+TEST_F(SystemTests, sizes) {
std::string expected =
- "BM_string_memcmp/8/2/2/iterations:1\n"
- "BM_string_memcmp/64/2/2/iterations:1\n"
- "BM_string_memcmp/512/2/2/iterations:1\n"
- "BM_string_memcmp/1024/2/2/iterations:1\n"
- "BM_string_memcmp/8192/2/2/iterations:1\n"
- "BM_string_memcmp/16384/2/2/iterations:1\n"
- "BM_string_memcmp/32768/2/2/iterations:1\n"
- "BM_string_memcmp/65536/2/2/iterations:1\n"
- "BM_string_memcmp/8/4/4/iterations:1\n"
- "BM_string_memcmp/64/4/4/iterations:1\n"
- "BM_string_memcmp/512/4/4/iterations:1\n"
- "BM_string_memcmp/1024/4/4/iterations:1\n"
- "BM_string_memcmp/8192/4/4/iterations:1\n"
- "BM_string_memcmp/16384/4/4/iterations:1\n"
- "BM_string_memcmp/32768/4/4/iterations:1\n"
- "BM_string_memcmp/65536/4/4/iterations:1\n"
- "BM_string_memcmp/8/16/16/iterations:1\n"
- "BM_string_memcmp/64/16/16/iterations:1\n"
- "BM_string_memcmp/512/16/16/iterations:1\n"
- "BM_string_memcmp/1024/16/16/iterations:1\n"
- "BM_string_memcmp/8192/16/16/iterations:1\n"
- "BM_string_memcmp/16384/16/16/iterations:1\n"
- "BM_string_memcmp/32768/16/16/iterations:1\n"
- "BM_string_memcmp/65536/16/16/iterations:1\n"
- "BM_string_memcmp/8/512/512/iterations:1\n"
- "BM_string_memcmp/64/512/512/iterations:1\n"
- "BM_string_memcmp/512/512/512/iterations:1\n"
- "BM_string_memcmp/1024/512/512/iterations:1\n"
- "BM_string_memcmp/8192/512/512/iterations:1\n"
- "BM_string_memcmp/16384/512/512/iterations:1\n"
- "BM_string_memcmp/32768/512/512/iterations:1\n"
- "BM_string_memcmp/65536/512/512/iterations:1\n"
- "BM_string_memcmp/8/2048/2048/iterations:1\n"
- "BM_string_memcmp/64/2048/2048/iterations:1\n"
- "BM_string_memcmp/512/2048/2048/iterations:1\n"
- "BM_string_memcmp/1024/2048/2048/iterations:1\n"
- "BM_string_memcmp/8192/2048/2048/iterations:1\n"
- "BM_string_memcmp/16384/2048/2048/iterations:1\n"
- "BM_string_memcmp/32768/2048/2048/iterations:1\n"
- "BM_string_memcmp/65536/2048/2048/iterations:1\n"
- "BM_string_strlen/8/2/iterations:1\n"
- "BM_string_strlen/64/2/iterations:1\n"
- "BM_string_strlen/512/2/iterations:1\n"
- "BM_string_strlen/1024/2/iterations:1\n"
- "BM_string_strlen/8192/2/iterations:1\n"
- "BM_string_strlen/16384/2/iterations:1\n"
- "BM_string_strlen/32768/2/iterations:1\n"
- "BM_string_strlen/65536/2/iterations:1\n"
- "BM_string_strlen/8/4/iterations:1\n"
- "BM_string_strlen/64/4/iterations:1\n"
- "BM_string_strlen/512/4/iterations:1\n"
- "BM_string_strlen/1024/4/iterations:1\n"
- "BM_string_strlen/8192/4/iterations:1\n"
- "BM_string_strlen/16384/4/iterations:1\n"
- "BM_string_strlen/32768/4/iterations:1\n"
- "BM_string_strlen/65536/4/iterations:1\n"
- "BM_string_strlen/8/16/iterations:1\n"
- "BM_string_strlen/64/16/iterations:1\n"
- "BM_string_strlen/512/16/iterations:1\n"
- "BM_string_strlen/1024/16/iterations:1\n"
- "BM_string_strlen/8192/16/iterations:1\n"
- "BM_string_strlen/16384/16/iterations:1\n"
- "BM_string_strlen/32768/16/iterations:1\n"
- "BM_string_strlen/65536/16/iterations:1\n"
- "BM_string_strlen/8/512/iterations:1\n"
- "BM_string_strlen/64/512/iterations:1\n"
- "BM_string_strlen/512/512/iterations:1\n"
- "BM_string_strlen/1024/512/iterations:1\n"
- "BM_string_strlen/8192/512/iterations:1\n"
- "BM_string_strlen/16384/512/iterations:1\n"
- "BM_string_strlen/32768/512/iterations:1\n"
- "BM_string_strlen/65536/512/iterations:1\n"
- "BM_string_strlen/8/2048/iterations:1\n"
- "BM_string_strlen/64/2048/iterations:1\n"
- "BM_string_strlen/512/2048/iterations:1\n"
- "BM_string_strlen/1024/2048/iterations:1\n"
- "BM_string_strlen/8192/2048/iterations:1\n"
- "BM_string_strlen/16384/2048/iterations:1\n"
- "BM_string_strlen/32768/2048/iterations:1\n"
- "BM_string_strlen/65536/2048/iterations:1\n";
- Verify(expected, 0, std::vector<const char*>{GetBionicXmlArg("test_alignment.xml").c_str(),
- "--bionic_iterations=1"});
+ "BM_stdio_fwrite/8/iterations:1\n"
+ "BM_stdio_fwrite/64/iterations:1\n"
+ "BM_stdio_fwrite/512/iterations:1\n"
+ "BM_stdio_fwrite/1024/iterations:1\n"
+ "BM_stdio_fwrite/8192/iterations:1\n"
+ "BM_stdio_fwrite/16384/iterations:1\n"
+ "BM_stdio_fwrite/32768/iterations:1\n"
+ "BM_stdio_fwrite/65536/iterations:1\n"
+ "BM_stdio_fwrite/131072/iterations:1\n"
+ "BM_stdio_fread/1/iterations:1\n"
+ "BM_stdio_fread/2/iterations:1\n"
+ "BM_stdio_fread/3/iterations:1\n"
+ "BM_stdio_fread/4/iterations:1\n"
+ "BM_stdio_fread/5/iterations:1\n"
+ "BM_stdio_fread/6/iterations:1\n"
+ "BM_stdio_fread/7/iterations:1\n"
+ "BM_stdio_fread/8/iterations:1\n"
+ "BM_stdio_fread/9/iterations:1\n"
+ "BM_stdio_fread/10/iterations:1\n"
+ "BM_stdio_fread/11/iterations:1\n"
+ "BM_stdio_fread/12/iterations:1\n"
+ "BM_stdio_fread/13/iterations:1\n"
+ "BM_stdio_fread/14/iterations:1\n"
+ "BM_stdio_fread/15/iterations:1\n"
+ "BM_stdio_fread/16/iterations:1\n"
+ "BM_stdio_fread/24/iterations:1\n"
+ "BM_stdio_fread/32/iterations:1\n"
+ "BM_stdio_fread/40/iterations:1\n"
+ "BM_stdio_fread/48/iterations:1\n"
+ "BM_stdio_fread/56/iterations:1\n"
+ "BM_stdio_fread/64/iterations:1\n"
+ "BM_stdio_fread/72/iterations:1\n"
+ "BM_stdio_fread/80/iterations:1\n"
+ "BM_stdio_fread/88/iterations:1\n"
+ "BM_stdio_fread/96/iterations:1\n"
+ "BM_stdio_fread/104/iterations:1\n"
+ "BM_stdio_fread/112/iterations:1\n"
+ "BM_stdio_fread/120/iterations:1\n"
+ "BM_stdio_fread/128/iterations:1\n"
+ "BM_stdio_fread/136/iterations:1\n"
+ "BM_stdio_fread/144/iterations:1\n"
+ "BM_stdio_fread/160/iterations:1\n"
+ "BM_stdio_fread/176/iterations:1\n"
+ "BM_stdio_fread/192/iterations:1\n"
+ "BM_stdio_fread/208/iterations:1\n"
+ "BM_stdio_fread/224/iterations:1\n"
+ "BM_stdio_fread/240/iterations:1\n"
+ "BM_stdio_fread/256/iterations:1\n"
+ "BM_stdio_fwrite/512/iterations:1\n"
+ "BM_stdio_fwrite/1024/iterations:1\n"
+ "BM_stdio_fwrite/8192/iterations:1\n"
+ "BM_stdio_fwrite/16384/iterations:1\n"
+ "BM_stdio_fwrite/32768/iterations:1\n"
+ "BM_stdio_fwrite/65536/iterations:1\n"
+ "BM_stdio_fwrite/131072/iterations:1\n"
+ "BM_stdio_fread/262144/iterations:1\n"
+ "BM_stdio_fread/524288/iterations:1\n"
+ "BM_stdio_fread/1048576/iterations:1\n"
+ "BM_stdio_fread/2097152/iterations:1\n"
+ "BM_stdio_fwrite/1/iterations:1\n"
+ "BM_stdio_fwrite/2/iterations:1\n"
+ "BM_stdio_fwrite/3/iterations:1\n"
+ "BM_stdio_fwrite/4/iterations:1\n"
+ "BM_stdio_fwrite/5/iterations:1\n"
+ "BM_stdio_fwrite/6/iterations:1\n"
+ "BM_stdio_fwrite/7/iterations:1\n"
+ "BM_stdio_fwrite/8/iterations:1\n"
+ "BM_stdio_fwrite/9/iterations:1\n"
+ "BM_stdio_fwrite/10/iterations:1\n"
+ "BM_stdio_fwrite/11/iterations:1\n"
+ "BM_stdio_fwrite/12/iterations:1\n"
+ "BM_stdio_fwrite/13/iterations:1\n"
+ "BM_stdio_fwrite/14/iterations:1\n"
+ "BM_stdio_fwrite/15/iterations:1\n"
+ "BM_stdio_fwrite/16/iterations:1\n"
+ "BM_stdio_fwrite/24/iterations:1\n"
+ "BM_stdio_fwrite/32/iterations:1\n"
+ "BM_stdio_fwrite/40/iterations:1\n"
+ "BM_stdio_fwrite/48/iterations:1\n"
+ "BM_stdio_fwrite/56/iterations:1\n"
+ "BM_stdio_fwrite/64/iterations:1\n"
+ "BM_stdio_fwrite/72/iterations:1\n"
+ "BM_stdio_fwrite/80/iterations:1\n"
+ "BM_stdio_fwrite/88/iterations:1\n"
+ "BM_stdio_fwrite/96/iterations:1\n"
+ "BM_stdio_fwrite/104/iterations:1\n"
+ "BM_stdio_fwrite/112/iterations:1\n"
+ "BM_stdio_fwrite/120/iterations:1\n"
+ "BM_stdio_fwrite/128/iterations:1\n"
+ "BM_stdio_fwrite/136/iterations:1\n"
+ "BM_stdio_fwrite/144/iterations:1\n"
+ "BM_stdio_fwrite/160/iterations:1\n"
+ "BM_stdio_fwrite/176/iterations:1\n"
+ "BM_stdio_fwrite/192/iterations:1\n"
+ "BM_stdio_fwrite/208/iterations:1\n"
+ "BM_stdio_fwrite/224/iterations:1\n"
+ "BM_stdio_fwrite/240/iterations:1\n"
+ "BM_stdio_fwrite/256/iterations:1\n"
+ "BM_stdio_fwrite/512/iterations:1\n"
+ "BM_stdio_fwrite/1024/iterations:1\n"
+ "BM_stdio_fwrite/8192/iterations:1\n"
+ "BM_stdio_fwrite/16384/iterations:1\n"
+ "BM_stdio_fwrite/32768/iterations:1\n"
+ "BM_stdio_fwrite/65536/iterations:1\n"
+ "BM_stdio_fwrite/131072/iterations:1\n"
+ "BM_stdio_fwrite/262144/iterations:1\n"
+ "BM_stdio_fwrite/524288/iterations:1\n"
+ "BM_stdio_fwrite/1048576/iterations:1\n"
+ "BM_stdio_fwrite/2097152/iterations:1\n";
+
+ Verify(expected, 0, std::vector<const char*>{GetBionicXmlArg("test_size.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_onebuf) {
+ std::string expected =
+ "BM_string_strlen/8/0/iterations:1\n"
+ "BM_string_strlen/64/0/iterations:1\n"
+ "BM_string_strlen/512/0/iterations:1\n"
+ "BM_string_strlen/1024/0/iterations:1\n"
+ "BM_string_strlen/8192/0/iterations:1\n"
+ "BM_string_strlen/16384/0/iterations:1\n"
+ "BM_string_strlen/32768/0/iterations:1\n"
+ "BM_string_strlen/65536/0/iterations:1\n"
+ "BM_string_strlen/131072/0/iterations:1\n"
+ "BM_string_memset/1/0/iterations:1\n"
+ "BM_string_memset/2/0/iterations:1\n"
+ "BM_string_memset/3/0/iterations:1\n"
+ "BM_string_memset/4/0/iterations:1\n"
+ "BM_string_memset/5/0/iterations:1\n"
+ "BM_string_memset/6/0/iterations:1\n"
+ "BM_string_memset/7/0/iterations:1\n"
+ "BM_string_memset/8/0/iterations:1\n"
+ "BM_string_memset/9/0/iterations:1\n"
+ "BM_string_memset/10/0/iterations:1\n"
+ "BM_string_memset/11/0/iterations:1\n"
+ "BM_string_memset/12/0/iterations:1\n"
+ "BM_string_memset/13/0/iterations:1\n"
+ "BM_string_memset/14/0/iterations:1\n"
+ "BM_string_memset/15/0/iterations:1\n"
+ "BM_string_memset/16/0/iterations:1\n"
+ "BM_string_memset/24/0/iterations:1\n"
+ "BM_string_memset/32/0/iterations:1\n"
+ "BM_string_memset/40/0/iterations:1\n"
+ "BM_string_memset/48/0/iterations:1\n"
+ "BM_string_memset/56/0/iterations:1\n"
+ "BM_string_memset/64/0/iterations:1\n"
+ "BM_string_memset/72/0/iterations:1\n"
+ "BM_string_memset/80/0/iterations:1\n"
+ "BM_string_memset/88/0/iterations:1\n"
+ "BM_string_memset/96/0/iterations:1\n"
+ "BM_string_memset/104/0/iterations:1\n"
+ "BM_string_memset/112/0/iterations:1\n"
+ "BM_string_memset/120/0/iterations:1\n"
+ "BM_string_memset/128/0/iterations:1\n"
+ "BM_string_memset/136/0/iterations:1\n"
+ "BM_string_memset/144/0/iterations:1\n"
+ "BM_string_memset/160/0/iterations:1\n"
+ "BM_string_memset/176/0/iterations:1\n"
+ "BM_string_memset/192/0/iterations:1\n"
+ "BM_string_memset/208/0/iterations:1\n"
+ "BM_string_memset/224/0/iterations:1\n"
+ "BM_string_memset/240/0/iterations:1\n"
+ "BM_string_memset/256/0/iterations:1\n"
+ "BM_string_strlen/512/0/iterations:1\n"
+ "BM_string_strlen/1024/0/iterations:1\n"
+ "BM_string_strlen/8192/0/iterations:1\n"
+ "BM_string_strlen/16384/0/iterations:1\n"
+ "BM_string_strlen/32768/0/iterations:1\n"
+ "BM_string_strlen/65536/0/iterations:1\n"
+ "BM_string_strlen/131072/0/iterations:1\n"
+ "BM_string_memset/262144/0/iterations:1\n"
+ "BM_string_memset/524288/0/iterations:1\n"
+ "BM_string_memset/1048576/0/iterations:1\n"
+ "BM_string_memset/2097152/0/iterations:1\n"
+ "BM_string_strlen/1/0/iterations:1\n"
+ "BM_string_strlen/2/0/iterations:1\n"
+ "BM_string_strlen/3/0/iterations:1\n"
+ "BM_string_strlen/4/0/iterations:1\n"
+ "BM_string_strlen/5/0/iterations:1\n"
+ "BM_string_strlen/6/0/iterations:1\n"
+ "BM_string_strlen/7/0/iterations:1\n"
+ "BM_string_strlen/8/0/iterations:1\n"
+ "BM_string_strlen/9/0/iterations:1\n"
+ "BM_string_strlen/10/0/iterations:1\n"
+ "BM_string_strlen/11/0/iterations:1\n"
+ "BM_string_strlen/12/0/iterations:1\n"
+ "BM_string_strlen/13/0/iterations:1\n"
+ "BM_string_strlen/14/0/iterations:1\n"
+ "BM_string_strlen/15/0/iterations:1\n"
+ "BM_string_strlen/16/0/iterations:1\n"
+ "BM_string_strlen/24/0/iterations:1\n"
+ "BM_string_strlen/32/0/iterations:1\n"
+ "BM_string_strlen/40/0/iterations:1\n"
+ "BM_string_strlen/48/0/iterations:1\n"
+ "BM_string_strlen/56/0/iterations:1\n"
+ "BM_string_strlen/64/0/iterations:1\n"
+ "BM_string_strlen/72/0/iterations:1\n"
+ "BM_string_strlen/80/0/iterations:1\n"
+ "BM_string_strlen/88/0/iterations:1\n"
+ "BM_string_strlen/96/0/iterations:1\n"
+ "BM_string_strlen/104/0/iterations:1\n"
+ "BM_string_strlen/112/0/iterations:1\n"
+ "BM_string_strlen/120/0/iterations:1\n"
+ "BM_string_strlen/128/0/iterations:1\n"
+ "BM_string_strlen/136/0/iterations:1\n"
+ "BM_string_strlen/144/0/iterations:1\n"
+ "BM_string_strlen/160/0/iterations:1\n"
+ "BM_string_strlen/176/0/iterations:1\n"
+ "BM_string_strlen/192/0/iterations:1\n"
+ "BM_string_strlen/208/0/iterations:1\n"
+ "BM_string_strlen/224/0/iterations:1\n"
+ "BM_string_strlen/240/0/iterations:1\n"
+ "BM_string_strlen/256/0/iterations:1\n"
+ "BM_string_strlen/512/0/iterations:1\n"
+ "BM_string_strlen/1024/0/iterations:1\n"
+ "BM_string_strlen/8192/0/iterations:1\n"
+ "BM_string_strlen/16384/0/iterations:1\n"
+ "BM_string_strlen/32768/0/iterations:1\n"
+ "BM_string_strlen/65536/0/iterations:1\n"
+ "BM_string_strlen/131072/0/iterations:1\n"
+ "BM_string_strlen/262144/0/iterations:1\n"
+ "BM_string_strlen/524288/0/iterations:1\n"
+ "BM_string_strlen/1048576/0/iterations:1\n"
+ "BM_string_strlen/2097152/0/iterations:1\n"
+ "BM_string_memset/1/0/iterations:1\n"
+ "BM_string_memset/1/1/iterations:1\n"
+ "BM_string_memset/1/2/iterations:1\n"
+ "BM_string_memset/1/4/iterations:1\n"
+ "BM_string_memset/1/8/iterations:1\n"
+ "BM_string_memset/1/16/iterations:1\n"
+ "BM_string_memset/1/32/iterations:1\n"
+ "BM_string_memset/2/0/iterations:1\n"
+ "BM_string_memset/2/1/iterations:1\n"
+ "BM_string_memset/2/2/iterations:1\n"
+ "BM_string_memset/2/4/iterations:1\n"
+ "BM_string_memset/2/8/iterations:1\n"
+ "BM_string_memset/2/16/iterations:1\n"
+ "BM_string_memset/2/32/iterations:1\n"
+ "BM_string_memset/3/0/iterations:1\n"
+ "BM_string_memset/3/1/iterations:1\n"
+ "BM_string_memset/3/2/iterations:1\n"
+ "BM_string_memset/3/4/iterations:1\n"
+ "BM_string_memset/3/8/iterations:1\n"
+ "BM_string_memset/3/16/iterations:1\n"
+ "BM_string_memset/3/32/iterations:1\n"
+ "BM_string_memset/4/0/iterations:1\n"
+ "BM_string_memset/4/1/iterations:1\n"
+ "BM_string_memset/4/2/iterations:1\n"
+ "BM_string_memset/4/4/iterations:1\n"
+ "BM_string_memset/4/8/iterations:1\n"
+ "BM_string_memset/4/16/iterations:1\n"
+ "BM_string_memset/4/32/iterations:1\n"
+ "BM_string_memset/5/0/iterations:1\n"
+ "BM_string_memset/5/1/iterations:1\n"
+ "BM_string_memset/5/2/iterations:1\n"
+ "BM_string_memset/5/4/iterations:1\n"
+ "BM_string_memset/5/8/iterations:1\n"
+ "BM_string_memset/5/16/iterations:1\n"
+ "BM_string_memset/5/32/iterations:1\n"
+ "BM_string_memset/6/0/iterations:1\n"
+ "BM_string_memset/6/1/iterations:1\n"
+ "BM_string_memset/6/2/iterations:1\n"
+ "BM_string_memset/6/4/iterations:1\n"
+ "BM_string_memset/6/8/iterations:1\n"
+ "BM_string_memset/6/16/iterations:1\n"
+ "BM_string_memset/6/32/iterations:1\n"
+ "BM_string_memset/7/0/iterations:1\n"
+ "BM_string_memset/7/1/iterations:1\n"
+ "BM_string_memset/7/2/iterations:1\n"
+ "BM_string_memset/7/4/iterations:1\n"
+ "BM_string_memset/7/8/iterations:1\n"
+ "BM_string_memset/7/16/iterations:1\n"
+ "BM_string_memset/7/32/iterations:1\n"
+ "BM_string_memset/8/0/iterations:1\n"
+ "BM_string_memset/8/1/iterations:1\n"
+ "BM_string_memset/8/2/iterations:1\n"
+ "BM_string_memset/8/4/iterations:1\n"
+ "BM_string_memset/8/8/iterations:1\n"
+ "BM_string_memset/8/16/iterations:1\n"
+ "BM_string_memset/8/32/iterations:1\n"
+ "BM_string_memset/9/0/iterations:1\n"
+ "BM_string_memset/9/1/iterations:1\n"
+ "BM_string_memset/9/2/iterations:1\n"
+ "BM_string_memset/9/4/iterations:1\n"
+ "BM_string_memset/9/8/iterations:1\n"
+ "BM_string_memset/9/16/iterations:1\n"
+ "BM_string_memset/9/32/iterations:1\n"
+ "BM_string_memset/10/0/iterations:1\n"
+ "BM_string_memset/10/1/iterations:1\n"
+ "BM_string_memset/10/2/iterations:1\n"
+ "BM_string_memset/10/4/iterations:1\n"
+ "BM_string_memset/10/8/iterations:1\n"
+ "BM_string_memset/10/16/iterations:1\n"
+ "BM_string_memset/10/32/iterations:1\n"
+ "BM_string_memset/11/0/iterations:1\n"
+ "BM_string_memset/11/1/iterations:1\n"
+ "BM_string_memset/11/2/iterations:1\n"
+ "BM_string_memset/11/4/iterations:1\n"
+ "BM_string_memset/11/8/iterations:1\n"
+ "BM_string_memset/11/16/iterations:1\n"
+ "BM_string_memset/11/32/iterations:1\n"
+ "BM_string_memset/12/0/iterations:1\n"
+ "BM_string_memset/12/1/iterations:1\n"
+ "BM_string_memset/12/2/iterations:1\n"
+ "BM_string_memset/12/4/iterations:1\n"
+ "BM_string_memset/12/8/iterations:1\n"
+ "BM_string_memset/12/16/iterations:1\n"
+ "BM_string_memset/12/32/iterations:1\n"
+ "BM_string_memset/13/0/iterations:1\n"
+ "BM_string_memset/13/1/iterations:1\n"
+ "BM_string_memset/13/2/iterations:1\n"
+ "BM_string_memset/13/4/iterations:1\n"
+ "BM_string_memset/13/8/iterations:1\n"
+ "BM_string_memset/13/16/iterations:1\n"
+ "BM_string_memset/13/32/iterations:1\n"
+ "BM_string_memset/14/0/iterations:1\n"
+ "BM_string_memset/14/1/iterations:1\n"
+ "BM_string_memset/14/2/iterations:1\n"
+ "BM_string_memset/14/4/iterations:1\n"
+ "BM_string_memset/14/8/iterations:1\n"
+ "BM_string_memset/14/16/iterations:1\n"
+ "BM_string_memset/14/32/iterations:1\n"
+ "BM_string_memset/15/0/iterations:1\n"
+ "BM_string_memset/15/1/iterations:1\n"
+ "BM_string_memset/15/2/iterations:1\n"
+ "BM_string_memset/15/4/iterations:1\n"
+ "BM_string_memset/15/8/iterations:1\n"
+ "BM_string_memset/15/16/iterations:1\n"
+ "BM_string_memset/15/32/iterations:1\n"
+ "BM_string_memset/16/0/iterations:1\n"
+ "BM_string_memset/16/1/iterations:1\n"
+ "BM_string_memset/16/2/iterations:1\n"
+ "BM_string_memset/16/4/iterations:1\n"
+ "BM_string_memset/16/8/iterations:1\n"
+ "BM_string_memset/16/16/iterations:1\n"
+ "BM_string_memset/16/32/iterations:1\n"
+ "BM_string_memset/24/0/iterations:1\n"
+ "BM_string_memset/24/1/iterations:1\n"
+ "BM_string_memset/24/2/iterations:1\n"
+ "BM_string_memset/24/4/iterations:1\n"
+ "BM_string_memset/24/8/iterations:1\n"
+ "BM_string_memset/24/16/iterations:1\n"
+ "BM_string_memset/24/32/iterations:1\n"
+ "BM_string_memset/32/0/iterations:1\n"
+ "BM_string_memset/32/1/iterations:1\n"
+ "BM_string_memset/32/2/iterations:1\n"
+ "BM_string_memset/32/4/iterations:1\n"
+ "BM_string_memset/32/8/iterations:1\n"
+ "BM_string_memset/32/16/iterations:1\n"
+ "BM_string_memset/32/32/iterations:1\n"
+ "BM_string_memset/40/0/iterations:1\n"
+ "BM_string_memset/40/1/iterations:1\n"
+ "BM_string_memset/40/2/iterations:1\n"
+ "BM_string_memset/40/4/iterations:1\n"
+ "BM_string_memset/40/8/iterations:1\n"
+ "BM_string_memset/40/16/iterations:1\n"
+ "BM_string_memset/40/32/iterations:1\n"
+ "BM_string_memset/48/0/iterations:1\n"
+ "BM_string_memset/48/1/iterations:1\n"
+ "BM_string_memset/48/2/iterations:1\n"
+ "BM_string_memset/48/4/iterations:1\n"
+ "BM_string_memset/48/8/iterations:1\n"
+ "BM_string_memset/48/16/iterations:1\n"
+ "BM_string_memset/48/32/iterations:1\n"
+ "BM_string_memset/56/0/iterations:1\n"
+ "BM_string_memset/56/1/iterations:1\n"
+ "BM_string_memset/56/2/iterations:1\n"
+ "BM_string_memset/56/4/iterations:1\n"
+ "BM_string_memset/56/8/iterations:1\n"
+ "BM_string_memset/56/16/iterations:1\n"
+ "BM_string_memset/56/32/iterations:1\n"
+ "BM_string_memset/64/0/iterations:1\n"
+ "BM_string_memset/64/1/iterations:1\n"
+ "BM_string_memset/64/2/iterations:1\n"
+ "BM_string_memset/64/4/iterations:1\n"
+ "BM_string_memset/64/8/iterations:1\n"
+ "BM_string_memset/64/16/iterations:1\n"
+ "BM_string_memset/64/32/iterations:1\n"
+ "BM_string_memset/72/0/iterations:1\n"
+ "BM_string_memset/72/1/iterations:1\n"
+ "BM_string_memset/72/2/iterations:1\n"
+ "BM_string_memset/72/4/iterations:1\n"
+ "BM_string_memset/72/8/iterations:1\n"
+ "BM_string_memset/72/16/iterations:1\n"
+ "BM_string_memset/72/32/iterations:1\n"
+ "BM_string_memset/80/0/iterations:1\n"
+ "BM_string_memset/80/1/iterations:1\n"
+ "BM_string_memset/80/2/iterations:1\n"
+ "BM_string_memset/80/4/iterations:1\n"
+ "BM_string_memset/80/8/iterations:1\n"
+ "BM_string_memset/80/16/iterations:1\n"
+ "BM_string_memset/80/32/iterations:1\n"
+ "BM_string_memset/88/0/iterations:1\n"
+ "BM_string_memset/88/1/iterations:1\n"
+ "BM_string_memset/88/2/iterations:1\n"
+ "BM_string_memset/88/4/iterations:1\n"
+ "BM_string_memset/88/8/iterations:1\n"
+ "BM_string_memset/88/16/iterations:1\n"
+ "BM_string_memset/88/32/iterations:1\n"
+ "BM_string_memset/96/0/iterations:1\n"
+ "BM_string_memset/96/1/iterations:1\n"
+ "BM_string_memset/96/2/iterations:1\n"
+ "BM_string_memset/96/4/iterations:1\n"
+ "BM_string_memset/96/8/iterations:1\n"
+ "BM_string_memset/96/16/iterations:1\n"
+ "BM_string_memset/96/32/iterations:1\n"
+ "BM_string_memset/104/0/iterations:1\n"
+ "BM_string_memset/104/1/iterations:1\n"
+ "BM_string_memset/104/2/iterations:1\n"
+ "BM_string_memset/104/4/iterations:1\n"
+ "BM_string_memset/104/8/iterations:1\n"
+ "BM_string_memset/104/16/iterations:1\n"
+ "BM_string_memset/104/32/iterations:1\n"
+ "BM_string_memset/112/0/iterations:1\n"
+ "BM_string_memset/112/1/iterations:1\n"
+ "BM_string_memset/112/2/iterations:1\n"
+ "BM_string_memset/112/4/iterations:1\n"
+ "BM_string_memset/112/8/iterations:1\n"
+ "BM_string_memset/112/16/iterations:1\n"
+ "BM_string_memset/112/32/iterations:1\n"
+ "BM_string_memset/120/0/iterations:1\n"
+ "BM_string_memset/120/1/iterations:1\n"
+ "BM_string_memset/120/2/iterations:1\n"
+ "BM_string_memset/120/4/iterations:1\n"
+ "BM_string_memset/120/8/iterations:1\n"
+ "BM_string_memset/120/16/iterations:1\n"
+ "BM_string_memset/120/32/iterations:1\n"
+ "BM_string_memset/128/0/iterations:1\n"
+ "BM_string_memset/128/1/iterations:1\n"
+ "BM_string_memset/128/2/iterations:1\n"
+ "BM_string_memset/128/4/iterations:1\n"
+ "BM_string_memset/128/8/iterations:1\n"
+ "BM_string_memset/128/16/iterations:1\n"
+ "BM_string_memset/128/32/iterations:1\n"
+ "BM_string_memset/136/0/iterations:1\n"
+ "BM_string_memset/136/1/iterations:1\n"
+ "BM_string_memset/136/2/iterations:1\n"
+ "BM_string_memset/136/4/iterations:1\n"
+ "BM_string_memset/136/8/iterations:1\n"
+ "BM_string_memset/136/16/iterations:1\n"
+ "BM_string_memset/136/32/iterations:1\n"
+ "BM_string_memset/144/0/iterations:1\n"
+ "BM_string_memset/144/1/iterations:1\n"
+ "BM_string_memset/144/2/iterations:1\n"
+ "BM_string_memset/144/4/iterations:1\n"
+ "BM_string_memset/144/8/iterations:1\n"
+ "BM_string_memset/144/16/iterations:1\n"
+ "BM_string_memset/144/32/iterations:1\n"
+ "BM_string_memset/160/0/iterations:1\n"
+ "BM_string_memset/160/1/iterations:1\n"
+ "BM_string_memset/160/2/iterations:1\n"
+ "BM_string_memset/160/4/iterations:1\n"
+ "BM_string_memset/160/8/iterations:1\n"
+ "BM_string_memset/160/16/iterations:1\n"
+ "BM_string_memset/160/32/iterations:1\n"
+ "BM_string_memset/176/0/iterations:1\n"
+ "BM_string_memset/176/1/iterations:1\n"
+ "BM_string_memset/176/2/iterations:1\n"
+ "BM_string_memset/176/4/iterations:1\n"
+ "BM_string_memset/176/8/iterations:1\n"
+ "BM_string_memset/176/16/iterations:1\n"
+ "BM_string_memset/176/32/iterations:1\n"
+ "BM_string_memset/192/0/iterations:1\n"
+ "BM_string_memset/192/1/iterations:1\n"
+ "BM_string_memset/192/2/iterations:1\n"
+ "BM_string_memset/192/4/iterations:1\n"
+ "BM_string_memset/192/8/iterations:1\n"
+ "BM_string_memset/192/16/iterations:1\n"
+ "BM_string_memset/192/32/iterations:1\n"
+ "BM_string_memset/208/0/iterations:1\n"
+ "BM_string_memset/208/1/iterations:1\n"
+ "BM_string_memset/208/2/iterations:1\n"
+ "BM_string_memset/208/4/iterations:1\n"
+ "BM_string_memset/208/8/iterations:1\n"
+ "BM_string_memset/208/16/iterations:1\n"
+ "BM_string_memset/208/32/iterations:1\n"
+ "BM_string_memset/224/0/iterations:1\n"
+ "BM_string_memset/224/1/iterations:1\n"
+ "BM_string_memset/224/2/iterations:1\n"
+ "BM_string_memset/224/4/iterations:1\n"
+ "BM_string_memset/224/8/iterations:1\n"
+ "BM_string_memset/224/16/iterations:1\n"
+ "BM_string_memset/224/32/iterations:1\n"
+ "BM_string_memset/240/0/iterations:1\n"
+ "BM_string_memset/240/1/iterations:1\n"
+ "BM_string_memset/240/2/iterations:1\n"
+ "BM_string_memset/240/4/iterations:1\n"
+ "BM_string_memset/240/8/iterations:1\n"
+ "BM_string_memset/240/16/iterations:1\n"
+ "BM_string_memset/240/32/iterations:1\n"
+ "BM_string_memset/256/0/iterations:1\n"
+ "BM_string_memset/256/1/iterations:1\n"
+ "BM_string_memset/256/2/iterations:1\n"
+ "BM_string_memset/256/4/iterations:1\n"
+ "BM_string_memset/256/8/iterations:1\n"
+ "BM_string_memset/256/16/iterations:1\n"
+ "BM_string_memset/256/32/iterations:1\n"
+ "BM_string_memset/512/0/iterations:1\n"
+ "BM_string_memset/512/1/iterations:1\n"
+ "BM_string_memset/512/2/iterations:1\n"
+ "BM_string_memset/512/4/iterations:1\n"
+ "BM_string_memset/512/8/iterations:1\n"
+ "BM_string_memset/512/16/iterations:1\n"
+ "BM_string_memset/512/32/iterations:1\n"
+ "BM_string_memset/1024/0/iterations:1\n"
+ "BM_string_memset/1024/1/iterations:1\n"
+ "BM_string_memset/1024/2/iterations:1\n"
+ "BM_string_memset/1024/4/iterations:1\n"
+ "BM_string_memset/1024/8/iterations:1\n"
+ "BM_string_memset/1024/16/iterations:1\n"
+ "BM_string_memset/1024/32/iterations:1\n"
+ "BM_string_memset/8192/0/iterations:1\n"
+ "BM_string_memset/8192/1/iterations:1\n"
+ "BM_string_memset/8192/2/iterations:1\n"
+ "BM_string_memset/8192/4/iterations:1\n"
+ "BM_string_memset/8192/8/iterations:1\n"
+ "BM_string_memset/8192/16/iterations:1\n"
+ "BM_string_memset/8192/32/iterations:1\n"
+ "BM_string_memset/16384/0/iterations:1\n"
+ "BM_string_memset/16384/1/iterations:1\n"
+ "BM_string_memset/16384/2/iterations:1\n"
+ "BM_string_memset/16384/4/iterations:1\n"
+ "BM_string_memset/16384/8/iterations:1\n"
+ "BM_string_memset/16384/16/iterations:1\n"
+ "BM_string_memset/16384/32/iterations:1\n"
+ "BM_string_memset/32768/0/iterations:1\n"
+ "BM_string_memset/32768/1/iterations:1\n"
+ "BM_string_memset/32768/2/iterations:1\n"
+ "BM_string_memset/32768/4/iterations:1\n"
+ "BM_string_memset/32768/8/iterations:1\n"
+ "BM_string_memset/32768/16/iterations:1\n"
+ "BM_string_memset/32768/32/iterations:1\n"
+ "BM_string_memset/65536/0/iterations:1\n"
+ "BM_string_memset/65536/1/iterations:1\n"
+ "BM_string_memset/65536/2/iterations:1\n"
+ "BM_string_memset/65536/4/iterations:1\n"
+ "BM_string_memset/65536/8/iterations:1\n"
+ "BM_string_memset/65536/16/iterations:1\n"
+ "BM_string_memset/65536/32/iterations:1\n"
+ "BM_string_memset/131072/0/iterations:1\n"
+ "BM_string_memset/131072/1/iterations:1\n"
+ "BM_string_memset/131072/2/iterations:1\n"
+ "BM_string_memset/131072/4/iterations:1\n"
+ "BM_string_memset/131072/8/iterations:1\n"
+ "BM_string_memset/131072/16/iterations:1\n"
+ "BM_string_memset/131072/32/iterations:1\n"
+ "BM_string_memset/262144/0/iterations:1\n"
+ "BM_string_memset/262144/1/iterations:1\n"
+ "BM_string_memset/262144/2/iterations:1\n"
+ "BM_string_memset/262144/4/iterations:1\n"
+ "BM_string_memset/262144/8/iterations:1\n"
+ "BM_string_memset/262144/16/iterations:1\n"
+ "BM_string_memset/262144/32/iterations:1\n"
+ "BM_string_memset/524288/0/iterations:1\n"
+ "BM_string_memset/524288/1/iterations:1\n"
+ "BM_string_memset/524288/2/iterations:1\n"
+ "BM_string_memset/524288/4/iterations:1\n"
+ "BM_string_memset/524288/8/iterations:1\n"
+ "BM_string_memset/524288/16/iterations:1\n"
+ "BM_string_memset/524288/32/iterations:1\n"
+ "BM_string_memset/1048576/0/iterations:1\n"
+ "BM_string_memset/1048576/1/iterations:1\n"
+ "BM_string_memset/1048576/2/iterations:1\n"
+ "BM_string_memset/1048576/4/iterations:1\n"
+ "BM_string_memset/1048576/8/iterations:1\n"
+ "BM_string_memset/1048576/16/iterations:1\n"
+ "BM_string_memset/1048576/32/iterations:1\n"
+ "BM_string_memset/2097152/0/iterations:1\n"
+ "BM_string_memset/2097152/1/iterations:1\n"
+ "BM_string_memset/2097152/2/iterations:1\n"
+ "BM_string_memset/2097152/4/iterations:1\n"
+ "BM_string_memset/2097152/8/iterations:1\n"
+ "BM_string_memset/2097152/16/iterations:1\n"
+ "BM_string_memset/2097152/32/iterations:1\n";
+
+ Verify(expected, 0,
+ std::vector<const char*>{GetBionicXmlArg("test_alignment_onebuf.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_onebuf_manual) {
+ std::string expected =
+ "BM_string_strlen/115/0/iterations:1\n"
+ "BM_string_memset/1024/1/iterations:1\n"
+ "BM_string_strlen/2048/4/iterations:1\n"
+ "BM_string_memset/4000/32/iterations:1\n";
+
+ Verify(expected, 0,
+ std::vector<const char*>{GetBionicXmlArg("test_alignment_onebuf_manual.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_twobuf) {
+ std::string expected =
+ "BM_string_strcpy/8/0/0/iterations:1\n"
+ "BM_string_strcpy/64/0/0/iterations:1\n"
+ "BM_string_strcpy/512/0/0/iterations:1\n"
+ "BM_string_strcpy/1024/0/0/iterations:1\n"
+ "BM_string_strcpy/8192/0/0/iterations:1\n"
+ "BM_string_strcpy/16384/0/0/iterations:1\n"
+ "BM_string_strcpy/32768/0/0/iterations:1\n"
+ "BM_string_strcpy/65536/0/0/iterations:1\n"
+ "BM_string_strcpy/131072/0/0/iterations:1\n"
+ "BM_string_memcpy/1/0/0/iterations:1\n"
+ "BM_string_memcpy/2/0/0/iterations:1\n"
+ "BM_string_memcpy/3/0/0/iterations:1\n"
+ "BM_string_memcpy/4/0/0/iterations:1\n"
+ "BM_string_memcpy/5/0/0/iterations:1\n"
+ "BM_string_memcpy/6/0/0/iterations:1\n"
+ "BM_string_memcpy/7/0/0/iterations:1\n"
+ "BM_string_memcpy/8/0/0/iterations:1\n"
+ "BM_string_memcpy/9/0/0/iterations:1\n"
+ "BM_string_memcpy/10/0/0/iterations:1\n"
+ "BM_string_memcpy/11/0/0/iterations:1\n"
+ "BM_string_memcpy/12/0/0/iterations:1\n"
+ "BM_string_memcpy/13/0/0/iterations:1\n"
+ "BM_string_memcpy/14/0/0/iterations:1\n"
+ "BM_string_memcpy/15/0/0/iterations:1\n"
+ "BM_string_memcpy/16/0/0/iterations:1\n"
+ "BM_string_memcpy/24/0/0/iterations:1\n"
+ "BM_string_memcpy/32/0/0/iterations:1\n"
+ "BM_string_memcpy/40/0/0/iterations:1\n"
+ "BM_string_memcpy/48/0/0/iterations:1\n"
+ "BM_string_memcpy/56/0/0/iterations:1\n"
+ "BM_string_memcpy/64/0/0/iterations:1\n"
+ "BM_string_memcpy/72/0/0/iterations:1\n"
+ "BM_string_memcpy/80/0/0/iterations:1\n"
+ "BM_string_memcpy/88/0/0/iterations:1\n"
+ "BM_string_memcpy/96/0/0/iterations:1\n"
+ "BM_string_memcpy/104/0/0/iterations:1\n"
+ "BM_string_memcpy/112/0/0/iterations:1\n"
+ "BM_string_memcpy/120/0/0/iterations:1\n"
+ "BM_string_memcpy/128/0/0/iterations:1\n"
+ "BM_string_memcpy/136/0/0/iterations:1\n"
+ "BM_string_memcpy/144/0/0/iterations:1\n"
+ "BM_string_memcpy/160/0/0/iterations:1\n"
+ "BM_string_memcpy/176/0/0/iterations:1\n"
+ "BM_string_memcpy/192/0/0/iterations:1\n"
+ "BM_string_memcpy/208/0/0/iterations:1\n"
+ "BM_string_memcpy/224/0/0/iterations:1\n"
+ "BM_string_memcpy/240/0/0/iterations:1\n"
+ "BM_string_memcpy/256/0/0/iterations:1\n"
+ "BM_string_strcpy/512/0/0/iterations:1\n"
+ "BM_string_strcpy/1024/0/0/iterations:1\n"
+ "BM_string_strcpy/8192/0/0/iterations:1\n"
+ "BM_string_strcpy/16384/0/0/iterations:1\n"
+ "BM_string_strcpy/32768/0/0/iterations:1\n"
+ "BM_string_strcpy/65536/0/0/iterations:1\n"
+ "BM_string_strcpy/131072/0/0/iterations:1\n"
+ "BM_string_memcpy/262144/0/0/iterations:1\n"
+ "BM_string_memcpy/524288/0/0/iterations:1\n"
+ "BM_string_memcpy/1048576/0/0/iterations:1\n"
+ "BM_string_memcpy/2097152/0/0/iterations:1\n"
+ "BM_string_strcpy/1/0/0/iterations:1\n"
+ "BM_string_strcpy/2/0/0/iterations:1\n"
+ "BM_string_strcpy/3/0/0/iterations:1\n"
+ "BM_string_strcpy/4/0/0/iterations:1\n"
+ "BM_string_strcpy/5/0/0/iterations:1\n"
+ "BM_string_strcpy/6/0/0/iterations:1\n"
+ "BM_string_strcpy/7/0/0/iterations:1\n"
+ "BM_string_strcpy/8/0/0/iterations:1\n"
+ "BM_string_strcpy/9/0/0/iterations:1\n"
+ "BM_string_strcpy/10/0/0/iterations:1\n"
+ "BM_string_strcpy/11/0/0/iterations:1\n"
+ "BM_string_strcpy/12/0/0/iterations:1\n"
+ "BM_string_strcpy/13/0/0/iterations:1\n"
+ "BM_string_strcpy/14/0/0/iterations:1\n"
+ "BM_string_strcpy/15/0/0/iterations:1\n"
+ "BM_string_strcpy/16/0/0/iterations:1\n"
+ "BM_string_strcpy/24/0/0/iterations:1\n"
+ "BM_string_strcpy/32/0/0/iterations:1\n"
+ "BM_string_strcpy/40/0/0/iterations:1\n"
+ "BM_string_strcpy/48/0/0/iterations:1\n"
+ "BM_string_strcpy/56/0/0/iterations:1\n"
+ "BM_string_strcpy/64/0/0/iterations:1\n"
+ "BM_string_strcpy/72/0/0/iterations:1\n"
+ "BM_string_strcpy/80/0/0/iterations:1\n"
+ "BM_string_strcpy/88/0/0/iterations:1\n"
+ "BM_string_strcpy/96/0/0/iterations:1\n"
+ "BM_string_strcpy/104/0/0/iterations:1\n"
+ "BM_string_strcpy/112/0/0/iterations:1\n"
+ "BM_string_strcpy/120/0/0/iterations:1\n"
+ "BM_string_strcpy/128/0/0/iterations:1\n"
+ "BM_string_strcpy/136/0/0/iterations:1\n"
+ "BM_string_strcpy/144/0/0/iterations:1\n"
+ "BM_string_strcpy/160/0/0/iterations:1\n"
+ "BM_string_strcpy/176/0/0/iterations:1\n"
+ "BM_string_strcpy/192/0/0/iterations:1\n"
+ "BM_string_strcpy/208/0/0/iterations:1\n"
+ "BM_string_strcpy/224/0/0/iterations:1\n"
+ "BM_string_strcpy/240/0/0/iterations:1\n"
+ "BM_string_strcpy/256/0/0/iterations:1\n"
+ "BM_string_strcpy/512/0/0/iterations:1\n"
+ "BM_string_strcpy/1024/0/0/iterations:1\n"
+ "BM_string_strcpy/8192/0/0/iterations:1\n"
+ "BM_string_strcpy/16384/0/0/iterations:1\n"
+ "BM_string_strcpy/32768/0/0/iterations:1\n"
+ "BM_string_strcpy/65536/0/0/iterations:1\n"
+ "BM_string_strcpy/131072/0/0/iterations:1\n"
+ "BM_string_strcpy/262144/0/0/iterations:1\n"
+ "BM_string_strcpy/524288/0/0/iterations:1\n"
+ "BM_string_strcpy/1048576/0/0/iterations:1\n"
+ "BM_string_strcpy/2097152/0/0/iterations:1\n"
+ "BM_string_memcpy/1/0/0/iterations:1\n"
+ "BM_string_memcpy/1/1/1/iterations:1\n"
+ "BM_string_memcpy/1/1/2/iterations:1\n"
+ "BM_string_memcpy/1/1/4/iterations:1\n"
+ "BM_string_memcpy/1/1/8/iterations:1\n"
+ "BM_string_memcpy/1/1/16/iterations:1\n"
+ "BM_string_memcpy/1/1/32/iterations:1\n"
+ "BM_string_memcpy/1/2/1/iterations:1\n"
+ "BM_string_memcpy/1/2/2/iterations:1\n"
+ "BM_string_memcpy/1/2/4/iterations:1\n"
+ "BM_string_memcpy/1/2/8/iterations:1\n"
+ "BM_string_memcpy/1/2/16/iterations:1\n"
+ "BM_string_memcpy/1/2/32/iterations:1\n"
+ "BM_string_memcpy/1/4/1/iterations:1\n"
+ "BM_string_memcpy/1/4/2/iterations:1\n"
+ "BM_string_memcpy/1/4/4/iterations:1\n"
+ "BM_string_memcpy/1/4/8/iterations:1\n"
+ "BM_string_memcpy/1/4/16/iterations:1\n"
+ "BM_string_memcpy/1/4/32/iterations:1\n"
+ "BM_string_memcpy/1/8/1/iterations:1\n"
+ "BM_string_memcpy/1/8/2/iterations:1\n"
+ "BM_string_memcpy/1/8/4/iterations:1\n"
+ "BM_string_memcpy/1/8/8/iterations:1\n"
+ "BM_string_memcpy/1/8/16/iterations:1\n"
+ "BM_string_memcpy/1/8/32/iterations:1\n"
+ "BM_string_memcpy/1/16/1/iterations:1\n"
+ "BM_string_memcpy/1/16/2/iterations:1\n"
+ "BM_string_memcpy/1/16/4/iterations:1\n"
+ "BM_string_memcpy/1/16/8/iterations:1\n"
+ "BM_string_memcpy/1/16/16/iterations:1\n"
+ "BM_string_memcpy/1/16/32/iterations:1\n"
+ "BM_string_memcpy/1/32/1/iterations:1\n"
+ "BM_string_memcpy/1/32/2/iterations:1\n"
+ "BM_string_memcpy/1/32/4/iterations:1\n"
+ "BM_string_memcpy/1/32/8/iterations:1\n"
+ "BM_string_memcpy/1/32/16/iterations:1\n"
+ "BM_string_memcpy/1/32/32/iterations:1\n"
+ "BM_string_memcpy/2/0/0/iterations:1\n"
+ "BM_string_memcpy/2/1/1/iterations:1\n"
+ "BM_string_memcpy/2/1/2/iterations:1\n"
+ "BM_string_memcpy/2/1/4/iterations:1\n"
+ "BM_string_memcpy/2/1/8/iterations:1\n"
+ "BM_string_memcpy/2/1/16/iterations:1\n"
+ "BM_string_memcpy/2/1/32/iterations:1\n"
+ "BM_string_memcpy/2/2/1/iterations:1\n"
+ "BM_string_memcpy/2/2/2/iterations:1\n"
+ "BM_string_memcpy/2/2/4/iterations:1\n"
+ "BM_string_memcpy/2/2/8/iterations:1\n"
+ "BM_string_memcpy/2/2/16/iterations:1\n"
+ "BM_string_memcpy/2/2/32/iterations:1\n"
+ "BM_string_memcpy/2/4/1/iterations:1\n"
+ "BM_string_memcpy/2/4/2/iterations:1\n"
+ "BM_string_memcpy/2/4/4/iterations:1\n"
+ "BM_string_memcpy/2/4/8/iterations:1\n"
+ "BM_string_memcpy/2/4/16/iterations:1\n"
+ "BM_string_memcpy/2/4/32/iterations:1\n"
+ "BM_string_memcpy/2/8/1/iterations:1\n"
+ "BM_string_memcpy/2/8/2/iterations:1\n"
+ "BM_string_memcpy/2/8/4/iterations:1\n"
+ "BM_string_memcpy/2/8/8/iterations:1\n"
+ "BM_string_memcpy/2/8/16/iterations:1\n"
+ "BM_string_memcpy/2/8/32/iterations:1\n"
+ "BM_string_memcpy/2/16/1/iterations:1\n"
+ "BM_string_memcpy/2/16/2/iterations:1\n"
+ "BM_string_memcpy/2/16/4/iterations:1\n"
+ "BM_string_memcpy/2/16/8/iterations:1\n"
+ "BM_string_memcpy/2/16/16/iterations:1\n"
+ "BM_string_memcpy/2/16/32/iterations:1\n"
+ "BM_string_memcpy/2/32/1/iterations:1\n"
+ "BM_string_memcpy/2/32/2/iterations:1\n"
+ "BM_string_memcpy/2/32/4/iterations:1\n"
+ "BM_string_memcpy/2/32/8/iterations:1\n"
+ "BM_string_memcpy/2/32/16/iterations:1\n"
+ "BM_string_memcpy/2/32/32/iterations:1\n"
+ "BM_string_memcpy/3/0/0/iterations:1\n"
+ "BM_string_memcpy/3/1/1/iterations:1\n"
+ "BM_string_memcpy/3/1/2/iterations:1\n"
+ "BM_string_memcpy/3/1/4/iterations:1\n"
+ "BM_string_memcpy/3/1/8/iterations:1\n"
+ "BM_string_memcpy/3/1/16/iterations:1\n"
+ "BM_string_memcpy/3/1/32/iterations:1\n"
+ "BM_string_memcpy/3/2/1/iterations:1\n"
+ "BM_string_memcpy/3/2/2/iterations:1\n"
+ "BM_string_memcpy/3/2/4/iterations:1\n"
+ "BM_string_memcpy/3/2/8/iterations:1\n"
+ "BM_string_memcpy/3/2/16/iterations:1\n"
+ "BM_string_memcpy/3/2/32/iterations:1\n"
+ "BM_string_memcpy/3/4/1/iterations:1\n"
+ "BM_string_memcpy/3/4/2/iterations:1\n"
+ "BM_string_memcpy/3/4/4/iterations:1\n"
+ "BM_string_memcpy/3/4/8/iterations:1\n"
+ "BM_string_memcpy/3/4/16/iterations:1\n"
+ "BM_string_memcpy/3/4/32/iterations:1\n"
+ "BM_string_memcpy/3/8/1/iterations:1\n"
+ "BM_string_memcpy/3/8/2/iterations:1\n"
+ "BM_string_memcpy/3/8/4/iterations:1\n"
+ "BM_string_memcpy/3/8/8/iterations:1\n"
+ "BM_string_memcpy/3/8/16/iterations:1\n"
+ "BM_string_memcpy/3/8/32/iterations:1\n"
+ "BM_string_memcpy/3/16/1/iterations:1\n"
+ "BM_string_memcpy/3/16/2/iterations:1\n"
+ "BM_string_memcpy/3/16/4/iterations:1\n"
+ "BM_string_memcpy/3/16/8/iterations:1\n"
+ "BM_string_memcpy/3/16/16/iterations:1\n"
+ "BM_string_memcpy/3/16/32/iterations:1\n"
+ "BM_string_memcpy/3/32/1/iterations:1\n"
+ "BM_string_memcpy/3/32/2/iterations:1\n"
+ "BM_string_memcpy/3/32/4/iterations:1\n"
+ "BM_string_memcpy/3/32/8/iterations:1\n"
+ "BM_string_memcpy/3/32/16/iterations:1\n"
+ "BM_string_memcpy/3/32/32/iterations:1\n"
+ "BM_string_memcpy/4/0/0/iterations:1\n"
+ "BM_string_memcpy/4/1/1/iterations:1\n"
+ "BM_string_memcpy/4/1/2/iterations:1\n"
+ "BM_string_memcpy/4/1/4/iterations:1\n"
+ "BM_string_memcpy/4/1/8/iterations:1\n"
+ "BM_string_memcpy/4/1/16/iterations:1\n"
+ "BM_string_memcpy/4/1/32/iterations:1\n"
+ "BM_string_memcpy/4/2/1/iterations:1\n"
+ "BM_string_memcpy/4/2/2/iterations:1\n"
+ "BM_string_memcpy/4/2/4/iterations:1\n"
+ "BM_string_memcpy/4/2/8/iterations:1\n"
+ "BM_string_memcpy/4/2/16/iterations:1\n"
+ "BM_string_memcpy/4/2/32/iterations:1\n"
+ "BM_string_memcpy/4/4/1/iterations:1\n"
+ "BM_string_memcpy/4/4/2/iterations:1\n"
+ "BM_string_memcpy/4/4/4/iterations:1\n"
+ "BM_string_memcpy/4/4/8/iterations:1\n"
+ "BM_string_memcpy/4/4/16/iterations:1\n"
+ "BM_string_memcpy/4/4/32/iterations:1\n"
+ "BM_string_memcpy/4/8/1/iterations:1\n"
+ "BM_string_memcpy/4/8/2/iterations:1\n"
+ "BM_string_memcpy/4/8/4/iterations:1\n"
+ "BM_string_memcpy/4/8/8/iterations:1\n"
+ "BM_string_memcpy/4/8/16/iterations:1\n"
+ "BM_string_memcpy/4/8/32/iterations:1\n"
+ "BM_string_memcpy/4/16/1/iterations:1\n"
+ "BM_string_memcpy/4/16/2/iterations:1\n"
+ "BM_string_memcpy/4/16/4/iterations:1\n"
+ "BM_string_memcpy/4/16/8/iterations:1\n"
+ "BM_string_memcpy/4/16/16/iterations:1\n"
+ "BM_string_memcpy/4/16/32/iterations:1\n"
+ "BM_string_memcpy/4/32/1/iterations:1\n"
+ "BM_string_memcpy/4/32/2/iterations:1\n"
+ "BM_string_memcpy/4/32/4/iterations:1\n"
+ "BM_string_memcpy/4/32/8/iterations:1\n"
+ "BM_string_memcpy/4/32/16/iterations:1\n"
+ "BM_string_memcpy/4/32/32/iterations:1\n"
+ "BM_string_memcpy/5/0/0/iterations:1\n"
+ "BM_string_memcpy/5/1/1/iterations:1\n"
+ "BM_string_memcpy/5/1/2/iterations:1\n"
+ "BM_string_memcpy/5/1/4/iterations:1\n"
+ "BM_string_memcpy/5/1/8/iterations:1\n"
+ "BM_string_memcpy/5/1/16/iterations:1\n"
+ "BM_string_memcpy/5/1/32/iterations:1\n"
+ "BM_string_memcpy/5/2/1/iterations:1\n"
+ "BM_string_memcpy/5/2/2/iterations:1\n"
+ "BM_string_memcpy/5/2/4/iterations:1\n"
+ "BM_string_memcpy/5/2/8/iterations:1\n"
+ "BM_string_memcpy/5/2/16/iterations:1\n"
+ "BM_string_memcpy/5/2/32/iterations:1\n"
+ "BM_string_memcpy/5/4/1/iterations:1\n"
+ "BM_string_memcpy/5/4/2/iterations:1\n"
+ "BM_string_memcpy/5/4/4/iterations:1\n"
+ "BM_string_memcpy/5/4/8/iterations:1\n"
+ "BM_string_memcpy/5/4/16/iterations:1\n"
+ "BM_string_memcpy/5/4/32/iterations:1\n"
+ "BM_string_memcpy/5/8/1/iterations:1\n"
+ "BM_string_memcpy/5/8/2/iterations:1\n"
+ "BM_string_memcpy/5/8/4/iterations:1\n"
+ "BM_string_memcpy/5/8/8/iterations:1\n"
+ "BM_string_memcpy/5/8/16/iterations:1\n"
+ "BM_string_memcpy/5/8/32/iterations:1\n"
+ "BM_string_memcpy/5/16/1/iterations:1\n"
+ "BM_string_memcpy/5/16/2/iterations:1\n"
+ "BM_string_memcpy/5/16/4/iterations:1\n"
+ "BM_string_memcpy/5/16/8/iterations:1\n"
+ "BM_string_memcpy/5/16/16/iterations:1\n"
+ "BM_string_memcpy/5/16/32/iterations:1\n"
+ "BM_string_memcpy/5/32/1/iterations:1\n"
+ "BM_string_memcpy/5/32/2/iterations:1\n"
+ "BM_string_memcpy/5/32/4/iterations:1\n"
+ "BM_string_memcpy/5/32/8/iterations:1\n"
+ "BM_string_memcpy/5/32/16/iterations:1\n"
+ "BM_string_memcpy/5/32/32/iterations:1\n"
+ "BM_string_memcpy/6/0/0/iterations:1\n"
+ "BM_string_memcpy/6/1/1/iterations:1\n"
+ "BM_string_memcpy/6/1/2/iterations:1\n"
+ "BM_string_memcpy/6/1/4/iterations:1\n"
+ "BM_string_memcpy/6/1/8/iterations:1\n"
+ "BM_string_memcpy/6/1/16/iterations:1\n"
+ "BM_string_memcpy/6/1/32/iterations:1\n"
+ "BM_string_memcpy/6/2/1/iterations:1\n"
+ "BM_string_memcpy/6/2/2/iterations:1\n"
+ "BM_string_memcpy/6/2/4/iterations:1\n"
+ "BM_string_memcpy/6/2/8/iterations:1\n"
+ "BM_string_memcpy/6/2/16/iterations:1\n"
+ "BM_string_memcpy/6/2/32/iterations:1\n"
+ "BM_string_memcpy/6/4/1/iterations:1\n"
+ "BM_string_memcpy/6/4/2/iterations:1\n"
+ "BM_string_memcpy/6/4/4/iterations:1\n"
+ "BM_string_memcpy/6/4/8/iterations:1\n"
+ "BM_string_memcpy/6/4/16/iterations:1\n"
+ "BM_string_memcpy/6/4/32/iterations:1\n"
+ "BM_string_memcpy/6/8/1/iterations:1\n"
+ "BM_string_memcpy/6/8/2/iterations:1\n"
+ "BM_string_memcpy/6/8/4/iterations:1\n"
+ "BM_string_memcpy/6/8/8/iterations:1\n"
+ "BM_string_memcpy/6/8/16/iterations:1\n"
+ "BM_string_memcpy/6/8/32/iterations:1\n"
+ "BM_string_memcpy/6/16/1/iterations:1\n"
+ "BM_string_memcpy/6/16/2/iterations:1\n"
+ "BM_string_memcpy/6/16/4/iterations:1\n"
+ "BM_string_memcpy/6/16/8/iterations:1\n"
+ "BM_string_memcpy/6/16/16/iterations:1\n"
+ "BM_string_memcpy/6/16/32/iterations:1\n"
+ "BM_string_memcpy/6/32/1/iterations:1\n"
+ "BM_string_memcpy/6/32/2/iterations:1\n"
+ "BM_string_memcpy/6/32/4/iterations:1\n"
+ "BM_string_memcpy/6/32/8/iterations:1\n"
+ "BM_string_memcpy/6/32/16/iterations:1\n"
+ "BM_string_memcpy/6/32/32/iterations:1\n"
+ "BM_string_memcpy/7/0/0/iterations:1\n"
+ "BM_string_memcpy/7/1/1/iterations:1\n"
+ "BM_string_memcpy/7/1/2/iterations:1\n"
+ "BM_string_memcpy/7/1/4/iterations:1\n"
+ "BM_string_memcpy/7/1/8/iterations:1\n"
+ "BM_string_memcpy/7/1/16/iterations:1\n"
+ "BM_string_memcpy/7/1/32/iterations:1\n"
+ "BM_string_memcpy/7/2/1/iterations:1\n"
+ "BM_string_memcpy/7/2/2/iterations:1\n"
+ "BM_string_memcpy/7/2/4/iterations:1\n"
+ "BM_string_memcpy/7/2/8/iterations:1\n"
+ "BM_string_memcpy/7/2/16/iterations:1\n"
+ "BM_string_memcpy/7/2/32/iterations:1\n"
+ "BM_string_memcpy/7/4/1/iterations:1\n"
+ "BM_string_memcpy/7/4/2/iterations:1\n"
+ "BM_string_memcpy/7/4/4/iterations:1\n"
+ "BM_string_memcpy/7/4/8/iterations:1\n"
+ "BM_string_memcpy/7/4/16/iterations:1\n"
+ "BM_string_memcpy/7/4/32/iterations:1\n"
+ "BM_string_memcpy/7/8/1/iterations:1\n"
+ "BM_string_memcpy/7/8/2/iterations:1\n"
+ "BM_string_memcpy/7/8/4/iterations:1\n"
+ "BM_string_memcpy/7/8/8/iterations:1\n"
+ "BM_string_memcpy/7/8/16/iterations:1\n"
+ "BM_string_memcpy/7/8/32/iterations:1\n"
+ "BM_string_memcpy/7/16/1/iterations:1\n"
+ "BM_string_memcpy/7/16/2/iterations:1\n"
+ "BM_string_memcpy/7/16/4/iterations:1\n"
+ "BM_string_memcpy/7/16/8/iterations:1\n"
+ "BM_string_memcpy/7/16/16/iterations:1\n"
+ "BM_string_memcpy/7/16/32/iterations:1\n"
+ "BM_string_memcpy/7/32/1/iterations:1\n"
+ "BM_string_memcpy/7/32/2/iterations:1\n"
+ "BM_string_memcpy/7/32/4/iterations:1\n"
+ "BM_string_memcpy/7/32/8/iterations:1\n"
+ "BM_string_memcpy/7/32/16/iterations:1\n"
+ "BM_string_memcpy/7/32/32/iterations:1\n"
+ "BM_string_memcpy/8/0/0/iterations:1\n"
+ "BM_string_memcpy/8/1/1/iterations:1\n"
+ "BM_string_memcpy/8/1/2/iterations:1\n"
+ "BM_string_memcpy/8/1/4/iterations:1\n"
+ "BM_string_memcpy/8/1/8/iterations:1\n"
+ "BM_string_memcpy/8/1/16/iterations:1\n"
+ "BM_string_memcpy/8/1/32/iterations:1\n"
+ "BM_string_memcpy/8/2/1/iterations:1\n"
+ "BM_string_memcpy/8/2/2/iterations:1\n"
+ "BM_string_memcpy/8/2/4/iterations:1\n"
+ "BM_string_memcpy/8/2/8/iterations:1\n"
+ "BM_string_memcpy/8/2/16/iterations:1\n"
+ "BM_string_memcpy/8/2/32/iterations:1\n"
+ "BM_string_memcpy/8/4/1/iterations:1\n"
+ "BM_string_memcpy/8/4/2/iterations:1\n"
+ "BM_string_memcpy/8/4/4/iterations:1\n"
+ "BM_string_memcpy/8/4/8/iterations:1\n"
+ "BM_string_memcpy/8/4/16/iterations:1\n"
+ "BM_string_memcpy/8/4/32/iterations:1\n"
+ "BM_string_memcpy/8/8/1/iterations:1\n"
+ "BM_string_memcpy/8/8/2/iterations:1\n"
+ "BM_string_memcpy/8/8/4/iterations:1\n"
+ "BM_string_memcpy/8/8/8/iterations:1\n"
+ "BM_string_memcpy/8/8/16/iterations:1\n"
+ "BM_string_memcpy/8/8/32/iterations:1\n"
+ "BM_string_memcpy/8/16/1/iterations:1\n"
+ "BM_string_memcpy/8/16/2/iterations:1\n"
+ "BM_string_memcpy/8/16/4/iterations:1\n"
+ "BM_string_memcpy/8/16/8/iterations:1\n"
+ "BM_string_memcpy/8/16/16/iterations:1\n"
+ "BM_string_memcpy/8/16/32/iterations:1\n"
+ "BM_string_memcpy/8/32/1/iterations:1\n"
+ "BM_string_memcpy/8/32/2/iterations:1\n"
+ "BM_string_memcpy/8/32/4/iterations:1\n"
+ "BM_string_memcpy/8/32/8/iterations:1\n"
+ "BM_string_memcpy/8/32/16/iterations:1\n"
+ "BM_string_memcpy/8/32/32/iterations:1\n"
+ "BM_string_memcpy/9/0/0/iterations:1\n"
+ "BM_string_memcpy/9/1/1/iterations:1\n"
+ "BM_string_memcpy/9/1/2/iterations:1\n"
+ "BM_string_memcpy/9/1/4/iterations:1\n"
+ "BM_string_memcpy/9/1/8/iterations:1\n"
+ "BM_string_memcpy/9/1/16/iterations:1\n"
+ "BM_string_memcpy/9/1/32/iterations:1\n"
+ "BM_string_memcpy/9/2/1/iterations:1\n"
+ "BM_string_memcpy/9/2/2/iterations:1\n"
+ "BM_string_memcpy/9/2/4/iterations:1\n"
+ "BM_string_memcpy/9/2/8/iterations:1\n"
+ "BM_string_memcpy/9/2/16/iterations:1\n"
+ "BM_string_memcpy/9/2/32/iterations:1\n"
+ "BM_string_memcpy/9/4/1/iterations:1\n"
+ "BM_string_memcpy/9/4/2/iterations:1\n"
+ "BM_string_memcpy/9/4/4/iterations:1\n"
+ "BM_string_memcpy/9/4/8/iterations:1\n"
+ "BM_string_memcpy/9/4/16/iterations:1\n"
+ "BM_string_memcpy/9/4/32/iterations:1\n"
+ "BM_string_memcpy/9/8/1/iterations:1\n"
+ "BM_string_memcpy/9/8/2/iterations:1\n"
+ "BM_string_memcpy/9/8/4/iterations:1\n"
+ "BM_string_memcpy/9/8/8/iterations:1\n"
+ "BM_string_memcpy/9/8/16/iterations:1\n"
+ "BM_string_memcpy/9/8/32/iterations:1\n"
+ "BM_string_memcpy/9/16/1/iterations:1\n"
+ "BM_string_memcpy/9/16/2/iterations:1\n"
+ "BM_string_memcpy/9/16/4/iterations:1\n"
+ "BM_string_memcpy/9/16/8/iterations:1\n"
+ "BM_string_memcpy/9/16/16/iterations:1\n"
+ "BM_string_memcpy/9/16/32/iterations:1\n"
+ "BM_string_memcpy/9/32/1/iterations:1\n"
+ "BM_string_memcpy/9/32/2/iterations:1\n"
+ "BM_string_memcpy/9/32/4/iterations:1\n"
+ "BM_string_memcpy/9/32/8/iterations:1\n"
+ "BM_string_memcpy/9/32/16/iterations:1\n"
+ "BM_string_memcpy/9/32/32/iterations:1\n"
+ "BM_string_memcpy/10/0/0/iterations:1\n"
+ "BM_string_memcpy/10/1/1/iterations:1\n"
+ "BM_string_memcpy/10/1/2/iterations:1\n"
+ "BM_string_memcpy/10/1/4/iterations:1\n"
+ "BM_string_memcpy/10/1/8/iterations:1\n"
+ "BM_string_memcpy/10/1/16/iterations:1\n"
+ "BM_string_memcpy/10/1/32/iterations:1\n"
+ "BM_string_memcpy/10/2/1/iterations:1\n"
+ "BM_string_memcpy/10/2/2/iterations:1\n"
+ "BM_string_memcpy/10/2/4/iterations:1\n"
+ "BM_string_memcpy/10/2/8/iterations:1\n"
+ "BM_string_memcpy/10/2/16/iterations:1\n"
+ "BM_string_memcpy/10/2/32/iterations:1\n"
+ "BM_string_memcpy/10/4/1/iterations:1\n"
+ "BM_string_memcpy/10/4/2/iterations:1\n"
+ "BM_string_memcpy/10/4/4/iterations:1\n"
+ "BM_string_memcpy/10/4/8/iterations:1\n"
+ "BM_string_memcpy/10/4/16/iterations:1\n"
+ "BM_string_memcpy/10/4/32/iterations:1\n"
+ "BM_string_memcpy/10/8/1/iterations:1\n"
+ "BM_string_memcpy/10/8/2/iterations:1\n"
+ "BM_string_memcpy/10/8/4/iterations:1\n"
+ "BM_string_memcpy/10/8/8/iterations:1\n"
+ "BM_string_memcpy/10/8/16/iterations:1\n"
+ "BM_string_memcpy/10/8/32/iterations:1\n"
+ "BM_string_memcpy/10/16/1/iterations:1\n"
+ "BM_string_memcpy/10/16/2/iterations:1\n"
+ "BM_string_memcpy/10/16/4/iterations:1\n"
+ "BM_string_memcpy/10/16/8/iterations:1\n"
+ "BM_string_memcpy/10/16/16/iterations:1\n"
+ "BM_string_memcpy/10/16/32/iterations:1\n"
+ "BM_string_memcpy/10/32/1/iterations:1\n"
+ "BM_string_memcpy/10/32/2/iterations:1\n"
+ "BM_string_memcpy/10/32/4/iterations:1\n"
+ "BM_string_memcpy/10/32/8/iterations:1\n"
+ "BM_string_memcpy/10/32/16/iterations:1\n"
+ "BM_string_memcpy/10/32/32/iterations:1\n"
+ "BM_string_memcpy/11/0/0/iterations:1\n"
+ "BM_string_memcpy/11/1/1/iterations:1\n"
+ "BM_string_memcpy/11/1/2/iterations:1\n"
+ "BM_string_memcpy/11/1/4/iterations:1\n"
+ "BM_string_memcpy/11/1/8/iterations:1\n"
+ "BM_string_memcpy/11/1/16/iterations:1\n"
+ "BM_string_memcpy/11/1/32/iterations:1\n"
+ "BM_string_memcpy/11/2/1/iterations:1\n"
+ "BM_string_memcpy/11/2/2/iterations:1\n"
+ "BM_string_memcpy/11/2/4/iterations:1\n"
+ "BM_string_memcpy/11/2/8/iterations:1\n"
+ "BM_string_memcpy/11/2/16/iterations:1\n"
+ "BM_string_memcpy/11/2/32/iterations:1\n"
+ "BM_string_memcpy/11/4/1/iterations:1\n"
+ "BM_string_memcpy/11/4/2/iterations:1\n"
+ "BM_string_memcpy/11/4/4/iterations:1\n"
+ "BM_string_memcpy/11/4/8/iterations:1\n"
+ "BM_string_memcpy/11/4/16/iterations:1\n"
+ "BM_string_memcpy/11/4/32/iterations:1\n"
+ "BM_string_memcpy/11/8/1/iterations:1\n"
+ "BM_string_memcpy/11/8/2/iterations:1\n"
+ "BM_string_memcpy/11/8/4/iterations:1\n"
+ "BM_string_memcpy/11/8/8/iterations:1\n"
+ "BM_string_memcpy/11/8/16/iterations:1\n"
+ "BM_string_memcpy/11/8/32/iterations:1\n"
+ "BM_string_memcpy/11/16/1/iterations:1\n"
+ "BM_string_memcpy/11/16/2/iterations:1\n"
+ "BM_string_memcpy/11/16/4/iterations:1\n"
+ "BM_string_memcpy/11/16/8/iterations:1\n"
+ "BM_string_memcpy/11/16/16/iterations:1\n"
+ "BM_string_memcpy/11/16/32/iterations:1\n"
+ "BM_string_memcpy/11/32/1/iterations:1\n"
+ "BM_string_memcpy/11/32/2/iterations:1\n"
+ "BM_string_memcpy/11/32/4/iterations:1\n"
+ "BM_string_memcpy/11/32/8/iterations:1\n"
+ "BM_string_memcpy/11/32/16/iterations:1\n"
+ "BM_string_memcpy/11/32/32/iterations:1\n"
+ "BM_string_memcpy/12/0/0/iterations:1\n"
+ "BM_string_memcpy/12/1/1/iterations:1\n"
+ "BM_string_memcpy/12/1/2/iterations:1\n"
+ "BM_string_memcpy/12/1/4/iterations:1\n"
+ "BM_string_memcpy/12/1/8/iterations:1\n"
+ "BM_string_memcpy/12/1/16/iterations:1\n"
+ "BM_string_memcpy/12/1/32/iterations:1\n"
+ "BM_string_memcpy/12/2/1/iterations:1\n"
+ "BM_string_memcpy/12/2/2/iterations:1\n"
+ "BM_string_memcpy/12/2/4/iterations:1\n"
+ "BM_string_memcpy/12/2/8/iterations:1\n"
+ "BM_string_memcpy/12/2/16/iterations:1\n"
+ "BM_string_memcpy/12/2/32/iterations:1\n"
+ "BM_string_memcpy/12/4/1/iterations:1\n"
+ "BM_string_memcpy/12/4/2/iterations:1\n"
+ "BM_string_memcpy/12/4/4/iterations:1\n"
+ "BM_string_memcpy/12/4/8/iterations:1\n"
+ "BM_string_memcpy/12/4/16/iterations:1\n"
+ "BM_string_memcpy/12/4/32/iterations:1\n"
+ "BM_string_memcpy/12/8/1/iterations:1\n"
+ "BM_string_memcpy/12/8/2/iterations:1\n"
+ "BM_string_memcpy/12/8/4/iterations:1\n"
+ "BM_string_memcpy/12/8/8/iterations:1\n"
+ "BM_string_memcpy/12/8/16/iterations:1\n"
+ "BM_string_memcpy/12/8/32/iterations:1\n"
+ "BM_string_memcpy/12/16/1/iterations:1\n"
+ "BM_string_memcpy/12/16/2/iterations:1\n"
+ "BM_string_memcpy/12/16/4/iterations:1\n"
+ "BM_string_memcpy/12/16/8/iterations:1\n"
+ "BM_string_memcpy/12/16/16/iterations:1\n"
+ "BM_string_memcpy/12/16/32/iterations:1\n"
+ "BM_string_memcpy/12/32/1/iterations:1\n"
+ "BM_string_memcpy/12/32/2/iterations:1\n"
+ "BM_string_memcpy/12/32/4/iterations:1\n"
+ "BM_string_memcpy/12/32/8/iterations:1\n"
+ "BM_string_memcpy/12/32/16/iterations:1\n"
+ "BM_string_memcpy/12/32/32/iterations:1\n"
+ "BM_string_memcpy/13/0/0/iterations:1\n"
+ "BM_string_memcpy/13/1/1/iterations:1\n"
+ "BM_string_memcpy/13/1/2/iterations:1\n"
+ "BM_string_memcpy/13/1/4/iterations:1\n"
+ "BM_string_memcpy/13/1/8/iterations:1\n"
+ "BM_string_memcpy/13/1/16/iterations:1\n"
+ "BM_string_memcpy/13/1/32/iterations:1\n"
+ "BM_string_memcpy/13/2/1/iterations:1\n"
+ "BM_string_memcpy/13/2/2/iterations:1\n"
+ "BM_string_memcpy/13/2/4/iterations:1\n"
+ "BM_string_memcpy/13/2/8/iterations:1\n"
+ "BM_string_memcpy/13/2/16/iterations:1\n"
+ "BM_string_memcpy/13/2/32/iterations:1\n"
+ "BM_string_memcpy/13/4/1/iterations:1\n"
+ "BM_string_memcpy/13/4/2/iterations:1\n"
+ "BM_string_memcpy/13/4/4/iterations:1\n"
+ "BM_string_memcpy/13/4/8/iterations:1\n"
+ "BM_string_memcpy/13/4/16/iterations:1\n"
+ "BM_string_memcpy/13/4/32/iterations:1\n"
+ "BM_string_memcpy/13/8/1/iterations:1\n"
+ "BM_string_memcpy/13/8/2/iterations:1\n"
+ "BM_string_memcpy/13/8/4/iterations:1\n"
+ "BM_string_memcpy/13/8/8/iterations:1\n"
+ "BM_string_memcpy/13/8/16/iterations:1\n"
+ "BM_string_memcpy/13/8/32/iterations:1\n"
+ "BM_string_memcpy/13/16/1/iterations:1\n"
+ "BM_string_memcpy/13/16/2/iterations:1\n"
+ "BM_string_memcpy/13/16/4/iterations:1\n"
+ "BM_string_memcpy/13/16/8/iterations:1\n"
+ "BM_string_memcpy/13/16/16/iterations:1\n"
+ "BM_string_memcpy/13/16/32/iterations:1\n"
+ "BM_string_memcpy/13/32/1/iterations:1\n"
+ "BM_string_memcpy/13/32/2/iterations:1\n"
+ "BM_string_memcpy/13/32/4/iterations:1\n"
+ "BM_string_memcpy/13/32/8/iterations:1\n"
+ "BM_string_memcpy/13/32/16/iterations:1\n"
+ "BM_string_memcpy/13/32/32/iterations:1\n"
+ "BM_string_memcpy/14/0/0/iterations:1\n"
+ "BM_string_memcpy/14/1/1/iterations:1\n"
+ "BM_string_memcpy/14/1/2/iterations:1\n"
+ "BM_string_memcpy/14/1/4/iterations:1\n"
+ "BM_string_memcpy/14/1/8/iterations:1\n"
+ "BM_string_memcpy/14/1/16/iterations:1\n"
+ "BM_string_memcpy/14/1/32/iterations:1\n"
+ "BM_string_memcpy/14/2/1/iterations:1\n"
+ "BM_string_memcpy/14/2/2/iterations:1\n"
+ "BM_string_memcpy/14/2/4/iterations:1\n"
+ "BM_string_memcpy/14/2/8/iterations:1\n"
+ "BM_string_memcpy/14/2/16/iterations:1\n"
+ "BM_string_memcpy/14/2/32/iterations:1\n"
+ "BM_string_memcpy/14/4/1/iterations:1\n"
+ "BM_string_memcpy/14/4/2/iterations:1\n"
+ "BM_string_memcpy/14/4/4/iterations:1\n"
+ "BM_string_memcpy/14/4/8/iterations:1\n"
+ "BM_string_memcpy/14/4/16/iterations:1\n"
+ "BM_string_memcpy/14/4/32/iterations:1\n"
+ "BM_string_memcpy/14/8/1/iterations:1\n"
+ "BM_string_memcpy/14/8/2/iterations:1\n"
+ "BM_string_memcpy/14/8/4/iterations:1\n"
+ "BM_string_memcpy/14/8/8/iterations:1\n"
+ "BM_string_memcpy/14/8/16/iterations:1\n"
+ "BM_string_memcpy/14/8/32/iterations:1\n"
+ "BM_string_memcpy/14/16/1/iterations:1\n"
+ "BM_string_memcpy/14/16/2/iterations:1\n"
+ "BM_string_memcpy/14/16/4/iterations:1\n"
+ "BM_string_memcpy/14/16/8/iterations:1\n"
+ "BM_string_memcpy/14/16/16/iterations:1\n"
+ "BM_string_memcpy/14/16/32/iterations:1\n"
+ "BM_string_memcpy/14/32/1/iterations:1\n"
+ "BM_string_memcpy/14/32/2/iterations:1\n"
+ "BM_string_memcpy/14/32/4/iterations:1\n"
+ "BM_string_memcpy/14/32/8/iterations:1\n"
+ "BM_string_memcpy/14/32/16/iterations:1\n"
+ "BM_string_memcpy/14/32/32/iterations:1\n"
+ "BM_string_memcpy/15/0/0/iterations:1\n"
+ "BM_string_memcpy/15/1/1/iterations:1\n"
+ "BM_string_memcpy/15/1/2/iterations:1\n"
+ "BM_string_memcpy/15/1/4/iterations:1\n"
+ "BM_string_memcpy/15/1/8/iterations:1\n"
+ "BM_string_memcpy/15/1/16/iterations:1\n"
+ "BM_string_memcpy/15/1/32/iterations:1\n"
+ "BM_string_memcpy/15/2/1/iterations:1\n"
+ "BM_string_memcpy/15/2/2/iterations:1\n"
+ "BM_string_memcpy/15/2/4/iterations:1\n"
+ "BM_string_memcpy/15/2/8/iterations:1\n"
+ "BM_string_memcpy/15/2/16/iterations:1\n"
+ "BM_string_memcpy/15/2/32/iterations:1\n"
+ "BM_string_memcpy/15/4/1/iterations:1\n"
+ "BM_string_memcpy/15/4/2/iterations:1\n"
+ "BM_string_memcpy/15/4/4/iterations:1\n"
+ "BM_string_memcpy/15/4/8/iterations:1\n"
+ "BM_string_memcpy/15/4/16/iterations:1\n"
+ "BM_string_memcpy/15/4/32/iterations:1\n"
+ "BM_string_memcpy/15/8/1/iterations:1\n"
+ "BM_string_memcpy/15/8/2/iterations:1\n"
+ "BM_string_memcpy/15/8/4/iterations:1\n"
+ "BM_string_memcpy/15/8/8/iterations:1\n"
+ "BM_string_memcpy/15/8/16/iterations:1\n"
+ "BM_string_memcpy/15/8/32/iterations:1\n"
+ "BM_string_memcpy/15/16/1/iterations:1\n"
+ "BM_string_memcpy/15/16/2/iterations:1\n"
+ "BM_string_memcpy/15/16/4/iterations:1\n"
+ "BM_string_memcpy/15/16/8/iterations:1\n"
+ "BM_string_memcpy/15/16/16/iterations:1\n"
+ "BM_string_memcpy/15/16/32/iterations:1\n"
+ "BM_string_memcpy/15/32/1/iterations:1\n"
+ "BM_string_memcpy/15/32/2/iterations:1\n"
+ "BM_string_memcpy/15/32/4/iterations:1\n"
+ "BM_string_memcpy/15/32/8/iterations:1\n"
+ "BM_string_memcpy/15/32/16/iterations:1\n"
+ "BM_string_memcpy/15/32/32/iterations:1\n"
+ "BM_string_memcpy/16/0/0/iterations:1\n"
+ "BM_string_memcpy/16/1/1/iterations:1\n"
+ "BM_string_memcpy/16/1/2/iterations:1\n"
+ "BM_string_memcpy/16/1/4/iterations:1\n"
+ "BM_string_memcpy/16/1/8/iterations:1\n"
+ "BM_string_memcpy/16/1/16/iterations:1\n"
+ "BM_string_memcpy/16/1/32/iterations:1\n"
+ "BM_string_memcpy/16/2/1/iterations:1\n"
+ "BM_string_memcpy/16/2/2/iterations:1\n"
+ "BM_string_memcpy/16/2/4/iterations:1\n"
+ "BM_string_memcpy/16/2/8/iterations:1\n"
+ "BM_string_memcpy/16/2/16/iterations:1\n"
+ "BM_string_memcpy/16/2/32/iterations:1\n"
+ "BM_string_memcpy/16/4/1/iterations:1\n"
+ "BM_string_memcpy/16/4/2/iterations:1\n"
+ "BM_string_memcpy/16/4/4/iterations:1\n"
+ "BM_string_memcpy/16/4/8/iterations:1\n"
+ "BM_string_memcpy/16/4/16/iterations:1\n"
+ "BM_string_memcpy/16/4/32/iterations:1\n"
+ "BM_string_memcpy/16/8/1/iterations:1\n"
+ "BM_string_memcpy/16/8/2/iterations:1\n"
+ "BM_string_memcpy/16/8/4/iterations:1\n"
+ "BM_string_memcpy/16/8/8/iterations:1\n"
+ "BM_string_memcpy/16/8/16/iterations:1\n"
+ "BM_string_memcpy/16/8/32/iterations:1\n"
+ "BM_string_memcpy/16/16/1/iterations:1\n"
+ "BM_string_memcpy/16/16/2/iterations:1\n"
+ "BM_string_memcpy/16/16/4/iterations:1\n"
+ "BM_string_memcpy/16/16/8/iterations:1\n"
+ "BM_string_memcpy/16/16/16/iterations:1\n"
+ "BM_string_memcpy/16/16/32/iterations:1\n"
+ "BM_string_memcpy/16/32/1/iterations:1\n"
+ "BM_string_memcpy/16/32/2/iterations:1\n"
+ "BM_string_memcpy/16/32/4/iterations:1\n"
+ "BM_string_memcpy/16/32/8/iterations:1\n"
+ "BM_string_memcpy/16/32/16/iterations:1\n"
+ "BM_string_memcpy/16/32/32/iterations:1\n"
+ "BM_string_memcpy/24/0/0/iterations:1\n"
+ "BM_string_memcpy/24/1/1/iterations:1\n"
+ "BM_string_memcpy/24/1/2/iterations:1\n"
+ "BM_string_memcpy/24/1/4/iterations:1\n"
+ "BM_string_memcpy/24/1/8/iterations:1\n"
+ "BM_string_memcpy/24/1/16/iterations:1\n"
+ "BM_string_memcpy/24/1/32/iterations:1\n"
+ "BM_string_memcpy/24/2/1/iterations:1\n"
+ "BM_string_memcpy/24/2/2/iterations:1\n"
+ "BM_string_memcpy/24/2/4/iterations:1\n"
+ "BM_string_memcpy/24/2/8/iterations:1\n"
+ "BM_string_memcpy/24/2/16/iterations:1\n"
+ "BM_string_memcpy/24/2/32/iterations:1\n"
+ "BM_string_memcpy/24/4/1/iterations:1\n"
+ "BM_string_memcpy/24/4/2/iterations:1\n"
+ "BM_string_memcpy/24/4/4/iterations:1\n"
+ "BM_string_memcpy/24/4/8/iterations:1\n"
+ "BM_string_memcpy/24/4/16/iterations:1\n"
+ "BM_string_memcpy/24/4/32/iterations:1\n"
+ "BM_string_memcpy/24/8/1/iterations:1\n"
+ "BM_string_memcpy/24/8/2/iterations:1\n"
+ "BM_string_memcpy/24/8/4/iterations:1\n"
+ "BM_string_memcpy/24/8/8/iterations:1\n"
+ "BM_string_memcpy/24/8/16/iterations:1\n"
+ "BM_string_memcpy/24/8/32/iterations:1\n"
+ "BM_string_memcpy/24/16/1/iterations:1\n"
+ "BM_string_memcpy/24/16/2/iterations:1\n"
+ "BM_string_memcpy/24/16/4/iterations:1\n"
+ "BM_string_memcpy/24/16/8/iterations:1\n"
+ "BM_string_memcpy/24/16/16/iterations:1\n"
+ "BM_string_memcpy/24/16/32/iterations:1\n"
+ "BM_string_memcpy/24/32/1/iterations:1\n"
+ "BM_string_memcpy/24/32/2/iterations:1\n"
+ "BM_string_memcpy/24/32/4/iterations:1\n"
+ "BM_string_memcpy/24/32/8/iterations:1\n"
+ "BM_string_memcpy/24/32/16/iterations:1\n"
+ "BM_string_memcpy/24/32/32/iterations:1\n"
+ "BM_string_memcpy/32/0/0/iterations:1\n"
+ "BM_string_memcpy/32/1/1/iterations:1\n"
+ "BM_string_memcpy/32/1/2/iterations:1\n"
+ "BM_string_memcpy/32/1/4/iterations:1\n"
+ "BM_string_memcpy/32/1/8/iterations:1\n"
+ "BM_string_memcpy/32/1/16/iterations:1\n"
+ "BM_string_memcpy/32/1/32/iterations:1\n"
+ "BM_string_memcpy/32/2/1/iterations:1\n"
+ "BM_string_memcpy/32/2/2/iterations:1\n"
+ "BM_string_memcpy/32/2/4/iterations:1\n"
+ "BM_string_memcpy/32/2/8/iterations:1\n"
+ "BM_string_memcpy/32/2/16/iterations:1\n"
+ "BM_string_memcpy/32/2/32/iterations:1\n"
+ "BM_string_memcpy/32/4/1/iterations:1\n"
+ "BM_string_memcpy/32/4/2/iterations:1\n"
+ "BM_string_memcpy/32/4/4/iterations:1\n"
+ "BM_string_memcpy/32/4/8/iterations:1\n"
+ "BM_string_memcpy/32/4/16/iterations:1\n"
+ "BM_string_memcpy/32/4/32/iterations:1\n"
+ "BM_string_memcpy/32/8/1/iterations:1\n"
+ "BM_string_memcpy/32/8/2/iterations:1\n"
+ "BM_string_memcpy/32/8/4/iterations:1\n"
+ "BM_string_memcpy/32/8/8/iterations:1\n"
+ "BM_string_memcpy/32/8/16/iterations:1\n"
+ "BM_string_memcpy/32/8/32/iterations:1\n"
+ "BM_string_memcpy/32/16/1/iterations:1\n"
+ "BM_string_memcpy/32/16/2/iterations:1\n"
+ "BM_string_memcpy/32/16/4/iterations:1\n"
+ "BM_string_memcpy/32/16/8/iterations:1\n"
+ "BM_string_memcpy/32/16/16/iterations:1\n"
+ "BM_string_memcpy/32/16/32/iterations:1\n"
+ "BM_string_memcpy/32/32/1/iterations:1\n"
+ "BM_string_memcpy/32/32/2/iterations:1\n"
+ "BM_string_memcpy/32/32/4/iterations:1\n"
+ "BM_string_memcpy/32/32/8/iterations:1\n"
+ "BM_string_memcpy/32/32/16/iterations:1\n"
+ "BM_string_memcpy/32/32/32/iterations:1\n"
+ "BM_string_memcpy/40/0/0/iterations:1\n"
+ "BM_string_memcpy/40/1/1/iterations:1\n"
+ "BM_string_memcpy/40/1/2/iterations:1\n"
+ "BM_string_memcpy/40/1/4/iterations:1\n"
+ "BM_string_memcpy/40/1/8/iterations:1\n"
+ "BM_string_memcpy/40/1/16/iterations:1\n"
+ "BM_string_memcpy/40/1/32/iterations:1\n"
+ "BM_string_memcpy/40/2/1/iterations:1\n"
+ "BM_string_memcpy/40/2/2/iterations:1\n"
+ "BM_string_memcpy/40/2/4/iterations:1\n"
+ "BM_string_memcpy/40/2/8/iterations:1\n"
+ "BM_string_memcpy/40/2/16/iterations:1\n"
+ "BM_string_memcpy/40/2/32/iterations:1\n"
+ "BM_string_memcpy/40/4/1/iterations:1\n"
+ "BM_string_memcpy/40/4/2/iterations:1\n"
+ "BM_string_memcpy/40/4/4/iterations:1\n"
+ "BM_string_memcpy/40/4/8/iterations:1\n"
+ "BM_string_memcpy/40/4/16/iterations:1\n"
+ "BM_string_memcpy/40/4/32/iterations:1\n"
+ "BM_string_memcpy/40/8/1/iterations:1\n"
+ "BM_string_memcpy/40/8/2/iterations:1\n"
+ "BM_string_memcpy/40/8/4/iterations:1\n"
+ "BM_string_memcpy/40/8/8/iterations:1\n"
+ "BM_string_memcpy/40/8/16/iterations:1\n"
+ "BM_string_memcpy/40/8/32/iterations:1\n"
+ "BM_string_memcpy/40/16/1/iterations:1\n"
+ "BM_string_memcpy/40/16/2/iterations:1\n"
+ "BM_string_memcpy/40/16/4/iterations:1\n"
+ "BM_string_memcpy/40/16/8/iterations:1\n"
+ "BM_string_memcpy/40/16/16/iterations:1\n"
+ "BM_string_memcpy/40/16/32/iterations:1\n"
+ "BM_string_memcpy/40/32/1/iterations:1\n"
+ "BM_string_memcpy/40/32/2/iterations:1\n"
+ "BM_string_memcpy/40/32/4/iterations:1\n"
+ "BM_string_memcpy/40/32/8/iterations:1\n"
+ "BM_string_memcpy/40/32/16/iterations:1\n"
+ "BM_string_memcpy/40/32/32/iterations:1\n"
+ "BM_string_memcpy/48/0/0/iterations:1\n"
+ "BM_string_memcpy/48/1/1/iterations:1\n"
+ "BM_string_memcpy/48/1/2/iterations:1\n"
+ "BM_string_memcpy/48/1/4/iterations:1\n"
+ "BM_string_memcpy/48/1/8/iterations:1\n"
+ "BM_string_memcpy/48/1/16/iterations:1\n"
+ "BM_string_memcpy/48/1/32/iterations:1\n"
+ "BM_string_memcpy/48/2/1/iterations:1\n"
+ "BM_string_memcpy/48/2/2/iterations:1\n"
+ "BM_string_memcpy/48/2/4/iterations:1\n"
+ "BM_string_memcpy/48/2/8/iterations:1\n"
+ "BM_string_memcpy/48/2/16/iterations:1\n"
+ "BM_string_memcpy/48/2/32/iterations:1\n"
+ "BM_string_memcpy/48/4/1/iterations:1\n"
+ "BM_string_memcpy/48/4/2/iterations:1\n"
+ "BM_string_memcpy/48/4/4/iterations:1\n"
+ "BM_string_memcpy/48/4/8/iterations:1\n"
+ "BM_string_memcpy/48/4/16/iterations:1\n"
+ "BM_string_memcpy/48/4/32/iterations:1\n"
+ "BM_string_memcpy/48/8/1/iterations:1\n"
+ "BM_string_memcpy/48/8/2/iterations:1\n"
+ "BM_string_memcpy/48/8/4/iterations:1\n"
+ "BM_string_memcpy/48/8/8/iterations:1\n"
+ "BM_string_memcpy/48/8/16/iterations:1\n"
+ "BM_string_memcpy/48/8/32/iterations:1\n"
+ "BM_string_memcpy/48/16/1/iterations:1\n"
+ "BM_string_memcpy/48/16/2/iterations:1\n"
+ "BM_string_memcpy/48/16/4/iterations:1\n"
+ "BM_string_memcpy/48/16/8/iterations:1\n"
+ "BM_string_memcpy/48/16/16/iterations:1\n"
+ "BM_string_memcpy/48/16/32/iterations:1\n"
+ "BM_string_memcpy/48/32/1/iterations:1\n"
+ "BM_string_memcpy/48/32/2/iterations:1\n"
+ "BM_string_memcpy/48/32/4/iterations:1\n"
+ "BM_string_memcpy/48/32/8/iterations:1\n"
+ "BM_string_memcpy/48/32/16/iterations:1\n"
+ "BM_string_memcpy/48/32/32/iterations:1\n"
+ "BM_string_memcpy/56/0/0/iterations:1\n"
+ "BM_string_memcpy/56/1/1/iterations:1\n"
+ "BM_string_memcpy/56/1/2/iterations:1\n"
+ "BM_string_memcpy/56/1/4/iterations:1\n"
+ "BM_string_memcpy/56/1/8/iterations:1\n"
+ "BM_string_memcpy/56/1/16/iterations:1\n"
+ "BM_string_memcpy/56/1/32/iterations:1\n"
+ "BM_string_memcpy/56/2/1/iterations:1\n"
+ "BM_string_memcpy/56/2/2/iterations:1\n"
+ "BM_string_memcpy/56/2/4/iterations:1\n"
+ "BM_string_memcpy/56/2/8/iterations:1\n"
+ "BM_string_memcpy/56/2/16/iterations:1\n"
+ "BM_string_memcpy/56/2/32/iterations:1\n"
+ "BM_string_memcpy/56/4/1/iterations:1\n"
+ "BM_string_memcpy/56/4/2/iterations:1\n"
+ "BM_string_memcpy/56/4/4/iterations:1\n"
+ "BM_string_memcpy/56/4/8/iterations:1\n"
+ "BM_string_memcpy/56/4/16/iterations:1\n"
+ "BM_string_memcpy/56/4/32/iterations:1\n"
+ "BM_string_memcpy/56/8/1/iterations:1\n"
+ "BM_string_memcpy/56/8/2/iterations:1\n"
+ "BM_string_memcpy/56/8/4/iterations:1\n"
+ "BM_string_memcpy/56/8/8/iterations:1\n"
+ "BM_string_memcpy/56/8/16/iterations:1\n"
+ "BM_string_memcpy/56/8/32/iterations:1\n"
+ "BM_string_memcpy/56/16/1/iterations:1\n"
+ "BM_string_memcpy/56/16/2/iterations:1\n"
+ "BM_string_memcpy/56/16/4/iterations:1\n"
+ "BM_string_memcpy/56/16/8/iterations:1\n"
+ "BM_string_memcpy/56/16/16/iterations:1\n"
+ "BM_string_memcpy/56/16/32/iterations:1\n"
+ "BM_string_memcpy/56/32/1/iterations:1\n"
+ "BM_string_memcpy/56/32/2/iterations:1\n"
+ "BM_string_memcpy/56/32/4/iterations:1\n"
+ "BM_string_memcpy/56/32/8/iterations:1\n"
+ "BM_string_memcpy/56/32/16/iterations:1\n"
+ "BM_string_memcpy/56/32/32/iterations:1\n"
+ "BM_string_memcpy/64/0/0/iterations:1\n"
+ "BM_string_memcpy/64/1/1/iterations:1\n"
+ "BM_string_memcpy/64/1/2/iterations:1\n"
+ "BM_string_memcpy/64/1/4/iterations:1\n"
+ "BM_string_memcpy/64/1/8/iterations:1\n"
+ "BM_string_memcpy/64/1/16/iterations:1\n"
+ "BM_string_memcpy/64/1/32/iterations:1\n"
+ "BM_string_memcpy/64/2/1/iterations:1\n"
+ "BM_string_memcpy/64/2/2/iterations:1\n"
+ "BM_string_memcpy/64/2/4/iterations:1\n"
+ "BM_string_memcpy/64/2/8/iterations:1\n"
+ "BM_string_memcpy/64/2/16/iterations:1\n"
+ "BM_string_memcpy/64/2/32/iterations:1\n"
+ "BM_string_memcpy/64/4/1/iterations:1\n"
+ "BM_string_memcpy/64/4/2/iterations:1\n"
+ "BM_string_memcpy/64/4/4/iterations:1\n"
+ "BM_string_memcpy/64/4/8/iterations:1\n"
+ "BM_string_memcpy/64/4/16/iterations:1\n"
+ "BM_string_memcpy/64/4/32/iterations:1\n"
+ "BM_string_memcpy/64/8/1/iterations:1\n"
+ "BM_string_memcpy/64/8/2/iterations:1\n"
+ "BM_string_memcpy/64/8/4/iterations:1\n"
+ "BM_string_memcpy/64/8/8/iterations:1\n"
+ "BM_string_memcpy/64/8/16/iterations:1\n"
+ "BM_string_memcpy/64/8/32/iterations:1\n"
+ "BM_string_memcpy/64/16/1/iterations:1\n"
+ "BM_string_memcpy/64/16/2/iterations:1\n"
+ "BM_string_memcpy/64/16/4/iterations:1\n"
+ "BM_string_memcpy/64/16/8/iterations:1\n"
+ "BM_string_memcpy/64/16/16/iterations:1\n"
+ "BM_string_memcpy/64/16/32/iterations:1\n"
+ "BM_string_memcpy/64/32/1/iterations:1\n"
+ "BM_string_memcpy/64/32/2/iterations:1\n"
+ "BM_string_memcpy/64/32/4/iterations:1\n"
+ "BM_string_memcpy/64/32/8/iterations:1\n"
+ "BM_string_memcpy/64/32/16/iterations:1\n"
+ "BM_string_memcpy/64/32/32/iterations:1\n"
+ "BM_string_memcpy/72/0/0/iterations:1\n"
+ "BM_string_memcpy/72/1/1/iterations:1\n"
+ "BM_string_memcpy/72/1/2/iterations:1\n"
+ "BM_string_memcpy/72/1/4/iterations:1\n"
+ "BM_string_memcpy/72/1/8/iterations:1\n"
+ "BM_string_memcpy/72/1/16/iterations:1\n"
+ "BM_string_memcpy/72/1/32/iterations:1\n"
+ "BM_string_memcpy/72/2/1/iterations:1\n"
+ "BM_string_memcpy/72/2/2/iterations:1\n"
+ "BM_string_memcpy/72/2/4/iterations:1\n"
+ "BM_string_memcpy/72/2/8/iterations:1\n"
+ "BM_string_memcpy/72/2/16/iterations:1\n"
+ "BM_string_memcpy/72/2/32/iterations:1\n"
+ "BM_string_memcpy/72/4/1/iterations:1\n"
+ "BM_string_memcpy/72/4/2/iterations:1\n"
+ "BM_string_memcpy/72/4/4/iterations:1\n"
+ "BM_string_memcpy/72/4/8/iterations:1\n"
+ "BM_string_memcpy/72/4/16/iterations:1\n"
+ "BM_string_memcpy/72/4/32/iterations:1\n"
+ "BM_string_memcpy/72/8/1/iterations:1\n"
+ "BM_string_memcpy/72/8/2/iterations:1\n"
+ "BM_string_memcpy/72/8/4/iterations:1\n"
+ "BM_string_memcpy/72/8/8/iterations:1\n"
+ "BM_string_memcpy/72/8/16/iterations:1\n"
+ "BM_string_memcpy/72/8/32/iterations:1\n"
+ "BM_string_memcpy/72/16/1/iterations:1\n"
+ "BM_string_memcpy/72/16/2/iterations:1\n"
+ "BM_string_memcpy/72/16/4/iterations:1\n"
+ "BM_string_memcpy/72/16/8/iterations:1\n"
+ "BM_string_memcpy/72/16/16/iterations:1\n"
+ "BM_string_memcpy/72/16/32/iterations:1\n"
+ "BM_string_memcpy/72/32/1/iterations:1\n"
+ "BM_string_memcpy/72/32/2/iterations:1\n"
+ "BM_string_memcpy/72/32/4/iterations:1\n"
+ "BM_string_memcpy/72/32/8/iterations:1\n"
+ "BM_string_memcpy/72/32/16/iterations:1\n"
+ "BM_string_memcpy/72/32/32/iterations:1\n"
+ "BM_string_memcpy/80/0/0/iterations:1\n"
+ "BM_string_memcpy/80/1/1/iterations:1\n"
+ "BM_string_memcpy/80/1/2/iterations:1\n"
+ "BM_string_memcpy/80/1/4/iterations:1\n"
+ "BM_string_memcpy/80/1/8/iterations:1\n"
+ "BM_string_memcpy/80/1/16/iterations:1\n"
+ "BM_string_memcpy/80/1/32/iterations:1\n"
+ "BM_string_memcpy/80/2/1/iterations:1\n"
+ "BM_string_memcpy/80/2/2/iterations:1\n"
+ "BM_string_memcpy/80/2/4/iterations:1\n"
+ "BM_string_memcpy/80/2/8/iterations:1\n"
+ "BM_string_memcpy/80/2/16/iterations:1\n"
+ "BM_string_memcpy/80/2/32/iterations:1\n"
+ "BM_string_memcpy/80/4/1/iterations:1\n"
+ "BM_string_memcpy/80/4/2/iterations:1\n"
+ "BM_string_memcpy/80/4/4/iterations:1\n"
+ "BM_string_memcpy/80/4/8/iterations:1\n"
+ "BM_string_memcpy/80/4/16/iterations:1\n"
+ "BM_string_memcpy/80/4/32/iterations:1\n"
+ "BM_string_memcpy/80/8/1/iterations:1\n"
+ "BM_string_memcpy/80/8/2/iterations:1\n"
+ "BM_string_memcpy/80/8/4/iterations:1\n"
+ "BM_string_memcpy/80/8/8/iterations:1\n"
+ "BM_string_memcpy/80/8/16/iterations:1\n"
+ "BM_string_memcpy/80/8/32/iterations:1\n"
+ "BM_string_memcpy/80/16/1/iterations:1\n"
+ "BM_string_memcpy/80/16/2/iterations:1\n"
+ "BM_string_memcpy/80/16/4/iterations:1\n"
+ "BM_string_memcpy/80/16/8/iterations:1\n"
+ "BM_string_memcpy/80/16/16/iterations:1\n"
+ "BM_string_memcpy/80/16/32/iterations:1\n"
+ "BM_string_memcpy/80/32/1/iterations:1\n"
+ "BM_string_memcpy/80/32/2/iterations:1\n"
+ "BM_string_memcpy/80/32/4/iterations:1\n"
+ "BM_string_memcpy/80/32/8/iterations:1\n"
+ "BM_string_memcpy/80/32/16/iterations:1\n"
+ "BM_string_memcpy/80/32/32/iterations:1\n"
+ "BM_string_memcpy/88/0/0/iterations:1\n"
+ "BM_string_memcpy/88/1/1/iterations:1\n"
+ "BM_string_memcpy/88/1/2/iterations:1\n"
+ "BM_string_memcpy/88/1/4/iterations:1\n"
+ "BM_string_memcpy/88/1/8/iterations:1\n"
+ "BM_string_memcpy/88/1/16/iterations:1\n"
+ "BM_string_memcpy/88/1/32/iterations:1\n"
+ "BM_string_memcpy/88/2/1/iterations:1\n"
+ "BM_string_memcpy/88/2/2/iterations:1\n"
+ "BM_string_memcpy/88/2/4/iterations:1\n"
+ "BM_string_memcpy/88/2/8/iterations:1\n"
+ "BM_string_memcpy/88/2/16/iterations:1\n"
+ "BM_string_memcpy/88/2/32/iterations:1\n"
+ "BM_string_memcpy/88/4/1/iterations:1\n"
+ "BM_string_memcpy/88/4/2/iterations:1\n"
+ "BM_string_memcpy/88/4/4/iterations:1\n"
+ "BM_string_memcpy/88/4/8/iterations:1\n"
+ "BM_string_memcpy/88/4/16/iterations:1\n"
+ "BM_string_memcpy/88/4/32/iterations:1\n"
+ "BM_string_memcpy/88/8/1/iterations:1\n"
+ "BM_string_memcpy/88/8/2/iterations:1\n"
+ "BM_string_memcpy/88/8/4/iterations:1\n"
+ "BM_string_memcpy/88/8/8/iterations:1\n"
+ "BM_string_memcpy/88/8/16/iterations:1\n"
+ "BM_string_memcpy/88/8/32/iterations:1\n"
+ "BM_string_memcpy/88/16/1/iterations:1\n"
+ "BM_string_memcpy/88/16/2/iterations:1\n"
+ "BM_string_memcpy/88/16/4/iterations:1\n"
+ "BM_string_memcpy/88/16/8/iterations:1\n"
+ "BM_string_memcpy/88/16/16/iterations:1\n"
+ "BM_string_memcpy/88/16/32/iterations:1\n"
+ "BM_string_memcpy/88/32/1/iterations:1\n"
+ "BM_string_memcpy/88/32/2/iterations:1\n"
+ "BM_string_memcpy/88/32/4/iterations:1\n"
+ "BM_string_memcpy/88/32/8/iterations:1\n"
+ "BM_string_memcpy/88/32/16/iterations:1\n"
+ "BM_string_memcpy/88/32/32/iterations:1\n"
+ "BM_string_memcpy/96/0/0/iterations:1\n"
+ "BM_string_memcpy/96/1/1/iterations:1\n"
+ "BM_string_memcpy/96/1/2/iterations:1\n"
+ "BM_string_memcpy/96/1/4/iterations:1\n"
+ "BM_string_memcpy/96/1/8/iterations:1\n"
+ "BM_string_memcpy/96/1/16/iterations:1\n"
+ "BM_string_memcpy/96/1/32/iterations:1\n"
+ "BM_string_memcpy/96/2/1/iterations:1\n"
+ "BM_string_memcpy/96/2/2/iterations:1\n"
+ "BM_string_memcpy/96/2/4/iterations:1\n"
+ "BM_string_memcpy/96/2/8/iterations:1\n"
+ "BM_string_memcpy/96/2/16/iterations:1\n"
+ "BM_string_memcpy/96/2/32/iterations:1\n"
+ "BM_string_memcpy/96/4/1/iterations:1\n"
+ "BM_string_memcpy/96/4/2/iterations:1\n"
+ "BM_string_memcpy/96/4/4/iterations:1\n"
+ "BM_string_memcpy/96/4/8/iterations:1\n"
+ "BM_string_memcpy/96/4/16/iterations:1\n"
+ "BM_string_memcpy/96/4/32/iterations:1\n"
+ "BM_string_memcpy/96/8/1/iterations:1\n"
+ "BM_string_memcpy/96/8/2/iterations:1\n"
+ "BM_string_memcpy/96/8/4/iterations:1\n"
+ "BM_string_memcpy/96/8/8/iterations:1\n"
+ "BM_string_memcpy/96/8/16/iterations:1\n"
+ "BM_string_memcpy/96/8/32/iterations:1\n"
+ "BM_string_memcpy/96/16/1/iterations:1\n"
+ "BM_string_memcpy/96/16/2/iterations:1\n"
+ "BM_string_memcpy/96/16/4/iterations:1\n"
+ "BM_string_memcpy/96/16/8/iterations:1\n"
+ "BM_string_memcpy/96/16/16/iterations:1\n"
+ "BM_string_memcpy/96/16/32/iterations:1\n"
+ "BM_string_memcpy/96/32/1/iterations:1\n"
+ "BM_string_memcpy/96/32/2/iterations:1\n"
+ "BM_string_memcpy/96/32/4/iterations:1\n"
+ "BM_string_memcpy/96/32/8/iterations:1\n"
+ "BM_string_memcpy/96/32/16/iterations:1\n"
+ "BM_string_memcpy/96/32/32/iterations:1\n"
+ "BM_string_memcpy/104/0/0/iterations:1\n"
+ "BM_string_memcpy/104/1/1/iterations:1\n"
+ "BM_string_memcpy/104/1/2/iterations:1\n"
+ "BM_string_memcpy/104/1/4/iterations:1\n"
+ "BM_string_memcpy/104/1/8/iterations:1\n"
+ "BM_string_memcpy/104/1/16/iterations:1\n"
+ "BM_string_memcpy/104/1/32/iterations:1\n"
+ "BM_string_memcpy/104/2/1/iterations:1\n"
+ "BM_string_memcpy/104/2/2/iterations:1\n"
+ "BM_string_memcpy/104/2/4/iterations:1\n"
+ "BM_string_memcpy/104/2/8/iterations:1\n"
+ "BM_string_memcpy/104/2/16/iterations:1\n"
+ "BM_string_memcpy/104/2/32/iterations:1\n"
+ "BM_string_memcpy/104/4/1/iterations:1\n"
+ "BM_string_memcpy/104/4/2/iterations:1\n"
+ "BM_string_memcpy/104/4/4/iterations:1\n"
+ "BM_string_memcpy/104/4/8/iterations:1\n"
+ "BM_string_memcpy/104/4/16/iterations:1\n"
+ "BM_string_memcpy/104/4/32/iterations:1\n"
+ "BM_string_memcpy/104/8/1/iterations:1\n"
+ "BM_string_memcpy/104/8/2/iterations:1\n"
+ "BM_string_memcpy/104/8/4/iterations:1\n"
+ "BM_string_memcpy/104/8/8/iterations:1\n"
+ "BM_string_memcpy/104/8/16/iterations:1\n"
+ "BM_string_memcpy/104/8/32/iterations:1\n"
+ "BM_string_memcpy/104/16/1/iterations:1\n"
+ "BM_string_memcpy/104/16/2/iterations:1\n"
+ "BM_string_memcpy/104/16/4/iterations:1\n"
+ "BM_string_memcpy/104/16/8/iterations:1\n"
+ "BM_string_memcpy/104/16/16/iterations:1\n"
+ "BM_string_memcpy/104/16/32/iterations:1\n"
+ "BM_string_memcpy/104/32/1/iterations:1\n"
+ "BM_string_memcpy/104/32/2/iterations:1\n"
+ "BM_string_memcpy/104/32/4/iterations:1\n"
+ "BM_string_memcpy/104/32/8/iterations:1\n"
+ "BM_string_memcpy/104/32/16/iterations:1\n"
+ "BM_string_memcpy/104/32/32/iterations:1\n"
+ "BM_string_memcpy/112/0/0/iterations:1\n"
+ "BM_string_memcpy/112/1/1/iterations:1\n"
+ "BM_string_memcpy/112/1/2/iterations:1\n"
+ "BM_string_memcpy/112/1/4/iterations:1\n"
+ "BM_string_memcpy/112/1/8/iterations:1\n"
+ "BM_string_memcpy/112/1/16/iterations:1\n"
+ "BM_string_memcpy/112/1/32/iterations:1\n"
+ "BM_string_memcpy/112/2/1/iterations:1\n"
+ "BM_string_memcpy/112/2/2/iterations:1\n"
+ "BM_string_memcpy/112/2/4/iterations:1\n"
+ "BM_string_memcpy/112/2/8/iterations:1\n"
+ "BM_string_memcpy/112/2/16/iterations:1\n"
+ "BM_string_memcpy/112/2/32/iterations:1\n"
+ "BM_string_memcpy/112/4/1/iterations:1\n"
+ "BM_string_memcpy/112/4/2/iterations:1\n"
+ "BM_string_memcpy/112/4/4/iterations:1\n"
+ "BM_string_memcpy/112/4/8/iterations:1\n"
+ "BM_string_memcpy/112/4/16/iterations:1\n"
+ "BM_string_memcpy/112/4/32/iterations:1\n"
+ "BM_string_memcpy/112/8/1/iterations:1\n"
+ "BM_string_memcpy/112/8/2/iterations:1\n"
+ "BM_string_memcpy/112/8/4/iterations:1\n"
+ "BM_string_memcpy/112/8/8/iterations:1\n"
+ "BM_string_memcpy/112/8/16/iterations:1\n"
+ "BM_string_memcpy/112/8/32/iterations:1\n"
+ "BM_string_memcpy/112/16/1/iterations:1\n"
+ "BM_string_memcpy/112/16/2/iterations:1\n"
+ "BM_string_memcpy/112/16/4/iterations:1\n"
+ "BM_string_memcpy/112/16/8/iterations:1\n"
+ "BM_string_memcpy/112/16/16/iterations:1\n"
+ "BM_string_memcpy/112/16/32/iterations:1\n"
+ "BM_string_memcpy/112/32/1/iterations:1\n"
+ "BM_string_memcpy/112/32/2/iterations:1\n"
+ "BM_string_memcpy/112/32/4/iterations:1\n"
+ "BM_string_memcpy/112/32/8/iterations:1\n"
+ "BM_string_memcpy/112/32/16/iterations:1\n"
+ "BM_string_memcpy/112/32/32/iterations:1\n"
+ "BM_string_memcpy/120/0/0/iterations:1\n"
+ "BM_string_memcpy/120/1/1/iterations:1\n"
+ "BM_string_memcpy/120/1/2/iterations:1\n"
+ "BM_string_memcpy/120/1/4/iterations:1\n"
+ "BM_string_memcpy/120/1/8/iterations:1\n"
+ "BM_string_memcpy/120/1/16/iterations:1\n"
+ "BM_string_memcpy/120/1/32/iterations:1\n"
+ "BM_string_memcpy/120/2/1/iterations:1\n"
+ "BM_string_memcpy/120/2/2/iterations:1\n"
+ "BM_string_memcpy/120/2/4/iterations:1\n"
+ "BM_string_memcpy/120/2/8/iterations:1\n"
+ "BM_string_memcpy/120/2/16/iterations:1\n"
+ "BM_string_memcpy/120/2/32/iterations:1\n"
+ "BM_string_memcpy/120/4/1/iterations:1\n"
+ "BM_string_memcpy/120/4/2/iterations:1\n"
+ "BM_string_memcpy/120/4/4/iterations:1\n"
+ "BM_string_memcpy/120/4/8/iterations:1\n"
+ "BM_string_memcpy/120/4/16/iterations:1\n"
+ "BM_string_memcpy/120/4/32/iterations:1\n"
+ "BM_string_memcpy/120/8/1/iterations:1\n"
+ "BM_string_memcpy/120/8/2/iterations:1\n"
+ "BM_string_memcpy/120/8/4/iterations:1\n"
+ "BM_string_memcpy/120/8/8/iterations:1\n"
+ "BM_string_memcpy/120/8/16/iterations:1\n"
+ "BM_string_memcpy/120/8/32/iterations:1\n"
+ "BM_string_memcpy/120/16/1/iterations:1\n"
+ "BM_string_memcpy/120/16/2/iterations:1\n"
+ "BM_string_memcpy/120/16/4/iterations:1\n"
+ "BM_string_memcpy/120/16/8/iterations:1\n"
+ "BM_string_memcpy/120/16/16/iterations:1\n"
+ "BM_string_memcpy/120/16/32/iterations:1\n"
+ "BM_string_memcpy/120/32/1/iterations:1\n"
+ "BM_string_memcpy/120/32/2/iterations:1\n"
+ "BM_string_memcpy/120/32/4/iterations:1\n"
+ "BM_string_memcpy/120/32/8/iterations:1\n"
+ "BM_string_memcpy/120/32/16/iterations:1\n"
+ "BM_string_memcpy/120/32/32/iterations:1\n"
+ "BM_string_memcpy/128/0/0/iterations:1\n"
+ "BM_string_memcpy/128/1/1/iterations:1\n"
+ "BM_string_memcpy/128/1/2/iterations:1\n"
+ "BM_string_memcpy/128/1/4/iterations:1\n"
+ "BM_string_memcpy/128/1/8/iterations:1\n"
+ "BM_string_memcpy/128/1/16/iterations:1\n"
+ "BM_string_memcpy/128/1/32/iterations:1\n"
+ "BM_string_memcpy/128/2/1/iterations:1\n"
+ "BM_string_memcpy/128/2/2/iterations:1\n"
+ "BM_string_memcpy/128/2/4/iterations:1\n"
+ "BM_string_memcpy/128/2/8/iterations:1\n"
+ "BM_string_memcpy/128/2/16/iterations:1\n"
+ "BM_string_memcpy/128/2/32/iterations:1\n"
+ "BM_string_memcpy/128/4/1/iterations:1\n"
+ "BM_string_memcpy/128/4/2/iterations:1\n"
+ "BM_string_memcpy/128/4/4/iterations:1\n"
+ "BM_string_memcpy/128/4/8/iterations:1\n"
+ "BM_string_memcpy/128/4/16/iterations:1\n"
+ "BM_string_memcpy/128/4/32/iterations:1\n"
+ "BM_string_memcpy/128/8/1/iterations:1\n"
+ "BM_string_memcpy/128/8/2/iterations:1\n"
+ "BM_string_memcpy/128/8/4/iterations:1\n"
+ "BM_string_memcpy/128/8/8/iterations:1\n"
+ "BM_string_memcpy/128/8/16/iterations:1\n"
+ "BM_string_memcpy/128/8/32/iterations:1\n"
+ "BM_string_memcpy/128/16/1/iterations:1\n"
+ "BM_string_memcpy/128/16/2/iterations:1\n"
+ "BM_string_memcpy/128/16/4/iterations:1\n"
+ "BM_string_memcpy/128/16/8/iterations:1\n"
+ "BM_string_memcpy/128/16/16/iterations:1\n"
+ "BM_string_memcpy/128/16/32/iterations:1\n"
+ "BM_string_memcpy/128/32/1/iterations:1\n"
+ "BM_string_memcpy/128/32/2/iterations:1\n"
+ "BM_string_memcpy/128/32/4/iterations:1\n"
+ "BM_string_memcpy/128/32/8/iterations:1\n"
+ "BM_string_memcpy/128/32/16/iterations:1\n"
+ "BM_string_memcpy/128/32/32/iterations:1\n"
+ "BM_string_memcpy/136/0/0/iterations:1\n"
+ "BM_string_memcpy/136/1/1/iterations:1\n"
+ "BM_string_memcpy/136/1/2/iterations:1\n"
+ "BM_string_memcpy/136/1/4/iterations:1\n"
+ "BM_string_memcpy/136/1/8/iterations:1\n"
+ "BM_string_memcpy/136/1/16/iterations:1\n"
+ "BM_string_memcpy/136/1/32/iterations:1\n"
+ "BM_string_memcpy/136/2/1/iterations:1\n"
+ "BM_string_memcpy/136/2/2/iterations:1\n"
+ "BM_string_memcpy/136/2/4/iterations:1\n"
+ "BM_string_memcpy/136/2/8/iterations:1\n"
+ "BM_string_memcpy/136/2/16/iterations:1\n"
+ "BM_string_memcpy/136/2/32/iterations:1\n"
+ "BM_string_memcpy/136/4/1/iterations:1\n"
+ "BM_string_memcpy/136/4/2/iterations:1\n"
+ "BM_string_memcpy/136/4/4/iterations:1\n"
+ "BM_string_memcpy/136/4/8/iterations:1\n"
+ "BM_string_memcpy/136/4/16/iterations:1\n"
+ "BM_string_memcpy/136/4/32/iterations:1\n"
+ "BM_string_memcpy/136/8/1/iterations:1\n"
+ "BM_string_memcpy/136/8/2/iterations:1\n"
+ "BM_string_memcpy/136/8/4/iterations:1\n"
+ "BM_string_memcpy/136/8/8/iterations:1\n"
+ "BM_string_memcpy/136/8/16/iterations:1\n"
+ "BM_string_memcpy/136/8/32/iterations:1\n"
+ "BM_string_memcpy/136/16/1/iterations:1\n"
+ "BM_string_memcpy/136/16/2/iterations:1\n"
+ "BM_string_memcpy/136/16/4/iterations:1\n"
+ "BM_string_memcpy/136/16/8/iterations:1\n"
+ "BM_string_memcpy/136/16/16/iterations:1\n"
+ "BM_string_memcpy/136/16/32/iterations:1\n"
+ "BM_string_memcpy/136/32/1/iterations:1\n"
+ "BM_string_memcpy/136/32/2/iterations:1\n"
+ "BM_string_memcpy/136/32/4/iterations:1\n"
+ "BM_string_memcpy/136/32/8/iterations:1\n"
+ "BM_string_memcpy/136/32/16/iterations:1\n"
+ "BM_string_memcpy/136/32/32/iterations:1\n"
+ "BM_string_memcpy/144/0/0/iterations:1\n"
+ "BM_string_memcpy/144/1/1/iterations:1\n"
+ "BM_string_memcpy/144/1/2/iterations:1\n"
+ "BM_string_memcpy/144/1/4/iterations:1\n"
+ "BM_string_memcpy/144/1/8/iterations:1\n"
+ "BM_string_memcpy/144/1/16/iterations:1\n"
+ "BM_string_memcpy/144/1/32/iterations:1\n"
+ "BM_string_memcpy/144/2/1/iterations:1\n"
+ "BM_string_memcpy/144/2/2/iterations:1\n"
+ "BM_string_memcpy/144/2/4/iterations:1\n"
+ "BM_string_memcpy/144/2/8/iterations:1\n"
+ "BM_string_memcpy/144/2/16/iterations:1\n"
+ "BM_string_memcpy/144/2/32/iterations:1\n"
+ "BM_string_memcpy/144/4/1/iterations:1\n"
+ "BM_string_memcpy/144/4/2/iterations:1\n"
+ "BM_string_memcpy/144/4/4/iterations:1\n"
+ "BM_string_memcpy/144/4/8/iterations:1\n"
+ "BM_string_memcpy/144/4/16/iterations:1\n"
+ "BM_string_memcpy/144/4/32/iterations:1\n"
+ "BM_string_memcpy/144/8/1/iterations:1\n"
+ "BM_string_memcpy/144/8/2/iterations:1\n"
+ "BM_string_memcpy/144/8/4/iterations:1\n"
+ "BM_string_memcpy/144/8/8/iterations:1\n"
+ "BM_string_memcpy/144/8/16/iterations:1\n"
+ "BM_string_memcpy/144/8/32/iterations:1\n"
+ "BM_string_memcpy/144/16/1/iterations:1\n"
+ "BM_string_memcpy/144/16/2/iterations:1\n"
+ "BM_string_memcpy/144/16/4/iterations:1\n"
+ "BM_string_memcpy/144/16/8/iterations:1\n"
+ "BM_string_memcpy/144/16/16/iterations:1\n"
+ "BM_string_memcpy/144/16/32/iterations:1\n"
+ "BM_string_memcpy/144/32/1/iterations:1\n"
+ "BM_string_memcpy/144/32/2/iterations:1\n"
+ "BM_string_memcpy/144/32/4/iterations:1\n"
+ "BM_string_memcpy/144/32/8/iterations:1\n"
+ "BM_string_memcpy/144/32/16/iterations:1\n"
+ "BM_string_memcpy/144/32/32/iterations:1\n"
+ "BM_string_memcpy/160/0/0/iterations:1\n"
+ "BM_string_memcpy/160/1/1/iterations:1\n"
+ "BM_string_memcpy/160/1/2/iterations:1\n"
+ "BM_string_memcpy/160/1/4/iterations:1\n"
+ "BM_string_memcpy/160/1/8/iterations:1\n"
+ "BM_string_memcpy/160/1/16/iterations:1\n"
+ "BM_string_memcpy/160/1/32/iterations:1\n"
+ "BM_string_memcpy/160/2/1/iterations:1\n"
+ "BM_string_memcpy/160/2/2/iterations:1\n"
+ "BM_string_memcpy/160/2/4/iterations:1\n"
+ "BM_string_memcpy/160/2/8/iterations:1\n"
+ "BM_string_memcpy/160/2/16/iterations:1\n"
+ "BM_string_memcpy/160/2/32/iterations:1\n"
+ "BM_string_memcpy/160/4/1/iterations:1\n"
+ "BM_string_memcpy/160/4/2/iterations:1\n"
+ "BM_string_memcpy/160/4/4/iterations:1\n"
+ "BM_string_memcpy/160/4/8/iterations:1\n"
+ "BM_string_memcpy/160/4/16/iterations:1\n"
+ "BM_string_memcpy/160/4/32/iterations:1\n"
+ "BM_string_memcpy/160/8/1/iterations:1\n"
+ "BM_string_memcpy/160/8/2/iterations:1\n"
+ "BM_string_memcpy/160/8/4/iterations:1\n"
+ "BM_string_memcpy/160/8/8/iterations:1\n"
+ "BM_string_memcpy/160/8/16/iterations:1\n"
+ "BM_string_memcpy/160/8/32/iterations:1\n"
+ "BM_string_memcpy/160/16/1/iterations:1\n"
+ "BM_string_memcpy/160/16/2/iterations:1\n"
+ "BM_string_memcpy/160/16/4/iterations:1\n"
+ "BM_string_memcpy/160/16/8/iterations:1\n"
+ "BM_string_memcpy/160/16/16/iterations:1\n"
+ "BM_string_memcpy/160/16/32/iterations:1\n"
+ "BM_string_memcpy/160/32/1/iterations:1\n"
+ "BM_string_memcpy/160/32/2/iterations:1\n"
+ "BM_string_memcpy/160/32/4/iterations:1\n"
+ "BM_string_memcpy/160/32/8/iterations:1\n"
+ "BM_string_memcpy/160/32/16/iterations:1\n"
+ "BM_string_memcpy/160/32/32/iterations:1\n"
+ "BM_string_memcpy/176/0/0/iterations:1\n"
+ "BM_string_memcpy/176/1/1/iterations:1\n"
+ "BM_string_memcpy/176/1/2/iterations:1\n"
+ "BM_string_memcpy/176/1/4/iterations:1\n"
+ "BM_string_memcpy/176/1/8/iterations:1\n"
+ "BM_string_memcpy/176/1/16/iterations:1\n"
+ "BM_string_memcpy/176/1/32/iterations:1\n"
+ "BM_string_memcpy/176/2/1/iterations:1\n"
+ "BM_string_memcpy/176/2/2/iterations:1\n"
+ "BM_string_memcpy/176/2/4/iterations:1\n"
+ "BM_string_memcpy/176/2/8/iterations:1\n"
+ "BM_string_memcpy/176/2/16/iterations:1\n"
+ "BM_string_memcpy/176/2/32/iterations:1\n"
+ "BM_string_memcpy/176/4/1/iterations:1\n"
+ "BM_string_memcpy/176/4/2/iterations:1\n"
+ "BM_string_memcpy/176/4/4/iterations:1\n"
+ "BM_string_memcpy/176/4/8/iterations:1\n"
+ "BM_string_memcpy/176/4/16/iterations:1\n"
+ "BM_string_memcpy/176/4/32/iterations:1\n"
+ "BM_string_memcpy/176/8/1/iterations:1\n"
+ "BM_string_memcpy/176/8/2/iterations:1\n"
+ "BM_string_memcpy/176/8/4/iterations:1\n"
+ "BM_string_memcpy/176/8/8/iterations:1\n"
+ "BM_string_memcpy/176/8/16/iterations:1\n"
+ "BM_string_memcpy/176/8/32/iterations:1\n"
+ "BM_string_memcpy/176/16/1/iterations:1\n"
+ "BM_string_memcpy/176/16/2/iterations:1\n"
+ "BM_string_memcpy/176/16/4/iterations:1\n"
+ "BM_string_memcpy/176/16/8/iterations:1\n"
+ "BM_string_memcpy/176/16/16/iterations:1\n"
+ "BM_string_memcpy/176/16/32/iterations:1\n"
+ "BM_string_memcpy/176/32/1/iterations:1\n"
+ "BM_string_memcpy/176/32/2/iterations:1\n"
+ "BM_string_memcpy/176/32/4/iterations:1\n"
+ "BM_string_memcpy/176/32/8/iterations:1\n"
+ "BM_string_memcpy/176/32/16/iterations:1\n"
+ "BM_string_memcpy/176/32/32/iterations:1\n"
+ "BM_string_memcpy/192/0/0/iterations:1\n"
+ "BM_string_memcpy/192/1/1/iterations:1\n"
+ "BM_string_memcpy/192/1/2/iterations:1\n"
+ "BM_string_memcpy/192/1/4/iterations:1\n"
+ "BM_string_memcpy/192/1/8/iterations:1\n"
+ "BM_string_memcpy/192/1/16/iterations:1\n"
+ "BM_string_memcpy/192/1/32/iterations:1\n"
+ "BM_string_memcpy/192/2/1/iterations:1\n"
+ "BM_string_memcpy/192/2/2/iterations:1\n"
+ "BM_string_memcpy/192/2/4/iterations:1\n"
+ "BM_string_memcpy/192/2/8/iterations:1\n"
+ "BM_string_memcpy/192/2/16/iterations:1\n"
+ "BM_string_memcpy/192/2/32/iterations:1\n"
+ "BM_string_memcpy/192/4/1/iterations:1\n"
+ "BM_string_memcpy/192/4/2/iterations:1\n"
+ "BM_string_memcpy/192/4/4/iterations:1\n"
+ "BM_string_memcpy/192/4/8/iterations:1\n"
+ "BM_string_memcpy/192/4/16/iterations:1\n"
+ "BM_string_memcpy/192/4/32/iterations:1\n"
+ "BM_string_memcpy/192/8/1/iterations:1\n"
+ "BM_string_memcpy/192/8/2/iterations:1\n"
+ "BM_string_memcpy/192/8/4/iterations:1\n"
+ "BM_string_memcpy/192/8/8/iterations:1\n"
+ "BM_string_memcpy/192/8/16/iterations:1\n"
+ "BM_string_memcpy/192/8/32/iterations:1\n"
+ "BM_string_memcpy/192/16/1/iterations:1\n"
+ "BM_string_memcpy/192/16/2/iterations:1\n"
+ "BM_string_memcpy/192/16/4/iterations:1\n"
+ "BM_string_memcpy/192/16/8/iterations:1\n"
+ "BM_string_memcpy/192/16/16/iterations:1\n"
+ "BM_string_memcpy/192/16/32/iterations:1\n"
+ "BM_string_memcpy/192/32/1/iterations:1\n"
+ "BM_string_memcpy/192/32/2/iterations:1\n"
+ "BM_string_memcpy/192/32/4/iterations:1\n"
+ "BM_string_memcpy/192/32/8/iterations:1\n"
+ "BM_string_memcpy/192/32/16/iterations:1\n"
+ "BM_string_memcpy/192/32/32/iterations:1\n"
+ "BM_string_memcpy/208/0/0/iterations:1\n"
+ "BM_string_memcpy/208/1/1/iterations:1\n"
+ "BM_string_memcpy/208/1/2/iterations:1\n"
+ "BM_string_memcpy/208/1/4/iterations:1\n"
+ "BM_string_memcpy/208/1/8/iterations:1\n"
+ "BM_string_memcpy/208/1/16/iterations:1\n"
+ "BM_string_memcpy/208/1/32/iterations:1\n"
+ "BM_string_memcpy/208/2/1/iterations:1\n"
+ "BM_string_memcpy/208/2/2/iterations:1\n"
+ "BM_string_memcpy/208/2/4/iterations:1\n"
+ "BM_string_memcpy/208/2/8/iterations:1\n"
+ "BM_string_memcpy/208/2/16/iterations:1\n"
+ "BM_string_memcpy/208/2/32/iterations:1\n"
+ "BM_string_memcpy/208/4/1/iterations:1\n"
+ "BM_string_memcpy/208/4/2/iterations:1\n"
+ "BM_string_memcpy/208/4/4/iterations:1\n"
+ "BM_string_memcpy/208/4/8/iterations:1\n"
+ "BM_string_memcpy/208/4/16/iterations:1\n"
+ "BM_string_memcpy/208/4/32/iterations:1\n"
+ "BM_string_memcpy/208/8/1/iterations:1\n"
+ "BM_string_memcpy/208/8/2/iterations:1\n"
+ "BM_string_memcpy/208/8/4/iterations:1\n"
+ "BM_string_memcpy/208/8/8/iterations:1\n"
+ "BM_string_memcpy/208/8/16/iterations:1\n"
+ "BM_string_memcpy/208/8/32/iterations:1\n"
+ "BM_string_memcpy/208/16/1/iterations:1\n"
+ "BM_string_memcpy/208/16/2/iterations:1\n"
+ "BM_string_memcpy/208/16/4/iterations:1\n"
+ "BM_string_memcpy/208/16/8/iterations:1\n"
+ "BM_string_memcpy/208/16/16/iterations:1\n"
+ "BM_string_memcpy/208/16/32/iterations:1\n"
+ "BM_string_memcpy/208/32/1/iterations:1\n"
+ "BM_string_memcpy/208/32/2/iterations:1\n"
+ "BM_string_memcpy/208/32/4/iterations:1\n"
+ "BM_string_memcpy/208/32/8/iterations:1\n"
+ "BM_string_memcpy/208/32/16/iterations:1\n"
+ "BM_string_memcpy/208/32/32/iterations:1\n"
+ "BM_string_memcpy/224/0/0/iterations:1\n"
+ "BM_string_memcpy/224/1/1/iterations:1\n"
+ "BM_string_memcpy/224/1/2/iterations:1\n"
+ "BM_string_memcpy/224/1/4/iterations:1\n"
+ "BM_string_memcpy/224/1/8/iterations:1\n"
+ "BM_string_memcpy/224/1/16/iterations:1\n"
+ "BM_string_memcpy/224/1/32/iterations:1\n"
+ "BM_string_memcpy/224/2/1/iterations:1\n"
+ "BM_string_memcpy/224/2/2/iterations:1\n"
+ "BM_string_memcpy/224/2/4/iterations:1\n"
+ "BM_string_memcpy/224/2/8/iterations:1\n"
+ "BM_string_memcpy/224/2/16/iterations:1\n"
+ "BM_string_memcpy/224/2/32/iterations:1\n"
+ "BM_string_memcpy/224/4/1/iterations:1\n"
+ "BM_string_memcpy/224/4/2/iterations:1\n"
+ "BM_string_memcpy/224/4/4/iterations:1\n"
+ "BM_string_memcpy/224/4/8/iterations:1\n"
+ "BM_string_memcpy/224/4/16/iterations:1\n"
+ "BM_string_memcpy/224/4/32/iterations:1\n"
+ "BM_string_memcpy/224/8/1/iterations:1\n"
+ "BM_string_memcpy/224/8/2/iterations:1\n"
+ "BM_string_memcpy/224/8/4/iterations:1\n"
+ "BM_string_memcpy/224/8/8/iterations:1\n"
+ "BM_string_memcpy/224/8/16/iterations:1\n"
+ "BM_string_memcpy/224/8/32/iterations:1\n"
+ "BM_string_memcpy/224/16/1/iterations:1\n"
+ "BM_string_memcpy/224/16/2/iterations:1\n"
+ "BM_string_memcpy/224/16/4/iterations:1\n"
+ "BM_string_memcpy/224/16/8/iterations:1\n"
+ "BM_string_memcpy/224/16/16/iterations:1\n"
+ "BM_string_memcpy/224/16/32/iterations:1\n"
+ "BM_string_memcpy/224/32/1/iterations:1\n"
+ "BM_string_memcpy/224/32/2/iterations:1\n"
+ "BM_string_memcpy/224/32/4/iterations:1\n"
+ "BM_string_memcpy/224/32/8/iterations:1\n"
+ "BM_string_memcpy/224/32/16/iterations:1\n"
+ "BM_string_memcpy/224/32/32/iterations:1\n"
+ "BM_string_memcpy/240/0/0/iterations:1\n"
+ "BM_string_memcpy/240/1/1/iterations:1\n"
+ "BM_string_memcpy/240/1/2/iterations:1\n"
+ "BM_string_memcpy/240/1/4/iterations:1\n"
+ "BM_string_memcpy/240/1/8/iterations:1\n"
+ "BM_string_memcpy/240/1/16/iterations:1\n"
+ "BM_string_memcpy/240/1/32/iterations:1\n"
+ "BM_string_memcpy/240/2/1/iterations:1\n"
+ "BM_string_memcpy/240/2/2/iterations:1\n"
+ "BM_string_memcpy/240/2/4/iterations:1\n"
+ "BM_string_memcpy/240/2/8/iterations:1\n"
+ "BM_string_memcpy/240/2/16/iterations:1\n"
+ "BM_string_memcpy/240/2/32/iterations:1\n"
+ "BM_string_memcpy/240/4/1/iterations:1\n"
+ "BM_string_memcpy/240/4/2/iterations:1\n"
+ "BM_string_memcpy/240/4/4/iterations:1\n"
+ "BM_string_memcpy/240/4/8/iterations:1\n"
+ "BM_string_memcpy/240/4/16/iterations:1\n"
+ "BM_string_memcpy/240/4/32/iterations:1\n"
+ "BM_string_memcpy/240/8/1/iterations:1\n"
+ "BM_string_memcpy/240/8/2/iterations:1\n"
+ "BM_string_memcpy/240/8/4/iterations:1\n"
+ "BM_string_memcpy/240/8/8/iterations:1\n"
+ "BM_string_memcpy/240/8/16/iterations:1\n"
+ "BM_string_memcpy/240/8/32/iterations:1\n"
+ "BM_string_memcpy/240/16/1/iterations:1\n"
+ "BM_string_memcpy/240/16/2/iterations:1\n"
+ "BM_string_memcpy/240/16/4/iterations:1\n"
+ "BM_string_memcpy/240/16/8/iterations:1\n"
+ "BM_string_memcpy/240/16/16/iterations:1\n"
+ "BM_string_memcpy/240/16/32/iterations:1\n"
+ "BM_string_memcpy/240/32/1/iterations:1\n"
+ "BM_string_memcpy/240/32/2/iterations:1\n"
+ "BM_string_memcpy/240/32/4/iterations:1\n"
+ "BM_string_memcpy/240/32/8/iterations:1\n"
+ "BM_string_memcpy/240/32/16/iterations:1\n"
+ "BM_string_memcpy/240/32/32/iterations:1\n"
+ "BM_string_memcpy/256/0/0/iterations:1\n"
+ "BM_string_memcpy/256/1/1/iterations:1\n"
+ "BM_string_memcpy/256/1/2/iterations:1\n"
+ "BM_string_memcpy/256/1/4/iterations:1\n"
+ "BM_string_memcpy/256/1/8/iterations:1\n"
+ "BM_string_memcpy/256/1/16/iterations:1\n"
+ "BM_string_memcpy/256/1/32/iterations:1\n"
+ "BM_string_memcpy/256/2/1/iterations:1\n"
+ "BM_string_memcpy/256/2/2/iterations:1\n"
+ "BM_string_memcpy/256/2/4/iterations:1\n"
+ "BM_string_memcpy/256/2/8/iterations:1\n"
+ "BM_string_memcpy/256/2/16/iterations:1\n"
+ "BM_string_memcpy/256/2/32/iterations:1\n"
+ "BM_string_memcpy/256/4/1/iterations:1\n"
+ "BM_string_memcpy/256/4/2/iterations:1\n"
+ "BM_string_memcpy/256/4/4/iterations:1\n"
+ "BM_string_memcpy/256/4/8/iterations:1\n"
+ "BM_string_memcpy/256/4/16/iterations:1\n"
+ "BM_string_memcpy/256/4/32/iterations:1\n"
+ "BM_string_memcpy/256/8/1/iterations:1\n"
+ "BM_string_memcpy/256/8/2/iterations:1\n"
+ "BM_string_memcpy/256/8/4/iterations:1\n"
+ "BM_string_memcpy/256/8/8/iterations:1\n"
+ "BM_string_memcpy/256/8/16/iterations:1\n"
+ "BM_string_memcpy/256/8/32/iterations:1\n"
+ "BM_string_memcpy/256/16/1/iterations:1\n"
+ "BM_string_memcpy/256/16/2/iterations:1\n"
+ "BM_string_memcpy/256/16/4/iterations:1\n"
+ "BM_string_memcpy/256/16/8/iterations:1\n"
+ "BM_string_memcpy/256/16/16/iterations:1\n"
+ "BM_string_memcpy/256/16/32/iterations:1\n"
+ "BM_string_memcpy/256/32/1/iterations:1\n"
+ "BM_string_memcpy/256/32/2/iterations:1\n"
+ "BM_string_memcpy/256/32/4/iterations:1\n"
+ "BM_string_memcpy/256/32/8/iterations:1\n"
+ "BM_string_memcpy/256/32/16/iterations:1\n"
+ "BM_string_memcpy/256/32/32/iterations:1\n"
+ "BM_string_memcpy/512/0/0/iterations:1\n"
+ "BM_string_memcpy/512/1/1/iterations:1\n"
+ "BM_string_memcpy/512/1/2/iterations:1\n"
+ "BM_string_memcpy/512/1/4/iterations:1\n"
+ "BM_string_memcpy/512/1/8/iterations:1\n"
+ "BM_string_memcpy/512/1/16/iterations:1\n"
+ "BM_string_memcpy/512/1/32/iterations:1\n"
+ "BM_string_memcpy/512/2/1/iterations:1\n"
+ "BM_string_memcpy/512/2/2/iterations:1\n"
+ "BM_string_memcpy/512/2/4/iterations:1\n"
+ "BM_string_memcpy/512/2/8/iterations:1\n"
+ "BM_string_memcpy/512/2/16/iterations:1\n"
+ "BM_string_memcpy/512/2/32/iterations:1\n"
+ "BM_string_memcpy/512/4/1/iterations:1\n"
+ "BM_string_memcpy/512/4/2/iterations:1\n"
+ "BM_string_memcpy/512/4/4/iterations:1\n"
+ "BM_string_memcpy/512/4/8/iterations:1\n"
+ "BM_string_memcpy/512/4/16/iterations:1\n"
+ "BM_string_memcpy/512/4/32/iterations:1\n"
+ "BM_string_memcpy/512/8/1/iterations:1\n"
+ "BM_string_memcpy/512/8/2/iterations:1\n"
+ "BM_string_memcpy/512/8/4/iterations:1\n"
+ "BM_string_memcpy/512/8/8/iterations:1\n"
+ "BM_string_memcpy/512/8/16/iterations:1\n"
+ "BM_string_memcpy/512/8/32/iterations:1\n"
+ "BM_string_memcpy/512/16/1/iterations:1\n"
+ "BM_string_memcpy/512/16/2/iterations:1\n"
+ "BM_string_memcpy/512/16/4/iterations:1\n"
+ "BM_string_memcpy/512/16/8/iterations:1\n"
+ "BM_string_memcpy/512/16/16/iterations:1\n"
+ "BM_string_memcpy/512/16/32/iterations:1\n"
+ "BM_string_memcpy/512/32/1/iterations:1\n"
+ "BM_string_memcpy/512/32/2/iterations:1\n"
+ "BM_string_memcpy/512/32/4/iterations:1\n"
+ "BM_string_memcpy/512/32/8/iterations:1\n"
+ "BM_string_memcpy/512/32/16/iterations:1\n"
+ "BM_string_memcpy/512/32/32/iterations:1\n"
+ "BM_string_memcpy/1024/0/0/iterations:1\n"
+ "BM_string_memcpy/1024/1/1/iterations:1\n"
+ "BM_string_memcpy/1024/1/2/iterations:1\n"
+ "BM_string_memcpy/1024/1/4/iterations:1\n"
+ "BM_string_memcpy/1024/1/8/iterations:1\n"
+ "BM_string_memcpy/1024/1/16/iterations:1\n"
+ "BM_string_memcpy/1024/1/32/iterations:1\n"
+ "BM_string_memcpy/1024/2/1/iterations:1\n"
+ "BM_string_memcpy/1024/2/2/iterations:1\n"
+ "BM_string_memcpy/1024/2/4/iterations:1\n"
+ "BM_string_memcpy/1024/2/8/iterations:1\n"
+ "BM_string_memcpy/1024/2/16/iterations:1\n"
+ "BM_string_memcpy/1024/2/32/iterations:1\n"
+ "BM_string_memcpy/1024/4/1/iterations:1\n"
+ "BM_string_memcpy/1024/4/2/iterations:1\n"
+ "BM_string_memcpy/1024/4/4/iterations:1\n"
+ "BM_string_memcpy/1024/4/8/iterations:1\n"
+ "BM_string_memcpy/1024/4/16/iterations:1\n"
+ "BM_string_memcpy/1024/4/32/iterations:1\n"
+ "BM_string_memcpy/1024/8/1/iterations:1\n"
+ "BM_string_memcpy/1024/8/2/iterations:1\n"
+ "BM_string_memcpy/1024/8/4/iterations:1\n"
+ "BM_string_memcpy/1024/8/8/iterations:1\n"
+ "BM_string_memcpy/1024/8/16/iterations:1\n"
+ "BM_string_memcpy/1024/8/32/iterations:1\n"
+ "BM_string_memcpy/1024/16/1/iterations:1\n"
+ "BM_string_memcpy/1024/16/2/iterations:1\n"
+ "BM_string_memcpy/1024/16/4/iterations:1\n"
+ "BM_string_memcpy/1024/16/8/iterations:1\n"
+ "BM_string_memcpy/1024/16/16/iterations:1\n"
+ "BM_string_memcpy/1024/16/32/iterations:1\n"
+ "BM_string_memcpy/1024/32/1/iterations:1\n"
+ "BM_string_memcpy/1024/32/2/iterations:1\n"
+ "BM_string_memcpy/1024/32/4/iterations:1\n"
+ "BM_string_memcpy/1024/32/8/iterations:1\n"
+ "BM_string_memcpy/1024/32/16/iterations:1\n"
+ "BM_string_memcpy/1024/32/32/iterations:1\n"
+ "BM_string_memcpy/8192/0/0/iterations:1\n"
+ "BM_string_memcpy/8192/1/1/iterations:1\n"
+ "BM_string_memcpy/8192/1/2/iterations:1\n"
+ "BM_string_memcpy/8192/1/4/iterations:1\n"
+ "BM_string_memcpy/8192/1/8/iterations:1\n"
+ "BM_string_memcpy/8192/1/16/iterations:1\n"
+ "BM_string_memcpy/8192/1/32/iterations:1\n"
+ "BM_string_memcpy/8192/2/1/iterations:1\n"
+ "BM_string_memcpy/8192/2/2/iterations:1\n"
+ "BM_string_memcpy/8192/2/4/iterations:1\n"
+ "BM_string_memcpy/8192/2/8/iterations:1\n"
+ "BM_string_memcpy/8192/2/16/iterations:1\n"
+ "BM_string_memcpy/8192/2/32/iterations:1\n"
+ "BM_string_memcpy/8192/4/1/iterations:1\n"
+ "BM_string_memcpy/8192/4/2/iterations:1\n"
+ "BM_string_memcpy/8192/4/4/iterations:1\n"
+ "BM_string_memcpy/8192/4/8/iterations:1\n"
+ "BM_string_memcpy/8192/4/16/iterations:1\n"
+ "BM_string_memcpy/8192/4/32/iterations:1\n"
+ "BM_string_memcpy/8192/8/1/iterations:1\n"
+ "BM_string_memcpy/8192/8/2/iterations:1\n"
+ "BM_string_memcpy/8192/8/4/iterations:1\n"
+ "BM_string_memcpy/8192/8/8/iterations:1\n"
+ "BM_string_memcpy/8192/8/16/iterations:1\n"
+ "BM_string_memcpy/8192/8/32/iterations:1\n"
+ "BM_string_memcpy/8192/16/1/iterations:1\n"
+ "BM_string_memcpy/8192/16/2/iterations:1\n"
+ "BM_string_memcpy/8192/16/4/iterations:1\n"
+ "BM_string_memcpy/8192/16/8/iterations:1\n"
+ "BM_string_memcpy/8192/16/16/iterations:1\n"
+ "BM_string_memcpy/8192/16/32/iterations:1\n"
+ "BM_string_memcpy/8192/32/1/iterations:1\n"
+ "BM_string_memcpy/8192/32/2/iterations:1\n"
+ "BM_string_memcpy/8192/32/4/iterations:1\n"
+ "BM_string_memcpy/8192/32/8/iterations:1\n"
+ "BM_string_memcpy/8192/32/16/iterations:1\n"
+ "BM_string_memcpy/8192/32/32/iterations:1\n"
+ "BM_string_memcpy/16384/0/0/iterations:1\n"
+ "BM_string_memcpy/16384/1/1/iterations:1\n"
+ "BM_string_memcpy/16384/1/2/iterations:1\n"
+ "BM_string_memcpy/16384/1/4/iterations:1\n"
+ "BM_string_memcpy/16384/1/8/iterations:1\n"
+ "BM_string_memcpy/16384/1/16/iterations:1\n"
+ "BM_string_memcpy/16384/1/32/iterations:1\n"
+ "BM_string_memcpy/16384/2/1/iterations:1\n"
+ "BM_string_memcpy/16384/2/2/iterations:1\n"
+ "BM_string_memcpy/16384/2/4/iterations:1\n"
+ "BM_string_memcpy/16384/2/8/iterations:1\n"
+ "BM_string_memcpy/16384/2/16/iterations:1\n"
+ "BM_string_memcpy/16384/2/32/iterations:1\n"
+ "BM_string_memcpy/16384/4/1/iterations:1\n"
+ "BM_string_memcpy/16384/4/2/iterations:1\n"
+ "BM_string_memcpy/16384/4/4/iterations:1\n"
+ "BM_string_memcpy/16384/4/8/iterations:1\n"
+ "BM_string_memcpy/16384/4/16/iterations:1\n"
+ "BM_string_memcpy/16384/4/32/iterations:1\n"
+ "BM_string_memcpy/16384/8/1/iterations:1\n"
+ "BM_string_memcpy/16384/8/2/iterations:1\n"
+ "BM_string_memcpy/16384/8/4/iterations:1\n"
+ "BM_string_memcpy/16384/8/8/iterations:1\n"
+ "BM_string_memcpy/16384/8/16/iterations:1\n"
+ "BM_string_memcpy/16384/8/32/iterations:1\n"
+ "BM_string_memcpy/16384/16/1/iterations:1\n"
+ "BM_string_memcpy/16384/16/2/iterations:1\n"
+ "BM_string_memcpy/16384/16/4/iterations:1\n"
+ "BM_string_memcpy/16384/16/8/iterations:1\n"
+ "BM_string_memcpy/16384/16/16/iterations:1\n"
+ "BM_string_memcpy/16384/16/32/iterations:1\n"
+ "BM_string_memcpy/16384/32/1/iterations:1\n"
+ "BM_string_memcpy/16384/32/2/iterations:1\n"
+ "BM_string_memcpy/16384/32/4/iterations:1\n"
+ "BM_string_memcpy/16384/32/8/iterations:1\n"
+ "BM_string_memcpy/16384/32/16/iterations:1\n"
+ "BM_string_memcpy/16384/32/32/iterations:1\n"
+ "BM_string_memcpy/32768/0/0/iterations:1\n"
+ "BM_string_memcpy/32768/1/1/iterations:1\n"
+ "BM_string_memcpy/32768/1/2/iterations:1\n"
+ "BM_string_memcpy/32768/1/4/iterations:1\n"
+ "BM_string_memcpy/32768/1/8/iterations:1\n"
+ "BM_string_memcpy/32768/1/16/iterations:1\n"
+ "BM_string_memcpy/32768/1/32/iterations:1\n"
+ "BM_string_memcpy/32768/2/1/iterations:1\n"
+ "BM_string_memcpy/32768/2/2/iterations:1\n"
+ "BM_string_memcpy/32768/2/4/iterations:1\n"
+ "BM_string_memcpy/32768/2/8/iterations:1\n"
+ "BM_string_memcpy/32768/2/16/iterations:1\n"
+ "BM_string_memcpy/32768/2/32/iterations:1\n"
+ "BM_string_memcpy/32768/4/1/iterations:1\n"
+ "BM_string_memcpy/32768/4/2/iterations:1\n"
+ "BM_string_memcpy/32768/4/4/iterations:1\n"
+ "BM_string_memcpy/32768/4/8/iterations:1\n"
+ "BM_string_memcpy/32768/4/16/iterations:1\n"
+ "BM_string_memcpy/32768/4/32/iterations:1\n"
+ "BM_string_memcpy/32768/8/1/iterations:1\n"
+ "BM_string_memcpy/32768/8/2/iterations:1\n"
+ "BM_string_memcpy/32768/8/4/iterations:1\n"
+ "BM_string_memcpy/32768/8/8/iterations:1\n"
+ "BM_string_memcpy/32768/8/16/iterations:1\n"
+ "BM_string_memcpy/32768/8/32/iterations:1\n"
+ "BM_string_memcpy/32768/16/1/iterations:1\n"
+ "BM_string_memcpy/32768/16/2/iterations:1\n"
+ "BM_string_memcpy/32768/16/4/iterations:1\n"
+ "BM_string_memcpy/32768/16/8/iterations:1\n"
+ "BM_string_memcpy/32768/16/16/iterations:1\n"
+ "BM_string_memcpy/32768/16/32/iterations:1\n"
+ "BM_string_memcpy/32768/32/1/iterations:1\n"
+ "BM_string_memcpy/32768/32/2/iterations:1\n"
+ "BM_string_memcpy/32768/32/4/iterations:1\n"
+ "BM_string_memcpy/32768/32/8/iterations:1\n"
+ "BM_string_memcpy/32768/32/16/iterations:1\n"
+ "BM_string_memcpy/32768/32/32/iterations:1\n"
+ "BM_string_memcpy/65536/0/0/iterations:1\n"
+ "BM_string_memcpy/65536/1/1/iterations:1\n"
+ "BM_string_memcpy/65536/1/2/iterations:1\n"
+ "BM_string_memcpy/65536/1/4/iterations:1\n"
+ "BM_string_memcpy/65536/1/8/iterations:1\n"
+ "BM_string_memcpy/65536/1/16/iterations:1\n"
+ "BM_string_memcpy/65536/1/32/iterations:1\n"
+ "BM_string_memcpy/65536/2/1/iterations:1\n"
+ "BM_string_memcpy/65536/2/2/iterations:1\n"
+ "BM_string_memcpy/65536/2/4/iterations:1\n"
+ "BM_string_memcpy/65536/2/8/iterations:1\n"
+ "BM_string_memcpy/65536/2/16/iterations:1\n"
+ "BM_string_memcpy/65536/2/32/iterations:1\n"
+ "BM_string_memcpy/65536/4/1/iterations:1\n"
+ "BM_string_memcpy/65536/4/2/iterations:1\n"
+ "BM_string_memcpy/65536/4/4/iterations:1\n"
+ "BM_string_memcpy/65536/4/8/iterations:1\n"
+ "BM_string_memcpy/65536/4/16/iterations:1\n"
+ "BM_string_memcpy/65536/4/32/iterations:1\n"
+ "BM_string_memcpy/65536/8/1/iterations:1\n"
+ "BM_string_memcpy/65536/8/2/iterations:1\n"
+ "BM_string_memcpy/65536/8/4/iterations:1\n"
+ "BM_string_memcpy/65536/8/8/iterations:1\n"
+ "BM_string_memcpy/65536/8/16/iterations:1\n"
+ "BM_string_memcpy/65536/8/32/iterations:1\n"
+ "BM_string_memcpy/65536/16/1/iterations:1\n"
+ "BM_string_memcpy/65536/16/2/iterations:1\n"
+ "BM_string_memcpy/65536/16/4/iterations:1\n"
+ "BM_string_memcpy/65536/16/8/iterations:1\n"
+ "BM_string_memcpy/65536/16/16/iterations:1\n"
+ "BM_string_memcpy/65536/16/32/iterations:1\n"
+ "BM_string_memcpy/65536/32/1/iterations:1\n"
+ "BM_string_memcpy/65536/32/2/iterations:1\n"
+ "BM_string_memcpy/65536/32/4/iterations:1\n"
+ "BM_string_memcpy/65536/32/8/iterations:1\n"
+ "BM_string_memcpy/65536/32/16/iterations:1\n"
+ "BM_string_memcpy/65536/32/32/iterations:1\n"
+ "BM_string_memcpy/131072/0/0/iterations:1\n"
+ "BM_string_memcpy/131072/1/1/iterations:1\n"
+ "BM_string_memcpy/131072/1/2/iterations:1\n"
+ "BM_string_memcpy/131072/1/4/iterations:1\n"
+ "BM_string_memcpy/131072/1/8/iterations:1\n"
+ "BM_string_memcpy/131072/1/16/iterations:1\n"
+ "BM_string_memcpy/131072/1/32/iterations:1\n"
+ "BM_string_memcpy/131072/2/1/iterations:1\n"
+ "BM_string_memcpy/131072/2/2/iterations:1\n"
+ "BM_string_memcpy/131072/2/4/iterations:1\n"
+ "BM_string_memcpy/131072/2/8/iterations:1\n"
+ "BM_string_memcpy/131072/2/16/iterations:1\n"
+ "BM_string_memcpy/131072/2/32/iterations:1\n"
+ "BM_string_memcpy/131072/4/1/iterations:1\n"
+ "BM_string_memcpy/131072/4/2/iterations:1\n"
+ "BM_string_memcpy/131072/4/4/iterations:1\n"
+ "BM_string_memcpy/131072/4/8/iterations:1\n"
+ "BM_string_memcpy/131072/4/16/iterations:1\n"
+ "BM_string_memcpy/131072/4/32/iterations:1\n"
+ "BM_string_memcpy/131072/8/1/iterations:1\n"
+ "BM_string_memcpy/131072/8/2/iterations:1\n"
+ "BM_string_memcpy/131072/8/4/iterations:1\n"
+ "BM_string_memcpy/131072/8/8/iterations:1\n"
+ "BM_string_memcpy/131072/8/16/iterations:1\n"
+ "BM_string_memcpy/131072/8/32/iterations:1\n"
+ "BM_string_memcpy/131072/16/1/iterations:1\n"
+ "BM_string_memcpy/131072/16/2/iterations:1\n"
+ "BM_string_memcpy/131072/16/4/iterations:1\n"
+ "BM_string_memcpy/131072/16/8/iterations:1\n"
+ "BM_string_memcpy/131072/16/16/iterations:1\n"
+ "BM_string_memcpy/131072/16/32/iterations:1\n"
+ "BM_string_memcpy/131072/32/1/iterations:1\n"
+ "BM_string_memcpy/131072/32/2/iterations:1\n"
+ "BM_string_memcpy/131072/32/4/iterations:1\n"
+ "BM_string_memcpy/131072/32/8/iterations:1\n"
+ "BM_string_memcpy/131072/32/16/iterations:1\n"
+ "BM_string_memcpy/131072/32/32/iterations:1\n"
+ "BM_string_memcpy/262144/0/0/iterations:1\n"
+ "BM_string_memcpy/262144/1/1/iterations:1\n"
+ "BM_string_memcpy/262144/1/2/iterations:1\n"
+ "BM_string_memcpy/262144/1/4/iterations:1\n"
+ "BM_string_memcpy/262144/1/8/iterations:1\n"
+ "BM_string_memcpy/262144/1/16/iterations:1\n"
+ "BM_string_memcpy/262144/1/32/iterations:1\n"
+ "BM_string_memcpy/262144/2/1/iterations:1\n"
+ "BM_string_memcpy/262144/2/2/iterations:1\n"
+ "BM_string_memcpy/262144/2/4/iterations:1\n"
+ "BM_string_memcpy/262144/2/8/iterations:1\n"
+ "BM_string_memcpy/262144/2/16/iterations:1\n"
+ "BM_string_memcpy/262144/2/32/iterations:1\n"
+ "BM_string_memcpy/262144/4/1/iterations:1\n"
+ "BM_string_memcpy/262144/4/2/iterations:1\n"
+ "BM_string_memcpy/262144/4/4/iterations:1\n"
+ "BM_string_memcpy/262144/4/8/iterations:1\n"
+ "BM_string_memcpy/262144/4/16/iterations:1\n"
+ "BM_string_memcpy/262144/4/32/iterations:1\n"
+ "BM_string_memcpy/262144/8/1/iterations:1\n"
+ "BM_string_memcpy/262144/8/2/iterations:1\n"
+ "BM_string_memcpy/262144/8/4/iterations:1\n"
+ "BM_string_memcpy/262144/8/8/iterations:1\n"
+ "BM_string_memcpy/262144/8/16/iterations:1\n"
+ "BM_string_memcpy/262144/8/32/iterations:1\n"
+ "BM_string_memcpy/262144/16/1/iterations:1\n"
+ "BM_string_memcpy/262144/16/2/iterations:1\n"
+ "BM_string_memcpy/262144/16/4/iterations:1\n"
+ "BM_string_memcpy/262144/16/8/iterations:1\n"
+ "BM_string_memcpy/262144/16/16/iterations:1\n"
+ "BM_string_memcpy/262144/16/32/iterations:1\n"
+ "BM_string_memcpy/262144/32/1/iterations:1\n"
+ "BM_string_memcpy/262144/32/2/iterations:1\n"
+ "BM_string_memcpy/262144/32/4/iterations:1\n"
+ "BM_string_memcpy/262144/32/8/iterations:1\n"
+ "BM_string_memcpy/262144/32/16/iterations:1\n"
+ "BM_string_memcpy/262144/32/32/iterations:1\n"
+ "BM_string_memcpy/524288/0/0/iterations:1\n"
+ "BM_string_memcpy/524288/1/1/iterations:1\n"
+ "BM_string_memcpy/524288/1/2/iterations:1\n"
+ "BM_string_memcpy/524288/1/4/iterations:1\n"
+ "BM_string_memcpy/524288/1/8/iterations:1\n"
+ "BM_string_memcpy/524288/1/16/iterations:1\n"
+ "BM_string_memcpy/524288/1/32/iterations:1\n"
+ "BM_string_memcpy/524288/2/1/iterations:1\n"
+ "BM_string_memcpy/524288/2/2/iterations:1\n"
+ "BM_string_memcpy/524288/2/4/iterations:1\n"
+ "BM_string_memcpy/524288/2/8/iterations:1\n"
+ "BM_string_memcpy/524288/2/16/iterations:1\n"
+ "BM_string_memcpy/524288/2/32/iterations:1\n"
+ "BM_string_memcpy/524288/4/1/iterations:1\n"
+ "BM_string_memcpy/524288/4/2/iterations:1\n"
+ "BM_string_memcpy/524288/4/4/iterations:1\n"
+ "BM_string_memcpy/524288/4/8/iterations:1\n"
+ "BM_string_memcpy/524288/4/16/iterations:1\n"
+ "BM_string_memcpy/524288/4/32/iterations:1\n"
+ "BM_string_memcpy/524288/8/1/iterations:1\n"
+ "BM_string_memcpy/524288/8/2/iterations:1\n"
+ "BM_string_memcpy/524288/8/4/iterations:1\n"
+ "BM_string_memcpy/524288/8/8/iterations:1\n"
+ "BM_string_memcpy/524288/8/16/iterations:1\n"
+ "BM_string_memcpy/524288/8/32/iterations:1\n"
+ "BM_string_memcpy/524288/16/1/iterations:1\n"
+ "BM_string_memcpy/524288/16/2/iterations:1\n"
+ "BM_string_memcpy/524288/16/4/iterations:1\n"
+ "BM_string_memcpy/524288/16/8/iterations:1\n"
+ "BM_string_memcpy/524288/16/16/iterations:1\n"
+ "BM_string_memcpy/524288/16/32/iterations:1\n"
+ "BM_string_memcpy/524288/32/1/iterations:1\n"
+ "BM_string_memcpy/524288/32/2/iterations:1\n"
+ "BM_string_memcpy/524288/32/4/iterations:1\n"
+ "BM_string_memcpy/524288/32/8/iterations:1\n"
+ "BM_string_memcpy/524288/32/16/iterations:1\n"
+ "BM_string_memcpy/524288/32/32/iterations:1\n"
+ "BM_string_memcpy/1048576/0/0/iterations:1\n"
+ "BM_string_memcpy/1048576/1/1/iterations:1\n"
+ "BM_string_memcpy/1048576/1/2/iterations:1\n"
+ "BM_string_memcpy/1048576/1/4/iterations:1\n"
+ "BM_string_memcpy/1048576/1/8/iterations:1\n"
+ "BM_string_memcpy/1048576/1/16/iterations:1\n"
+ "BM_string_memcpy/1048576/1/32/iterations:1\n"
+ "BM_string_memcpy/1048576/2/1/iterations:1\n"
+ "BM_string_memcpy/1048576/2/2/iterations:1\n"
+ "BM_string_memcpy/1048576/2/4/iterations:1\n"
+ "BM_string_memcpy/1048576/2/8/iterations:1\n"
+ "BM_string_memcpy/1048576/2/16/iterations:1\n"
+ "BM_string_memcpy/1048576/2/32/iterations:1\n"
+ "BM_string_memcpy/1048576/4/1/iterations:1\n"
+ "BM_string_memcpy/1048576/4/2/iterations:1\n"
+ "BM_string_memcpy/1048576/4/4/iterations:1\n"
+ "BM_string_memcpy/1048576/4/8/iterations:1\n"
+ "BM_string_memcpy/1048576/4/16/iterations:1\n"
+ "BM_string_memcpy/1048576/4/32/iterations:1\n"
+ "BM_string_memcpy/1048576/8/1/iterations:1\n"
+ "BM_string_memcpy/1048576/8/2/iterations:1\n"
+ "BM_string_memcpy/1048576/8/4/iterations:1\n"
+ "BM_string_memcpy/1048576/8/8/iterations:1\n"
+ "BM_string_memcpy/1048576/8/16/iterations:1\n"
+ "BM_string_memcpy/1048576/8/32/iterations:1\n"
+ "BM_string_memcpy/1048576/16/1/iterations:1\n"
+ "BM_string_memcpy/1048576/16/2/iterations:1\n"
+ "BM_string_memcpy/1048576/16/4/iterations:1\n"
+ "BM_string_memcpy/1048576/16/8/iterations:1\n"
+ "BM_string_memcpy/1048576/16/16/iterations:1\n"
+ "BM_string_memcpy/1048576/16/32/iterations:1\n"
+ "BM_string_memcpy/1048576/32/1/iterations:1\n"
+ "BM_string_memcpy/1048576/32/2/iterations:1\n"
+ "BM_string_memcpy/1048576/32/4/iterations:1\n"
+ "BM_string_memcpy/1048576/32/8/iterations:1\n"
+ "BM_string_memcpy/1048576/32/16/iterations:1\n"
+ "BM_string_memcpy/1048576/32/32/iterations:1\n"
+ "BM_string_memcpy/2097152/0/0/iterations:1\n"
+ "BM_string_memcpy/2097152/1/1/iterations:1\n"
+ "BM_string_memcpy/2097152/1/2/iterations:1\n"
+ "BM_string_memcpy/2097152/1/4/iterations:1\n"
+ "BM_string_memcpy/2097152/1/8/iterations:1\n"
+ "BM_string_memcpy/2097152/1/16/iterations:1\n"
+ "BM_string_memcpy/2097152/1/32/iterations:1\n"
+ "BM_string_memcpy/2097152/2/1/iterations:1\n"
+ "BM_string_memcpy/2097152/2/2/iterations:1\n"
+ "BM_string_memcpy/2097152/2/4/iterations:1\n"
+ "BM_string_memcpy/2097152/2/8/iterations:1\n"
+ "BM_string_memcpy/2097152/2/16/iterations:1\n"
+ "BM_string_memcpy/2097152/2/32/iterations:1\n"
+ "BM_string_memcpy/2097152/4/1/iterations:1\n"
+ "BM_string_memcpy/2097152/4/2/iterations:1\n"
+ "BM_string_memcpy/2097152/4/4/iterations:1\n"
+ "BM_string_memcpy/2097152/4/8/iterations:1\n"
+ "BM_string_memcpy/2097152/4/16/iterations:1\n"
+ "BM_string_memcpy/2097152/4/32/iterations:1\n"
+ "BM_string_memcpy/2097152/8/1/iterations:1\n"
+ "BM_string_memcpy/2097152/8/2/iterations:1\n"
+ "BM_string_memcpy/2097152/8/4/iterations:1\n"
+ "BM_string_memcpy/2097152/8/8/iterations:1\n"
+ "BM_string_memcpy/2097152/8/16/iterations:1\n"
+ "BM_string_memcpy/2097152/8/32/iterations:1\n"
+ "BM_string_memcpy/2097152/16/1/iterations:1\n"
+ "BM_string_memcpy/2097152/16/2/iterations:1\n"
+ "BM_string_memcpy/2097152/16/4/iterations:1\n"
+ "BM_string_memcpy/2097152/16/8/iterations:1\n"
+ "BM_string_memcpy/2097152/16/16/iterations:1\n"
+ "BM_string_memcpy/2097152/16/32/iterations:1\n"
+ "BM_string_memcpy/2097152/32/1/iterations:1\n"
+ "BM_string_memcpy/2097152/32/2/iterations:1\n"
+ "BM_string_memcpy/2097152/32/4/iterations:1\n"
+ "BM_string_memcpy/2097152/32/8/iterations:1\n"
+ "BM_string_memcpy/2097152/32/16/iterations:1\n"
+ "BM_string_memcpy/2097152/32/32/iterations:1\n";
+
+ Verify(expected, 0,
+ std::vector<const char*>{GetBionicXmlArg("test_alignment_twobuf.xml").c_str()});
+}
+
+TEST_F(SystemTests, alignment_twobuf_manual) {
+ std::string expected =
+ "BM_string_strcpy/12345/0/0/iterations:1\n"
+ "BM_string_memcpy/10248/2/1/iterations:1\n"
+ "BM_string_strcpy/17820/4/8/iterations:1\n"
+ "BM_string_memcpy/20000/16/32/iterations:1\n";
+
+ Verify(expected, 0,
+ std::vector<const char*>{GetBionicXmlArg("test_alignment_twobuf_manual.xml").c_str()});
}
diff --git a/libc/arch-arm/bionic/kuser_helper_on.S b/libc/arch-arm/bionic/kuser_helper_on.S
index 1e971a8..cff2073 100644
--- a/libc/arch-arm/bionic/kuser_helper_on.S
+++ b/libc/arch-arm/bionic/kuser_helper_on.S
@@ -25,14 +25,15 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
- .section .note.android.kuser_helper_on,"a",%note
- .align 2
- .type kuser_helper_on, %object
+
+ .section .note.android.kuser_helper_on,"a",%note
+ .balign 4
+ .type kuser_helper_on, %object
kuser_helper_on:
- .long 2f-1f /* int32_t namesz */
- .long 3f-2f /* int32_t descsz */
- .long 3 /* int32_t type */
-1: .ascii "Android\0" /* char name[] */
-2: .long 1 /* int32_t on */
+ .long 2f-1f // int32_t namesz
+ .long 3f-2f // int32_t descsz
+ .long 3 // int32_t type
+1:.ascii "Android\0" // char name[]
+2:.long 1 // int32_t on
3:
- .size kuser_helper_on, .-kuser_helper_on
+ .size kuser_helper_on, .-kuser_helper_on
diff --git a/libc/arch-common/bionic/crtbrand.S b/libc/arch-common/bionic/crtbrand.S
index 11bbfbe..4b4f99c 100644
--- a/libc/arch-common/bionic/crtbrand.S
+++ b/libc/arch-common/bionic/crtbrand.S
@@ -26,14 +26,14 @@
* SUCH DAMAGE.
*/
- .section .note.android.ident,"a",%note
- .align 2
- .type abitag, %object
+ .section .note.android.ident,"a",%note
+ .balign 4
+ .type abitag, %object
abitag:
- .long 2f-1f /* int32_t namesz */
- .long 3f-2f /* int32_t descsz */
- .long 1 /* int32_t type */
-1: .ascii "Android\0" /* char name[] */
-2: .long PLATFORM_SDK_VERSION /* int32_t android_api */
+ .long 2f-1f // int32_t namesz
+ .long 3f-2f // int32_t descsz
+ .long 1 // int32_t type
+1:.ascii "Android\0" // char name[]
+2:.long PLATFORM_SDK_VERSION // int32_t android_api
3:
- .size abitag, .-abitag
+ .size abitag, .-abitag
diff --git a/libc/bionic/__libc_current_sigrtmin.cpp b/libc/bionic/__libc_current_sigrtmin.cpp
index f3b2bf6..04caa89 100644
--- a/libc/bionic/__libc_current_sigrtmin.cpp
+++ b/libc/bionic/__libc_current_sigrtmin.cpp
@@ -28,10 +28,11 @@
#include <signal.h>
-// POSIX timers use __SIGRTMIN + 0.
-// libbacktrace uses __SIGRTMIN + 1.
-// libcore uses __SIGRTMIN + 2.
-// __SIGRTMIN + 3 is reserved for triggering native stack dumps.
+// Realtime signals reserved for internal use:
+// 32 (__SIGRTMIN + 0) POSIX timers
+// 33 (__SIGRTMIN + 1) libbacktrace
+// 34 (__SIGRTMIN + 2) libcore
+// 35 (__SIGRTMIN + 3) debuggerd -b
int __libc_current_sigrtmin(void) {
// If you change this, also change __ndk_legacy___libc_current_sigrtmin
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index 4b7b776..985d47f 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -78,7 +78,7 @@
// http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html
//
-int __FD_ISSET_chk(int fd, fd_set* set, size_t set_size) {
+int __FD_ISSET_chk(int fd, const fd_set* set, size_t set_size) {
__check_fd_set("FD_ISSET", fd, set_size);
return FD_ISSET(fd, set);
}
diff --git a/libc/include/sys/select.h b/libc/include/sys/select.h
index e919188..ac51d3f 100644
--- a/libc/include/sys/select.h
+++ b/libc/include/sys/select.h
@@ -37,39 +37,40 @@
__BEGIN_DECLS
+typedef unsigned long fd_mask;
+
#define FD_SETSIZE 1024
-#define NFDBITS (8 * sizeof(unsigned long))
-#define __FDSET_LONGS (FD_SETSIZE/NFDBITS)
+#define NFDBITS (8 * sizeof(fd_mask))
typedef struct {
- unsigned long fds_bits[__FDSET_LONGS];
+ fd_mask fds_bits[FD_SETSIZE/NFDBITS];
} fd_set;
#define __FDELT(fd) ((fd) / NFDBITS)
#define __FDMASK(fd) (1UL << ((fd) % NFDBITS))
-#define __FDS_BITS(set) (__BIONIC_CAST(static_cast, fd_set*, set)->fds_bits)
+#define __FDS_BITS(type,set) (__BIONIC_CAST(static_cast, type, set)->fds_bits)
/* Inline loop so we don't have to declare memset. */
#define FD_ZERO(set) \
do { \
size_t __i; \
- for (__i = 0; __i < __FDSET_LONGS; ++__i) { \
+ for (__i = 0; __i < sizeof(fd_set)/sizeof(fd_mask); ++__i) { \
(set)->fds_bits[__i] = 0; \
} \
} while (0)
void __FD_CLR_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
void __FD_SET_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
-int __FD_ISSET_chk(int, fd_set*, size_t) __INTRODUCED_IN(21);
+int __FD_ISSET_chk(int, const fd_set*, size_t) __INTRODUCED_IN(21);
#if defined(__BIONIC_FORTIFY) && __ANDROID_API__ >= __ANDROID_API_L__
#define FD_CLR(fd, set) __FD_CLR_chk(fd, set, __bos(set))
#define FD_SET(fd, set) __FD_SET_chk(fd, set, __bos(set))
#define FD_ISSET(fd, set) __FD_ISSET_chk(fd, set, __bos(set))
#else
-#define FD_CLR(fd, set) (__FDS_BITS(set)[__FDELT(fd)] &= ~__FDMASK(fd))
-#define FD_SET(fd, set) (__FDS_BITS(set)[__FDELT(fd)] |= __FDMASK(fd))
-#define FD_ISSET(fd, set) ((__FDS_BITS(set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
+#define FD_CLR(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] &= ~__FDMASK(fd))
+#define FD_SET(fd, set) (__FDS_BITS(fd_set*,set)[__FDELT(fd)] |= __FDMASK(fd))
+#define FD_ISSET(fd, set) ((__FDS_BITS(const fd_set*,set)[__FDELT(fd)] & __FDMASK(fd)) != 0)
#endif /* defined(__BIONIC_FORTIFY) && __ANDROID_API >= 21 */
int select(int __fd_count, fd_set* __read_fds, fd_set* __write_fds, fd_set* __exception_fds, struct timeval* __timeout);
diff --git a/libc/system_properties/system_properties.cpp b/libc/system_properties/system_properties.cpp
index 3f6601d..89a6fe7 100644
--- a/libc/system_properties/system_properties.cpp
+++ b/libc/system_properties/system_properties.cpp
@@ -46,6 +46,8 @@
#include <sys/_system_properties.h>
#include <sys/system_properties.h>
+#include <new>
+
#include <async_safe/log.h>
#include "private/ErrnoRestorer.h"
@@ -63,10 +65,15 @@
#include "property_filename.h"
// We don't want to use new or malloc in properties (b/31659220), and since these classes are
-// small enough and don't have non-trivial constructors, it's easier to just statically declare
-// them than anything else.
-static ContextsSplit contexts_split;
-static ContextsPreSplit contexts_pre_split;
+// small enough and we place them in a static union. Note that system properties are initialized
+// before static initializers are called, so using a Constructor here is an error. Even a
+// Constructor that zero initializes a class will clobber the previous property initialization.
+static union ContextsUnion {
+ ContextsUnion() {}
+ ~ContextsUnion() {}
+ ContextsSplit contexts_split;
+ ContextsPreSplit contexts_pre_split;
+} contexts_union;
static Contexts* contexts = nullptr;
#define SERIAL_DIRTY(serial) ((serial)&1)
@@ -276,15 +283,17 @@
}
contexts = nullptr;
if (is_dir(property_filename)) {
- if (!contexts_split.Initialize(false)) {
+ new (&contexts_union.contexts_split) ContextsSplit();
+ if (!contexts_union.contexts_split.Initialize(false)) {
return -1;
}
- contexts = &contexts_split;
+ contexts = &contexts_union.contexts_split;
} else {
- if (!contexts_pre_split.Initialize(false)) {
+ new (&contexts_union.contexts_pre_split) ContextsPreSplit();
+ if (!contexts_union.contexts_pre_split.Initialize(false)) {
return -1;
}
- contexts = &contexts_pre_split;
+ contexts = &contexts_union.contexts_pre_split;
}
return 0;
}
@@ -305,8 +314,9 @@
}
// We set this unconditionally as we want tests to continue on regardless of if this failed
// and property_service will abort on an error condition, so no harm done.
- contexts = &contexts_split;
- if (!contexts_split.Initialize(true)) {
+ new (&contexts_union.contexts_split) ContextsSplit;
+ contexts = &contexts_union.contexts_split;
+ if (!contexts_union.contexts_split.Initialize(true)) {
return -1;
}
return 0;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 3baae51..7bf3a5b 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -3533,7 +3533,14 @@
std::string error_msg;
- const char* config_file = file_exists(kLdConfigArchFilePath) ? kLdConfigArchFilePath : kLdConfigFilePath;
+ std::string ld_config_vndk = kLdConfigFilePath;
+ size_t insert_pos = ld_config_vndk.find_last_of(".");
+ if (insert_pos == std::string::npos) {
+ insert_pos = ld_config_vndk.length();
+ }
+ ld_config_vndk.insert(insert_pos, Config::get_vndk_version_string('.'));
+ const char* ld_config_txt = file_exists(ld_config_vndk.c_str()) ? ld_config_vndk.c_str() : kLdConfigFilePath;
+ const char* config_file = file_exists(kLdConfigArchFilePath) ? kLdConfigArchFilePath : ld_config_txt;
#ifdef USE_LD_CONFIG_FILE
// This is a debugging/testing only feature. Must not be available on
// production builds.
diff --git a/linker/linker_config.cpp b/linker/linker_config.cpp
index f7d2c53..60b7ad9 100644
--- a/linker/linker_config.cpp
+++ b/linker/linker_config.cpp
@@ -33,6 +33,7 @@
#include "linker_utils.h"
#include <android-base/file.h>
+#include <android-base/properties.h>
#include <android-base/scopeguard.h>
#include <android-base/strings.h>
@@ -49,7 +50,8 @@
class ConfigParser {
public:
enum {
- kProperty,
+ kPropertyAssign,
+ kPropertyAppend,
kSection,
kEndOfFile,
kError,
@@ -60,7 +62,8 @@
/*
* Possible return values
- * kProperty: name is set to property name and value is set to property value
+ * kPropertyAssign: name is set to property name and value is set to property value
+ * kPropertyAppend: same as kPropertyAssign, but the value should be appended
* kSection: name is set to section name.
* kEndOfFile: reached end of file.
* kError: error_msg is set.
@@ -80,17 +83,24 @@
return kSection;
}
- found = line.find('=');
- if (found == std::string::npos) {
- *error_msg = std::string("invalid format: ") +
- line +
- ", expected \"name = property\" or \"[section]\"";
- return kError;
+ size_t found_assign = line.find('=');
+ size_t found_append = line.find("+=");
+ if (found_assign != std::string::npos && found_append == std::string::npos) {
+ *name = android::base::Trim(line.substr(0, found_assign));
+ *value = android::base::Trim(line.substr(found_assign + 1));
+ return kPropertyAssign;
}
- *name = android::base::Trim(line.substr(0, found));
- *value = android::base::Trim(line.substr(found + 1));
- return kProperty;
+ if (found_append != std::string::npos) {
+ *name = android::base::Trim(line.substr(0, found_append));
+ *value = android::base::Trim(line.substr(found_append + 2));
+ return kPropertyAppend;
+ }
+
+ *error_msg = std::string("invalid format: ") +
+ line +
+ ", expected \"name = property\", \"name += property\", or \"[section]\"";
+ return kError;
}
// to avoid infinite cycles when programmer makes a mistake
@@ -141,6 +151,14 @@
return value_;
}
+ void append_value(std::string&& value) {
+ value_ = value_ + value;
+ // lineno isn't updated as we might have cases like this:
+ // property.x = blah
+ // property.y = blah
+ // property.x += blah
+ }
+
size_t lineno() const {
return lineno_;
}
@@ -194,7 +212,7 @@
return false;
}
- if (result == ConfigParser::kProperty) {
+ if (result == ConfigParser::kPropertyAssign) {
if (!android::base::StartsWith(name, "dir.")) {
DL_WARN("error parsing %s:%zd: unexpected property name \"%s\", "
"expected format dir.<section_name> (ignoring this line)",
@@ -255,7 +273,7 @@
break;
}
- if (result == ConfigParser::kProperty) {
+ if (result == ConfigParser::kPropertyAssign) {
if (properties->find(name) != properties->end()) {
DL_WARN("%s:%zd: warning: property \"%s\" redefinition",
ld_config_file_path,
@@ -264,6 +282,29 @@
}
(*properties)[name] = PropertyValue(std::move(value), cp.lineno());
+ } else if (result == ConfigParser::kPropertyAppend) {
+ if (properties->find(name) == properties->end()) {
+ DL_WARN("%s:%zd: warning: appending to property \"%s\" which isn't defined",
+ ld_config_file_path,
+ cp.lineno(),
+ name.c_str());
+ (*properties)[name] = PropertyValue(std::move(value), cp.lineno());
+ } else {
+ if (android::base::EndsWith(name, ".links") ||
+ android::base::EndsWith(name, ".namespaces")) {
+ value = "," + value;
+ (*properties)[name].append_value(std::move(value));
+ } else if (android::base::EndsWith(name, ".paths") ||
+ android::base::EndsWith(name, ".shared_libs")) {
+ value = ":" + value;
+ (*properties)[name].append_value(std::move(value));
+ } else {
+ DL_WARN("%s:%zd: warning: += isn't allowed to property \"%s\". Ignoring.",
+ ld_config_file_path,
+ cp.lineno(),
+ name.c_str());
+ }
+ }
}
if (result == ConfigParser::kError) {
@@ -278,15 +319,6 @@
return true;
}
-static std::string getVndkVersionString() {
- char vndk_version_str[1 + PROP_VALUE_MAX] = {};
- __system_property_get("ro.vndk.version", vndk_version_str + 1);
- if (strlen(vndk_version_str + 1) != 0 && strcmp(vndk_version_str + 1, "current") != 0) {
- vndk_version_str[0] = '-';
- }
- return vndk_version_str;
-}
-
static Config g_config;
static constexpr const char* kDefaultConfigName = "default";
@@ -346,7 +378,7 @@
params.push_back({ "SDK_VER", buf });
}
- static std::string vndk = getVndkVersionString();
+ static std::string vndk = Config::get_vndk_version_string('-');
params.push_back({ "VNDK_VER", vndk });
for (auto&& path : paths) {
@@ -503,6 +535,15 @@
return true;
}
+std::string Config::get_vndk_version_string(const char delimiter) {
+ std::string version = android::base::GetProperty("ro.vndk.version", "");
+ if (version != "" && version != "current") {
+ //add the delimiter char in front of the string and return it.
+ return version.insert(0, 1, delimiter);
+ }
+ return "";
+}
+
NamespaceConfig* Config::create_namespace_config(const std::string& name) {
namespace_configs_.push_back(std::unique_ptr<NamespaceConfig>(new NamespaceConfig(name)));
NamespaceConfig* ns_config_ptr = namespace_configs_.back().get();
diff --git a/linker/linker_config.h b/linker/linker_config.h
index 6f8bffb..dde9362 100644
--- a/linker/linker_config.h
+++ b/linker/linker_config.h
@@ -146,6 +146,8 @@
bool is_asan,
const Config** config,
std::string* error_msg);
+
+ static std::string get_vndk_version_string(const char delimiter);
private:
void clear();
diff --git a/linker/tests/linker_config_test.cpp b/linker/tests/linker_config_test.cpp
index c6fade9..4c0dcdd 100644
--- a/linker/tests/linker_config_test.cpp
+++ b/linker/tests/linker_config_test.cpp
@@ -56,19 +56,31 @@
"\n"
"enable.target.sdk.version = true\n"
"additional.namespaces=system\n"
+ "additional.namespaces+=vndk\n"
"namespace.default.isolated = true\n"
"namespace.default.search.paths = /vendor/${LIB}\n"
"namespace.default.permitted.paths = /vendor/${LIB}\n"
- "namespace.default.asan.search.paths = /data:/vendor/${LIB}\n"
+ "namespace.default.asan.search.paths = /data\n"
+ "namespace.default.asan.search.paths += /vendor/${LIB}\n"
"namespace.default.asan.permitted.paths = /data:/vendor\n"
"namespace.default.links = system\n"
- "namespace.default.link.system.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so\n"
+ "namespace.default.links += vndk\n"
+ // irregular whitespaces are added intentionally for testing purpose
+ "namespace.default.link.system.shared_libs= libc.so\n"
+ "namespace.default.link.system.shared_libs += libm.so:libdl.so\n"
+ "namespace.default.link.system.shared_libs +=libstdc++.so\n"
+ "namespace.default.link.vndk.shared_libs = libcutils.so:libbase.so\n"
"namespace.system.isolated = true\n"
"namespace.system.visible = true\n"
"namespace.system.search.paths = /system/${LIB}\n"
"namespace.system.permitted.paths = /system/${LIB}\n"
"namespace.system.asan.search.paths = /data:/system/${LIB}\n"
"namespace.system.asan.permitted.paths = /data:/system\n"
+ "namespace.vndk.isolated = tr\n"
+ "namespace.vndk.isolated += ue\n" // should be ignored and return as 'false'.
+ "namespace.vndk.search.paths = /system/${LIB}/vndk\n"
+ "namespace.vndk.asan.search.paths = /data\n"
+ "namespace.vndk.asan.search.paths += /system/${LIB}/vndk\n"
"\n";
static bool write_version(const std::string& path, uint32_t version) {
@@ -99,6 +111,10 @@
resolve_paths(is_asan ? std::vector<std::string>({ "/data", "/system" }) :
std::vector<std::string>({ "/system/lib" ARCH_SUFFIX }));
+ const std::vector<std::string> kExpectedVndkSearchPath =
+ resolve_paths(is_asan ? std::vector<std::string>({ "/data", "/system/lib" ARCH_SUFFIX "/vndk"}) :
+ std::vector<std::string>({ "/system/lib" ARCH_SUFFIX "/vndk"}));
+
TemporaryFile tmp_file;
close(tmp_file.fd);
tmp_file.fd = -1;
@@ -137,22 +153,27 @@
ASSERT_EQ(kExpectedDefaultPermittedPath, default_ns_config->permitted_paths());
const auto& default_ns_links = default_ns_config->links();
- ASSERT_EQ(1U, default_ns_links.size());
+ ASSERT_EQ(2U, default_ns_links.size());
ASSERT_EQ("system", default_ns_links[0].ns_name());
ASSERT_EQ("libc.so:libm.so:libdl.so:libstdc++.so", default_ns_links[0].shared_libs());
+ ASSERT_EQ("vndk", default_ns_links[1].ns_name());
+ ASSERT_EQ("libcutils.so:libbase.so", default_ns_links[1].shared_libs());
auto& ns_configs = config->namespace_configs();
- ASSERT_EQ(2U, ns_configs.size());
+ ASSERT_EQ(3U, ns_configs.size());
// find second namespace
const NamespaceConfig* ns_system = nullptr;
+ const NamespaceConfig* ns_vndk = nullptr;
for (auto& ns : ns_configs) {
std::string ns_name = ns->name();
- ASSERT_TRUE(ns_name == "system" || ns_name == "default")
+ ASSERT_TRUE(ns_name == "system" || ns_name == "default" || ns_name == "vndk")
<< "unexpected ns name: " << ns->name();
if (ns_name == "system") {
ns_system = ns.get();
+ } else if (ns_name == "vndk") {
+ ns_vndk = ns.get();
}
}
@@ -162,6 +183,12 @@
ASSERT_TRUE(ns_system->visible());
ASSERT_EQ(kExpectedSystemSearchPath, ns_system->search_paths());
ASSERT_EQ(kExpectedSystemPermittedPath, ns_system->permitted_paths());
+
+ ASSERT_TRUE(ns_vndk != nullptr) << "vndk namespace was not found";
+
+ ASSERT_FALSE(ns_vndk->isolated()); // malformed bool property
+ ASSERT_FALSE(ns_vndk->visible()); // undefined bool property
+ ASSERT_EQ(kExpectedVndkSearchPath, ns_vndk->search_paths());
}
TEST(linker_config, smoke) {
diff --git a/tests/sys_select_test.cpp b/tests/sys_select_test.cpp
index 4ad77f0..0eab876 100644
--- a/tests/sys_select_test.cpp
+++ b/tests/sys_select_test.cpp
@@ -179,3 +179,8 @@
DelayedWriteCleanup(pid, fd);
}
+
+TEST(sys_select, FD_ISSET_const) {
+ const fd_set none = {};
+ ASSERT_FALSE(FD_ISSET(atoi("0"), &none));
+}