summaryrefslogtreecommitdiff
path: root/test/sanitizer_common/print_address.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/sanitizer_common/print_address.h')
-rw-r--r--test/sanitizer_common/print_address.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/sanitizer_common/print_address.h b/test/sanitizer_common/print_address.h
new file mode 100644
index 0000000000000..018db61800d3e
--- /dev/null
+++ b/test/sanitizer_common/print_address.h
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <stdarg.h>
+
+void print_address(const char *str, int n, ...) {
+ fprintf(stderr, "%s", str);
+ va_list ap;
+ va_start(ap, n);
+ while (n--) {
+ void *p = va_arg(ap, void *);
+#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__)
+ // On FreeBSD, the %p conversion specifier works as 0x%x and thus does not
+ // match to the format used in the diagnotic message.
+ fprintf(stderr, "0x%012lx ", (unsigned long) p);
+#elif defined(__mips64)
+ fprintf(stderr, "0x%010lx ", (unsigned long) p);
+#endif
+ }
+ fprintf(stderr, "\n");
+}