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 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 34 llvm::ArrayRef<OptionDefinition> OptionGroupMemoryTag::GetDefinitions() { 35 return llvm::ArrayRef(m_option_definition); 36 } 37 38 Status 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 57 void OptionGroupMemoryTag::OptionParsingStarting( 58 ExecutionContext *execution_context) { 59 m_show_tags.Clear(); 60 } 61