- Prevent dumping of characters in DumpDataExtractor() with item_byte_size bigger than 8 bytes. This case is not supported by the code and results in a crash because the code calls DataExtractor::GetMaxU64Bitfield() -> GetMaxU64() that asserts for byte size > 8 bytes.
- Teach DataExtractor::GetMaxU64(), GetMaxU32() and GetMaxS64() how to handle byte sizes that are not a multiple of 2. This allows DumpDataExtractor() to dump characters and booleans with item_byte_size in the interval of [1, 8] bytes. Values that are not a multiple of 2 would previously result in a crash because they were not handled by GetMaxU64().
Examples of two commands that previously resulted in a crash when debugging an AArch64 target, and their new behaviour:
(lldb) register read --format character v0 v0 = error: unsupported byte size (16) for char format (lldb) memory read --format boolean --size 7 $sp 0x7ffffffd70: false 0x7ffffffd77: false [...]
Should this consume the weird input we couldn't print? I actually don't have a good feel for which would be better.