21
21
#include " lldb/Target/StackFrame.h"
22
22
#include " lldb/Target/Target.h"
23
23
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
27
26
28
27
using namespace lldb ;
29
28
using namespace lldb_private ;
@@ -144,10 +143,6 @@ Status CommandObjectDisassemble::CommandOptions::SetOptionValue(
144
143
}
145
144
} break ;
146
145
147
- case ' \x01 ' :
148
- force = true ;
149
- break ;
150
-
151
146
default :
152
147
llvm_unreachable (" Unimplemented option" );
153
148
}
@@ -191,7 +186,6 @@ void CommandObjectDisassemble::CommandOptions::OptionParsingStarting(
191
186
192
187
arch.Clear ();
193
188
some_location_specified = false ;
194
- force = false ;
195
189
}
196
190
197
191
Status CommandObjectDisassemble::CommandOptions::OptionParsingFinished (
@@ -220,21 +214,6 @@ CommandObjectDisassemble::CommandObjectDisassemble(
220
214
221
215
CommandObjectDisassemble::~CommandObjectDisassemble () = default ;
222
216
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
-
238
217
llvm::Expected<std::vector<AddressRange>>
239
218
CommandObjectDisassemble::GetContainingAddressRanges () {
240
219
std::vector<AddressRange> ranges;
@@ -275,9 +254,6 @@ CommandObjectDisassemble::GetContainingAddressRanges() {
275
254
" Could not find function bounds for address 0x%" PRIx64,
276
255
m_options.symbol_containing_addr );
277
256
}
278
-
279
- if (llvm::Error err = CheckRangeSize (ranges[0 ], " the function" ))
280
- return std::move (err);
281
257
return ranges;
282
258
}
283
259
@@ -297,10 +273,8 @@ CommandObjectDisassemble::GetCurrentFunctionRanges() {
297
273
else if (sc.symbol && sc.symbol ->ValueIsAddress ()) {
298
274
range = {sc.symbol ->GetAddress (), sc.symbol ->GetByteSize ()};
299
275
} else
300
- range = {frame->GetFrameCodeAddress (), default_disasm_byte_size };
276
+ range = {frame->GetFrameCodeAddress (), DEFAULT_DISASM_BYTE_SIZE };
301
277
302
- if (llvm::Error err = CheckRangeSize (range, " the current function" ))
303
- return std::move (err);
304
278
return std::vector<AddressRange>{range};
305
279
}
306
280
@@ -324,7 +298,7 @@ CommandObjectDisassemble::GetCurrentLineRanges() {
324
298
}
325
299
326
300
llvm::Expected<std::vector<AddressRange>>
327
- CommandObjectDisassemble::GetNameRanges (CommandReturnObject &result ) {
301
+ CommandObjectDisassemble::GetNameRanges () {
328
302
ConstString name (m_options.func_name .c_str ());
329
303
const bool include_symbols = true ;
330
304
const bool include_inlines = true ;
@@ -335,7 +309,6 @@ CommandObjectDisassemble::GetNameRanges(CommandReturnObject &result) {
335
309
name, eFunctionNameTypeAuto, include_symbols, include_inlines, sc_list);
336
310
337
311
std::vector<AddressRange> ranges;
338
- llvm::Error range_errs = llvm::Error::success ();
339
312
AddressRange range;
340
313
const uint32_t scope =
341
314
eSymbolContextBlock | eSymbolContextFunction | eSymbolContextSymbol;
@@ -344,21 +317,14 @@ CommandObjectDisassemble::GetNameRanges(CommandReturnObject &result) {
344
317
for (uint32_t range_idx = 0 ;
345
318
sc.GetAddressRange (scope, range_idx, use_inline_block_range, range);
346
319
++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);
351
321
}
352
322
}
353
323
if (ranges.empty ()) {
354
- if (range_errs)
355
- return std::move (range_errs);
356
324
return llvm::createStringError (llvm::inconvertibleErrorCode (),
357
325
" Unable to find symbol with name '%s'.\n " ,
358
326
name.GetCString ());
359
327
}
360
- if (range_errs)
361
- result.AppendWarning (toString (std::move (range_errs)));
362
328
return ranges;
363
329
}
364
330
@@ -374,7 +340,7 @@ CommandObjectDisassemble::GetPCRanges() {
374
340
if (m_options.num_instructions == 0 ) {
375
341
// Disassembling at the PC always disassembles some number of
376
342
// instructions (not the whole function).
377
- m_options.num_instructions = default_disasm_num_ins ;
343
+ m_options.num_instructions = DEFAULT_DISASM_NUM_INS ;
378
344
}
379
345
return std::vector<AddressRange>{{frame->GetFrameCodeAddress (), 0 }};
380
346
}
@@ -393,16 +359,15 @@ CommandObjectDisassemble::GetStartEndAddressRanges() {
393
359
}
394
360
395
361
llvm::Expected<std::vector<AddressRange>>
396
- CommandObjectDisassemble::GetRangesForSelectedMode (
397
- CommandReturnObject &result) {
362
+ CommandObjectDisassemble::GetRangesForSelectedMode () {
398
363
if (m_options.symbol_containing_addr != LLDB_INVALID_ADDRESS)
399
364
return CommandObjectDisassemble::GetContainingAddressRanges ();
400
365
if (m_options.current_function )
401
366
return CommandObjectDisassemble::GetCurrentFunctionRanges ();
402
367
if (m_options.frame_line )
403
368
return CommandObjectDisassemble::GetCurrentLineRanges ();
404
369
if (!m_options.func_name .empty ())
405
- return CommandObjectDisassemble::GetNameRanges (result );
370
+ return CommandObjectDisassemble::GetNameRanges ();
406
371
if (m_options.start_addr != LLDB_INVALID_ADDRESS)
407
372
return CommandObjectDisassemble::GetStartEndAddressRanges ();
408
373
return CommandObjectDisassemble::GetPCRanges ();
@@ -475,8 +440,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
475
440
if (m_options.raw )
476
441
options |= Disassembler::eOptionRawOuput;
477
442
478
- llvm::Expected<std::vector<AddressRange>> ranges =
479
- GetRangesForSelectedMode (result);
443
+ llvm::Expected<std::vector<AddressRange>> ranges = GetRangesForSelectedMode ();
480
444
if (!ranges) {
481
445
result.AppendError (toString (ranges.takeError ()));
482
446
result.SetStatus (eReturnStatusFailed);
@@ -489,7 +453,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
489
453
if (m_options.num_instructions == 0 ) {
490
454
limit = {Disassembler::Limit::Bytes, cur_range.GetByteSize ()};
491
455
if (limit.value == 0 )
492
- limit.value = default_disasm_byte_size ;
456
+ limit.value = DEFAULT_DISASM_BYTE_SIZE ;
493
457
} else {
494
458
limit = {Disassembler::Limit::Instructions, m_options.num_instructions };
495
459
}
@@ -512,7 +476,7 @@ bool CommandObjectDisassemble::DoExecute(Args &command,
512
476
result.SetStatus (eReturnStatusFailed);
513
477
}
514
478
if (print_sc_header)
515
- result.GetOutputStream () << " \n " ;
479
+ result.AppendMessage ( " \n " ) ;
516
480
}
517
481
518
482
return result.Succeeded ();
0 commit comments