1 //===-- OptionGroupMemoryTag.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/Interpreter/OptionGroupMemoryTag.h"
10
11 #include "lldb/Host/OptionParser.h"
12
13 using namespace lldb;
14 using namespace lldb_private;
15
16 static const uint32_t SHORT_OPTION_SHOW_TAGS = 0x54414753; // 'tags'
17
OptionGroupMemoryTag(bool note_binary)18 OptionGroupMemoryTag::OptionGroupMemoryTag(bool note_binary /*=false*/)
19 : m_show_tags(false, false), m_option_definition{
20 LLDB_OPT_SET_1,
21 false,
22 "show-tags",
23 SHORT_OPTION_SHOW_TAGS,
24 OptionParser::eNoArgument,
25 nullptr,
26 {},
27 0,
28 eArgTypeNone,
29 note_binary
30 ? "Include memory tags in output "
31 "(does not apply to binary output)."
32 : "Include memory tags in output."} {}
33
GetDefinitions()34 llvm::ArrayRef<OptionDefinition> OptionGroupMemoryTag::GetDefinitions() {
35 return llvm::ArrayRef(m_option_definition);
36 }
37
38 Status
SetOptionValue(uint32_t option_idx,llvm::StringRef option_arg,ExecutionContext * execution_context)39 OptionGroupMemoryTag::SetOptionValue(uint32_t option_idx,
40 llvm::StringRef option_arg,
41 ExecutionContext *execution_context) {
42 assert(option_idx == 0 && "Only one option in memory tag group!");
43
44 switch (m_option_definition.short_option) {
45 case SHORT_OPTION_SHOW_TAGS:
46 m_show_tags.SetCurrentValue(true);
47 m_show_tags.SetOptionWasSet();
48 break;
49
50 default:
51 llvm_unreachable("Unimplemented option");
52 }
53
54 return {};
55 }
56
OptionParsingStarting(ExecutionContext * execution_context)57 void OptionGroupMemoryTag::OptionParsingStarting(
58 ExecutionContext *execution_context) {
59 m_show_tags.Clear();
60 }
61