diff options
author | H. Peter Anvin <hpa@zytor.com> | 2017-08-16 15:23:01 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2017-08-16 15:23:01 -0700 |
commit | cf53dfbac4d42951378720af9a44df25f7538b53 (patch) | |
tree | e8a9aa241793a7a3feb019104e3dbd56a10f9f75 | |
parent | a771be85f4647dc9ed9bbdc2938cafeaabe7a80e (diff) | |
download | nasm-cf53dfbac4d42951378720af9a44df25f7538b53.tar.gz |
misc/omfdump.c: expand dDEPFILE COMENT records
Expand dDEPFILE COMENT records.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | misc/omfdump.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/misc/omfdump.c b/misc/omfdump.c index b32ba582..b990b68e 100644 --- a/misc/omfdump.c +++ b/misc/omfdump.c @@ -140,6 +140,31 @@ static void dump_unknown(uint8_t type, const uint8_t *data, size_t n) hexdump_data(0, data, n, n); } +static void print_dostime(const uint8_t *p) +{ + uint16_t da = (p[3] << 8) + p[2]; + uint16_t ti = (p[1] << 8) + p[0]; + + printf("%04u-%02u-%02u %02u:%02u:%02u", + (da >> 9) + 1980, (da >> 5) & 15, da & 31, + (ti >> 11), (ti >> 5) & 63, (ti << 1) & 63); +} + +static void dump_coment_depfile(uint8_t type, const uint8_t *data, size_t n) +{ + if (n > 4 && data[4] == n-5) { + printf(" # "); + print_dostime(data); + printf(" %.*s\n", n-5, data+5); + } + + hexdump_data(2, data, n, n); +} + +static const dump_func dump_coment_class[256] = { + [0xe9] = dump_coment_depfile +}; + static void dump_coment(uint8_t type, const uint8_t *data, size_t n) { uint8_t class; @@ -186,7 +211,10 @@ static void dump_coment(uint8_t type, const uint8_t *data, size_t n) class, coment_class[class] ? coment_class[class] : "???"); - hexdump_data(2, data+2, n-2, n-2); + if (dump_coment_class[class]) + dump_coment_class[class](class, data+2, n-2); + else + hexdump_data(2, data+2, n-2, n-2); } /* Parse an index field */ |