llvm-project/lldb/source/Commands
Pavel Labath 8b845ac5ed Recommit "[lldb] Don't dissasemble large functions by default"
This recommits f665e80c02 which was reverted in 1cbd1b8f69 for breaking
TestFoundationDisassembly.py. The fix is to use --force in the test to avoid
bailing out on large functions.

I have also doubled the large function limit to 8000 bytes (~~ 2000 insns), as
the foundation library contains a lot of large-ish functions. The intent of this
feature is to prevent accidental disassembling of enormous (multi-megabyte)
"functions", not to get in people's way.

The original commit message follows:

If we have a binary without symbol information (and without
LC_FUNCTION_STARTS, if on a mac), then we have to resort to using
heuristics to determine the function boundaries. However, these don't
always work, and so we can easily end up thinking we have functions
which are several megabytes in size. Attempting to (accidentally)
disassemble these can take a very long time spam the terminal with
thousands of lines of disassembly.

This patch works around that problem by adding a sanity check to the
disassemble command. If we are about to disassemble a function which is
larger than a certain threshold, we will refuse to disassemble such a
function unless the user explicitly specifies the number of instructions
to disassemble, uses start/stop addresses for disassembly, or passes the
(new) --force argument.

The threshold is currently fairly aggressive (4000 bytes ~~ 1000
instructions). If needed, we can increase it, or even make it
configurable.

Differential Revision: https://reviews.llvm.org/D79789
2020-05-15 11:57:48 +02:00
..
CMakeLists.txt Remove `bugreport` command 2019-09-05 21:43:32 +00:00
CommandCompletions.cpp Complete breakpoint enable/disable/delete/modify with a list of breakpoint IDs 2020-05-11 15:21:51 +02:00
CommandObjectApropos.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectApropos.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectBreakpoint.cpp Correct the argument list of command `breakpoint read` 2020-05-15 09:00:05 +02:00
CommandObjectBreakpoint.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectBreakpointCommand.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CommandObjectBreakpointCommand.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectCommands.cpp Convert CommandObjectCommands functions to return StringRefs 2020-03-26 11:20:38 +01:00
CommandObjectCommands.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectDisassemble.cpp Recommit "[lldb] Don't dissasemble large functions by default" 2020-05-15 11:57:48 +02:00
CommandObjectDisassemble.h Recommit "[lldb] Don't dissasemble large functions by default" 2020-05-15 11:57:48 +02:00
CommandObjectExpression.cpp [lldb] Add option to retry Fix-Its multiple times to failed expressions 2020-04-06 11:25:36 +02:00
CommandObjectExpression.h [lldb] Mark expressions that couldn't be parsed or executed as failed expressions 2020-03-23 15:28:17 +01:00
CommandObjectFrame.cpp [lldb/Target] Support more than 2 symbols in StackFrameRecognizer 2020-03-18 14:15:58 +01:00
CommandObjectFrame.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectGUI.cpp Fix typo in error message 2020-05-14 07:23:59 +02:00
CommandObjectGUI.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectHelp.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CommandObjectHelp.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectLanguage.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectLanguage.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectLog.cpp [lldb] Fixing the bug that the "log timer" has no tab completion 2020-04-09 08:58:52 +02:00
CommandObjectLog.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectMemory.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectMemory.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectMultiword.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CommandObjectPlatform.cpp [lldb/Utility] Replace ProcessInstanceInfoList with std::vector. (NFCI) 2020-03-12 14:10:25 -07:00
CommandObjectPlatform.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectPlugin.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectPlugin.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectProcess.cpp [lldb/Utility] Replace ProcessInstanceInfoList with std::vector. (NFCI) 2020-03-12 14:10:25 -07:00
CommandObjectProcess.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectQuit.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectQuit.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectRegister.cpp tab completion for register read/write 2020-05-07 18:14:27 +02:00
CommandObjectRegister.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectReproducer.cpp [lldb/Reproducers] Intercept the FindProcesses API 2020-03-13 09:31:35 -07:00
CommandObjectReproducer.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectSettings.cpp Convert for loops to entry-based iteration 2020-04-02 18:56:29 +02:00
CommandObjectSettings.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectSource.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CommandObjectSource.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectStats.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectStats.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectTarget.cpp [lldb] Switch Section-dumping code to raw_ostream 2020-05-14 11:59:18 +02:00
CommandObjectTarget.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectThread.cpp Fix unused variable, format, and format string warnings. 2020-04-03 17:58:59 -07:00
CommandObjectThread.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectType.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
CommandObjectType.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectVersion.cpp [lldb][NFC] Fix all formatting errors in .cpp file headers 2020-01-24 08:52:55 +01:00
CommandObjectVersion.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectWatchpoint.cpp [lldb][NFC] Fix typo in 'watchpoint delete' error message 2020-04-07 16:11:32 +02:00
CommandObjectWatchpoint.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
CommandObjectWatchpointCommand.cpp Correct copy-pasteo in lua script language description 2020-04-02 00:12:24 -04:00
CommandObjectWatchpointCommand.h [lldb] Update header guards to be consistent and compliant with LLVM (NFC) 2020-02-17 23:15:40 -08:00
Options.td Recommit "[lldb] Don't dissasemble large functions by default" 2020-05-15 11:57:48 +02:00
OptionsBase.td [lldb] Don't dynamically allocate the posix option validator. 2019-07-26 11:46:21 +00:00