50 static constexpr llvm::StringLiteral namespace_key(
"namespace");
51 static constexpr llvm::StringLiteral code_key(
"code");
52 static constexpr llvm::StringLiteral payload_addr_key(
"payload_addr");
53 static constexpr llvm::StringLiteral payload_size_key(
"payload_size");
54 static constexpr llvm::StringLiteral reason_key(
"reason");
55 static constexpr llvm::StringLiteral flags_key(
"flags");
56 static constexpr llvm::StringLiteral info_key(
"abort_with_payload");
61 LLDB_LOG(log,
"abort_with_payload recognizer: invalid frame.");
65 Thread *thread = frame_sp->GetThread().get();
67 LLDB_LOG(log,
"abort_with_payload recognizer: invalid thread.");
71 Process *process = thread->GetProcess().get();
73 LLDB_LOG(log,
"abort_with_payload recognizer: invalid process.");
79 LLDB_LOG(log,
"abort_with_payload recognizer: invalid scratch typesystem.");
91 Value input_value_void_ptr;
92 Value input_value_char_ptr;
119 arg_values.
PushValue(input_value_void_ptr);
121 arg_values.
PushValue(input_value_char_ptr);
125 bool success = abi_sp->GetArgumentValues(*thread, arg_values);
133 auto add_to_arguments = [&](llvm::StringRef name,
Value *value,
143 cur_valobj_sp = dyn_valobj_sp;
145 arguments_sp->Append(cur_valobj_sp);
150 uint32_t namespace_val = 0;
152 add_to_arguments(namespace_key, cur_value,
false);
155 uint32_t code_val = 0;
157 add_to_arguments(code_key, cur_value,
false);
162 add_to_arguments(payload_addr_key, cur_value,
true);
165 uint32_t payload_size = 0;
167 add_to_arguments(payload_size_key, cur_value,
false);
172 add_to_arguments(reason_key, cur_value,
false);
176 std::string reason_string;
182 reason_string =
"<error fetching reason string>";
185 uint32_t flags_val = 0;
187 add_to_arguments(flags_key, cur_value,
false);
193 abort_dict_sp->AddIntegerItem(namespace_key, namespace_val);
194 abort_dict_sp->AddIntegerItem(code_key, code_val);
195 abort_dict_sp->AddIntegerItem(payload_addr_key, payload_addr);
196 abort_dict_sp->AddIntegerItem(payload_size_key, payload_size);
197 abort_dict_sp->AddStringItem(reason_key, reason_string);
198 abort_dict_sp->AddIntegerItem(flags_key, flags_val);
void AddRecognizer(lldb::StackFrameRecognizerSP recognizer, ConstString module, llvm::ArrayRef< ConstString > symbols, Mangled::NamePreference symbol_mangling, bool first_instruction_only=true)
Add a new recognizer that triggers on a given symbol name.