diff options
Diffstat (limited to 'test/sanitizer_common/print_address.h')
-rw-r--r-- | test/sanitizer_common/print_address.h | 19 |
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"); +} |