diff --git a/crypto/cmac/CMakeLists.txt b/crypto/cmac/CMakeLists.txt
index 8ebd80c..7a07160 100644
--- a/crypto/cmac/CMakeLists.txt
+++ b/crypto/cmac/CMakeLists.txt
@@ -12,6 +12,8 @@
   cmac_test
 
   cmac_test.cc
+
+  $<TARGET_OBJECTS:test_support>
 )
 
 target_link_libraries(cmac_test crypto)
diff --git a/crypto/cmac/cmac_test.cc b/crypto/cmac/cmac_test.cc
index 0f06860..53f45d1 100644
--- a/crypto/cmac/cmac_test.cc
+++ b/crypto/cmac/cmac_test.cc
@@ -19,16 +19,13 @@
 #include <openssl/cmac.h>
 
 #include "../test/scoped_types.h"
+#include "../test/test_util.h"
 
 
-static void dump(const uint8_t *got, const uint8_t *expected, size_t len) {
-  ScopedBIO bio(BIO_new_fp(stderr, 0 /* don't close */));
-
-  BIO_puts(bio.get(), "\nGot:\n");
-  BIO_hexdump(bio.get(), got, len, 2 /* indent */);
-  BIO_puts(bio.get(), "Expected:\n");
-  BIO_hexdump(bio.get(), expected, len, 2 /* indent */);
-  BIO_flush(bio.get());
+static void dump(const uint8_t *got, const uint8_t *want, size_t len) {
+  hexdump(stderr, "got :", got, len);
+  hexdump(stderr, "want:", want, len);
+  fflush(stderr);
 }
 
 static int test(const char *name, const uint8_t *key, size_t key_len,
diff --git a/crypto/modes/gcm_test.c b/crypto/modes/gcm_test.c
index a8819ea..89ed792 100644
--- a/crypto/modes/gcm_test.c
+++ b/crypto/modes/gcm_test.c
@@ -55,6 +55,7 @@
 #include <openssl/modes.h>
 
 #include "internal.h"
+#include "../test/test_util.h"
 
 
 struct test_case {
@@ -298,17 +299,6 @@
   return 0;
 }
 
-void hexdump(const char *msg, const void *in, size_t len) {
-  const uint8_t *data = in;
-  size_t i;
-
-  fprintf(stderr, "%s: ", msg);
-  for (i = 0; i < len; i++) {
-    fprintf(stderr, "%02x", data[i]);
-  }
-  fprintf(stderr, "\n");
-}
-
 static int run_test_case(unsigned test_num, const struct test_case *test) {
   size_t key_len, plaintext_len, additional_data_len, nonce_len, ciphertext_len,
       tag_len;
@@ -367,8 +357,8 @@
   if (!CRYPTO_gcm128_finish(&ctx, tag, tag_len) ||
       (ciphertext && memcmp(out, ciphertext, plaintext_len) != 0)) {
     fprintf(stderr, "%u: encrypt failed.\n", test_num);
-    hexdump("got ", out, plaintext_len);
-    hexdump("want", ciphertext, plaintext_len);
+    hexdump(stderr, "got :", out, plaintext_len);
+    hexdump(stderr, "want:", ciphertext, plaintext_len);
     goto out;
   }
 
diff --git a/crypto/test/CMakeLists.txt b/crypto/test/CMakeLists.txt
index 84a6174..8c75314 100644
--- a/crypto/test/CMakeLists.txt
+++ b/crypto/test/CMakeLists.txt
@@ -5,4 +5,5 @@
 
   file_test.cc
   malloc.cc
+  test_util.cc
 )
diff --git a/crypto/test/test_util.cc b/crypto/test/test_util.cc
new file mode 100644
index 0000000..8021aaa
--- /dev/null
+++ b/crypto/test/test_util.cc
@@ -0,0 +1,30 @@
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#include <stdint.h>
+#include <stdio.h>
+
+#include "test_util.h"
+
+
+void hexdump(FILE *fp, const char *msg, const void *in, size_t len) {
+  const uint8_t *data = reinterpret_cast<const uint8_t*>(in);
+  size_t i;
+
+  fputs(msg, fp);
+  for (i = 0; i < len; i++) {
+    fprintf(fp, "%02x", data[i]);
+  }
+  fputs("\n", fp);
+}
diff --git a/crypto/test/test_util.h b/crypto/test/test_util.h
new file mode 100644
index 0000000..972e206
--- /dev/null
+++ b/crypto/test/test_util.h
@@ -0,0 +1,35 @@
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+#ifndef OPENSSL_HEADER_CRYPTO_TEST_TEST_UTIL_H
+#define OPENSSL_HEADER_CRYPTO_TEST_TEST_UTIL_H
+
+#include <stddef.h>
+#include <stdio.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+
+/* hexdump writes |msg| to |fp| followed by the hex encoding of |len| bytes
+ * from |in|. */
+void hexdump(FILE *fp, const char *msg, const void *in, size_t len);
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* OPENSSL_HEADER_CRYPTO_TEST_TEST_UTIL_H */
