uint64_t Flags = S.sh_flags;
uint64_t UnknownFlags = 0;
- bool NeedsComma = false;
+ ListSeparator LS;
while (Flags) {
// Take the least significant bit as a flag.
uint64_t Flag = Flags & -Flags;
Flags -= Flag;
auto It = FlagToName.find(Flag);
- if (It != FlagToName.end()) {
- if (NeedsComma)
- OS << ", ";
- NeedsComma = true;
- OS << It->second;
- } else {
+ if (It != FlagToName.end())
+ OS << LS << It->second;
+ else
UnknownFlags |= Flag;
- }
}
auto PrintUnknownFlags = [&](uint64_t Mask, StringRef Name) {
if (!FlagsToPrint)
return;
- if (NeedsComma)
- OS << ", ";
- OS << Name << " ("
+ OS << LS << Name << " ("
<< to_string(format_hex_no_prefix(FlagsToPrint, AddrSize)) << ")";
UnknownFlags &= ~Mask;
- NeedsComma = true;
};
PrintUnknownFlags(SHF_MASKOS, "OS");