2121#include " lldb/Target/StackFrame.h"
2222#include " lldb/Target/Target.h"
2323
24- static constexpr unsigned default_disasm_byte_size = 32 ;
25- static constexpr unsigned default_disasm_num_ins = 4 ;
26- static constexpr unsigned large_function_threshold = 4000 ;
24+ #define DEFAULT_DISASM_BYTE_SIZE 32
25+ #define DEFAULT_DISASM_NUM_INS 4
2726
2827using namespace lldb ;
2928using namespace lldb_private ;
@@ -144,10 +143,6 @@ Status CommandObjectDisassemble::CommandOptions::SetOptionValue(
144143 }
145144 } break ;
146145
147- case ' \x01 ' :
148- force = true ;
149- break ;
150-
151146 default :
152147 llvm_unreachable (" Unimplemented option" );
153148 }
@@ -191,7 +186,6 @@ void CommandObjectDisassemble::CommandOptions::OptionParsingStarting(
191186
192187 arch.Clear ();
193188 some_location_specified = false ;
194- force = false ;
195189}
196190
197191Status CommandObjectDisassemble::CommandOptions::OptionParsingFinished (
@@ -220,21 +214,6 @@ CommandObjectDisassemble::CommandObjectDisassemble(
220214
221215CommandObjectDisassemble::~CommandObjectDisassemble () = default ;
222216
223- llvm::Error CommandObjectDisassemble::CheckRangeSize (const AddressRange &range,
224- llvm::StringRef what) {
225- if (m_options.num_instructions > 0 || m_options.force ||
226- range.GetByteSize () < large_function_threshold)
227- return llvm::Error::success ();
228- StreamString msg;
229- msg << " Not disassembling " << what << " because it is very large " ;
230- range.Dump (&msg, &GetSelectedTarget (), Address::DumpStyleLoadAddress,
231- Address::DumpStyleFileAddress);
232- msg << " . To disassemble specify an instruction count limit, start/stop "
233- " addresses or use the --force option." ;
234- return llvm::createStringError (llvm::inconvertibleErrorCode (),
235- msg.GetString ());
236- }
237-
238217llvm::Expected<std::vector<AddressRange>>
239218CommandObjectDisassemble::GetContainingAddressRanges () {
240219 std::vector<AddressRange> ranges;
@@ -275,9 +254,6 @@ CommandObjectDisassemble::GetContainingAddressRanges() {
275254 " Could not find function bounds for address 0x%" PRIx64,
276255 m_options.symbol_containing_addr );
277256 }
278-
279- if (llvm::Error err = CheckRangeSize (ranges[0 ], " the function" ))
280- return std::move (err);
281257 return ranges;
282258}
283259
@@ -297,10 +273,8 @@ CommandObjectDisassemble::GetCurrentFunctionRanges() {
297273 else if (sc.symbol && sc.symbol ->ValueIsAddress ()) {
298274 range = {sc.symbol ->GetAddress (), sc.symbol ->GetByteSize ()};
299275 } else
300- range = {frame->GetFrameCodeAddress (), default_disasm_byte_size };
276+ range = {frame->GetFrameCodeAddress (), DEFAULT_DISASM_BYTE_SIZE };
301277
302- if (llvm::Error err = CheckRangeSize (range, " the current function" ))
303- return std::move (err);
304278 return std::vector<AddressRange>{range};
305279}
306280
@@ -324,7 +298,7 @@ CommandObjectDisassemble::GetCurrentLineRanges() {
324298}
325299
326300llvm::Expected<std::vector<AddressRange>>
327- CommandObjectDisassemble::GetNameRanges (CommandReturnObject &result ) {
301+ CommandObjectDisassemble::GetNameRanges () {
328302 ConstString name (m_options.func_name .c_str ());
329303 const bool include_symbols = true ;
330304 const bool include_inlines = true ;
@@ -335,7 +309,6 @@ CommandObjectDisassemble::GetNameRanges(CommandReturnObject &result) {
335309 name, eFunctionNameTypeAuto, include_symbols, include_inlines, sc_list);
336310
337311 std::vector<AddressRange> ranges;
338- llvm::Error range_errs = llvm::Error::success ();
339312 AddressRange range;
340313 const uint32_t scope =
341314 eSymbolContextBlock | eSymbolContextFunction | eSymbolContextSymbol;
@@ -344,21 +317,14 @@ CommandObjectDisassemble::GetNameRanges(CommandReturnObject &result) {
344317 for (uint32_t range_idx = 0 ;
345318 sc.GetAddressRange (scope, range_idx, use_inline_block_range, range);
346319 ++range_idx) {
347- if (llvm::Error err = CheckRangeSize (range, " a range" ))
348- range_errs = joinErrors (std::move (range_errs), std::move (err));
349- else
350- ranges.push_back (range);
320+ ranges.push_back (range);
351321 }
352322 }
353323 if (ranges.empty ()) {
354- if (range_errs)
355- return std::move (range_errs);
356324 return llvm::createStringError (llvm::inconvertibleErrorCode (),
357325 " Unable to find symbol with name '%s'.\n " ,
358326 name.GetCString ());
359327 }
360- if (range_errs)
361- result.AppendWarning (toString (std::move (range_errs)));
362328 return ranges;
363329}
364330
@@ -374,7 +340,7 @@ CommandObjectDisassemble::GetPCRanges() {
374340 if (m_options.num_instructions == 0 ) {
375341 // Disassembling at the PC always disassembles some number of
376342 // instructions (not the whole function).
377- m_options.num_instructions = default_disasm_num_ins ;
343+ m_options.num_instructions = DEFAULT_DISASM_NUM_INS ;
378344 }
379345 return std::vector<AddressRange>{{frame->GetFrameCodeAddress (), 0 }};
380346}
@@ -393,16 +359,15 @@ CommandObjectDisassemble::GetStartEndAddressRanges() {
393359}
394360
395361llvm::Expected<std::vector<AddressRange>>
396- CommandObjectDisassemble::GetRangesForSelectedMode (
397- CommandReturnObject &result) {
362+ CommandObjectDisassemble::GetRangesForSelectedMode () {
398363 if (m_options.symbol_containing_addr != LLDB_INVALID_ADDRESS)
399364 return CommandObjectDisassemble::GetContainingAddressRanges ();
400365 if (m_options.current_function )
401366 return CommandObjectDisassemble::GetCurrentFunctionRanges ();
402367 if (m_options.frame_line )
403368 return CommandObjectDisassemble::GetCurrentLineRanges ();
404369 if (!m_options.func_name .empty ())
405- return CommandObjectDisassemble::GetNameRanges (result );
370+ return CommandObjectDisassemble::GetNameRanges ();
406371 if (m_options.start_addr != LLDB_INVALID_ADDRESS)
407372 return CommandObjectDisassemble::GetStartEndAddressRanges ();
408373 return CommandObjectDisassemble::GetPCRanges ();
@@ -475,8 +440,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
475440 if (m_options.raw )
476441 options |= Disassembler::eOptionRawOuput;
477442
478- llvm::Expected<std::vector<AddressRange>> ranges =
479- GetRangesForSelectedMode (result);
443+ llvm::Expected<std::vector<AddressRange>> ranges = GetRangesForSelectedMode ();
480444 if (!ranges) {
481445 result.AppendError (toString (ranges.takeError ()));
482446 result.SetStatus (eReturnStatusFailed);
@@ -489,7 +453,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
489453 if (m_options.num_instructions == 0 ) {
490454 limit = {Disassembler::Limit::Bytes, cur_range.GetByteSize ()};
491455 if (limit.value == 0 )
492- limit.value = default_disasm_byte_size ;
456+ limit.value = DEFAULT_DISASM_BYTE_SIZE ;
493457 } else {
494458 limit = {Disassembler::Limit::Instructions, m_options.num_instructions };
495459 }
@@ -512,7 +476,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
512476 result.SetStatus (eReturnStatusFailed);
513477 }
514478 if (print_sc_header)
515- result.GetOutputStream () << " \n " ;
479+ result.AppendMessage ( " \n " ) ;
516480 }
517481
518482 return result.Succeeded ();
0 commit comments