diff --git a/include/common/standard.h b/include/common/standard.h index 9447e3669..f94eff920 100644 --- a/include/common/standard.h +++ b/include/common/standard.h @@ -1079,9 +1079,10 @@ char *env_expand(char *in); #define fddebug(msg...) do { char *_m = NULL; memprintf(&_m, ##msg); if (_m) write(-1, _m, strlen(_m)); free(_m); } while (0) /* displays a long memory block at , assuming first byte of - * has address . The output is emitted to file . + * has address . String may be placed as a prefix in front of + * each line. It may be NULL if unused. The output is emitted to file . */ -void debug_hexdump(FILE *out, const char *buf, unsigned int baseaddr, int len); +void debug_hexdump(FILE *out, const char *pfx, const char *buf, unsigned int baseaddr, int len); /* used from everywhere just to drain results we don't want to read and which * recent versions of gcc increasingly and annoyingly complain about. diff --git a/src/standard.c b/src/standard.c index 1d7625486..82b7a01a7 100644 --- a/src/standard.c +++ b/src/standard.c @@ -3780,16 +3780,18 @@ int dump_text_line(struct chunk *out, const char *buf, int bsize, int len, } /* displays a long memory block at , assuming first byte of - * has address . The output is emitted to file . + * has address . String may be placed as a prefix in front of + * each line. It may be NULL if unused. The output is emitted to file . */ -void debug_hexdump(FILE *out, const char *buf, unsigned int baseaddr, int len) +void debug_hexdump(FILE *out, const char *pfx, const char *buf, + unsigned int baseaddr, int len) { unsigned int i; int b, j; for (i = 0; i < (len + (baseaddr & 15)); i += 16) { b = i - (baseaddr & 15); - fprintf(out, "%08x: ", i + (baseaddr & ~15)); + fprintf(out, "%s%08x: ", pfx ? pfx : "", i + (baseaddr & ~15)); for (j = 0; j < 8; j++) { if (b + j >= 0 && b + j < len) fprintf(out, "%02x ", (unsigned char)buf[b + j]);