1 | //===-- MemoryRegionInfo.cpp ----------------------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "lldb/Target/MemoryRegionInfo.h" |
10 | |
11 | using namespace lldb_private; |
12 | |
13 | llvm::raw_ostream &lldb_private::operator<<(llvm::raw_ostream &OS, |
14 | const MemoryRegionInfo &Info) { |
15 | return OS << llvm::formatv(Fmt: "MemoryRegionInfo([{0}, {1}), {2:r}{3:w}{4:x}, " |
16 | "{5}, `{6}`, {7}, {8}, {9})" , |
17 | Vals: Info.GetRange().GetRangeBase(), |
18 | Vals: Info.GetRange().GetRangeEnd(), Vals: Info.GetReadable(), |
19 | Vals: Info.GetWritable(), Vals: Info.GetExecutable(), |
20 | Vals: Info.GetMapped(), Vals: Info.GetName(), Vals: Info.GetFlash(), |
21 | Vals: Info.GetBlocksize(), Vals: Info.GetMemoryTagged()); |
22 | } |
23 | |
24 | void llvm::format_provider<MemoryRegionInfo::OptionalBool>::format( |
25 | const MemoryRegionInfo::OptionalBool &B, raw_ostream &OS, |
26 | StringRef Options) { |
27 | assert(Options.size() <= 1); |
28 | bool Empty = Options.empty(); |
29 | switch (B) { |
30 | case lldb_private::MemoryRegionInfo::eNo: |
31 | OS << (Empty ? "no" : "-" ); |
32 | return; |
33 | case lldb_private::MemoryRegionInfo::eYes: |
34 | OS << (Empty ? "yes" : Options); |
35 | return; |
36 | case lldb_private::MemoryRegionInfo::eDontKnow: |
37 | OS << (Empty ? "don't know" : "?" ); |
38 | return; |
39 | } |
40 | } |
41 | |