Previously, calling raw_data_dump() with e.g. len 4 on 64bit systems would dump 8 bytes anyway, making it hard to tell what one wants to see. For example, with task_struct.rt_priority a uint32. before patch: crash> struct -r task_struct.rt_priority ffff8d9b36186180 ffff8d9b361861dc: 9741dec000000063 c.....A. after patch: crash-patched> struct -r task_struct.rt_priority ffff8d9b36186180 ffff8d9b361861dc: 00000063 c... --- Here's the promised follow-up. Two remarks: - I wasn't sure about an explicit DISPLAY_64 flag, but if we're 32bit and want to print 8 bytes it is just as likely to be two entities than a single one so it makes more sense to leave default to me. - I wasn't sure on what to do if someone wants to print some odd size, e.g. 6 bits? Should that be DISPLAY_8 anyway? I tried on some bitmap and it looks like raw_data_dump is called with 8 anyway even if the bitmap part is less than 8, I'm not sure this can ever be called with weird values, so probably best left as is. Thanks! memory.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/memory.c b/memory.c index 4f7b6a0..ccc2944 100644 --- a/memory.c +++ b/memory.c @@ -2113,6 +2113,7 @@ raw_data_dump(ulong addr, long count, int symbolic) long wordcnt; ulonglong address; int memtype; + ulong flags = HEXADECIMAL; switch (sizeof(long)) { @@ -2132,6 +2133,22 @@ raw_data_dump(ulong addr, long count, int symbolic) break; } + switch (count) + { + case SIZEOF_8BIT: + flags |= DISPLAY_8; + break; + case SIZEOF_16BIT: + flags |= DISPLAY_16; + break; + case SIZEOF_32BIT: + flags |= DISPLAY_32; + break; + default: + flags |= DISPLAY_DEFAULT; + break; + } + if (pc->curcmd_flags & MEMTYPE_FILEADDR) { address = pc->curcmd_private; memtype = FILEADDR; @@ -2144,7 +2161,7 @@ raw_data_dump(ulong addr, long count, int symbolic) } display_memory(address, wordcnt, - HEXADECIMAL|DISPLAY_DEFAULT|(symbolic ? SYMBOLIC : ASCII_ENDLINE), + flags|(symbolic ? SYMBOLIC : ASCII_ENDLINE), memtype, NULL); } -- 2.26.0 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility