Some bit-set fields used in ELF file headers in fact contain two parts. The first one is a regular bit-field. The second one is an enumeraion. For example ELF header e_flags for MIPS target might contain the following values:
Bit-set values:
EF_MIPS_NOREORDER = 0x00000001 EF_MIPS_PIC = 0x00000002 EF_MIPS_CPIC = 0x00000004 EF_MIPS_ABI2 = 0x00000020
Enumeration:
EF_MIPS_ARCH_32 = 0x50000000 EF_MIPS_ARCH_64 = 0x60000000 EF_MIPS_ARCH_32R2 = 0x70000000 EF_MIPS_ARCH_64R2 = 0x80000000
For printing bit-sets we use the yaml::IO::bitSetCase(). It does not support bit-set/enumeration combinations and prints too many flags from an enumeration part. This patch fixes this problem. New method yaml::IO::maskedBitSetCase() handle "enumeration" part of bitset defined by provided mask.
I think it would be cleaner to add a new method:
or
rather that adding that optional parameter, because now you have to check if the mask is zero (not used) and use different bit checking.