blob: db2e8341a9d2dd8bef1f9c12d0db640a1594f3a1 [file] [log] [blame]
#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(__i386__) || defined(__arm__)
fprintf(stderr, "0x%08lx ", (unsigned long) p);
#elif defined(__mips64)
fprintf(stderr, "0x%010lx ", (unsigned long) p);
fprintf(stderr, "\n");