diff --git a/include/osmocore/logging.h b/include/osmocore/logging.h
index 2e82959..7bf2440 100644
--- a/include/osmocore/logging.h
+++ b/include/osmocore/logging.h
@@ -21,7 +21,6 @@
 
 #define static_assert(exp, name) typedef int dummy##name [(exp) ? 1 : -1];
 
-char *hexdump(const unsigned char *buf, int len);
 void logp(unsigned int subsys, char *file, int line, int cont, const char *format, ...) __attribute__ ((format (printf, 5, 6)));
 
 /* new logging interface */
diff --git a/include/osmocore/utils.h b/include/osmocore/utils.h
index c5b95bd..07af180 100644
--- a/include/osmocore/utils.h
+++ b/include/osmocore/utils.h
@@ -18,5 +18,6 @@
 uint8_t char2bcd(char c);
 
 int hexparse(const char *str, uint8_t *b, int max_len);
+char *hexdump(const unsigned char *buf, int len);
 
 #endif
diff --git a/src/logging.c b/src/logging.c
index 1dc30db..2cc44e7 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -236,25 +236,6 @@
 	va_end(ap);
 }
 
-static char hexd_buff[4096];
-
-char *hexdump(const unsigned char *buf, int len)
-{
-	int i;
-	char *cur = hexd_buff;
-
-	hexd_buff[0] = 0;
-	for (i = 0; i < len; i++) {
-		int len_remain = sizeof(hexd_buff) - (cur - hexd_buff);
-		int rc = snprintf(cur, len_remain, "%02x ", buf[i]);
-		if (rc <= 0)
-			break;
-		cur += rc;
-	}
-	hexd_buff[sizeof(hexd_buff)-1] = 0;
-	return hexd_buff;
-}
-
 void log_add_target(struct log_target *target)
 {
 	llist_add_tail(&target->entry, &target_list);
diff --git a/src/rsl.c b/src/rsl.c
index 10fba9b..3bfeffb 100644
--- a/src/rsl.c
+++ b/src/rsl.c
@@ -22,6 +22,7 @@
  */
 
 #include <stdint.h>
+#include <stdio.h>
 #include <errno.h>
 
 #include <osmocore/tlv.h>
diff --git a/src/utils.c b/src/utils.c
index 05381c8..a6c2d6d 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -75,3 +75,22 @@
 
 	return i>>1;
 }
+
+static char hexd_buff[4096];
+
+char *hexdump(const unsigned char *buf, int len)
+{
+	int i;
+	char *cur = hexd_buff;
+
+	hexd_buff[0] = 0;
+	for (i = 0; i < len; i++) {
+		int len_remain = sizeof(hexd_buff) - (cur - hexd_buff);
+		int rc = snprintf(cur, len_remain, "%02x ", buf[i]);
+		if (rc <= 0)
+			break;
+		cur += rc;
+	}
+	hexd_buff[sizeof(hexd_buff)-1] = 0;
+	return hexd_buff;
+}
