llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: David Spickett (DavidSpickett) <details> <summary>Changes</summary> Due to some faulty logic, if you ran "memory region --all" twice, the second time lldb would try to repeat the command. There's nothing to repeat, so it failed with an error. I've fixed the logic so that we treat each --all use as its own command starting from scratch. For reasons unknown, I could not reproduce this issue using the API test TestMemoryRegion.py. So I have added a shell test that I confirmed does fail without this fix. --- Full diff: https://github.com/llvm/llvm-project/pull/177176.diff 2 Files Affected: - (modified) lldb/source/Commands/CommandObjectMemory.cpp (+11-10) - (added) lldb/test/Shell/Commands/command-memory-region.test (+10) ``````````diff diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index 5786e757ef7ea..cbfd7180f99f6 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -1752,16 +1752,17 @@ class CommandObjectMemoryRegion : public CommandObjectParsed { return; } } else if (argc > 1 || - // When we're repeating the command, the previous end address is - // used for load_addr. If that was 0xF...F then we must have - // reached the end of memory. - (argc == 0 && !m_memory_region_options.m_all && - load_addr == LLDB_INVALID_ADDRESS) || - // If the target has non-address bits (tags, limited virtual - // address size, etc.), the end of mappable memory will be lower - // than that. So if we find any non-address bit set, we must be - // at the end of the mappable range. - (abi && (abi->FixAnyAddress(load_addr) != load_addr))) { + (!m_memory_region_options.m_all && + ( + // When we're repeating the command, the previous end + // address is used for load_addr. If that was 0xF...F then + // we must have reached the end of memory. + (argc == 0 && load_addr == LLDB_INVALID_ADDRESS) || + // If the target has non-address bits (tags, limited virtual + // address size, etc.), the end of mappable memory will be + // lower than that. So if we find any non-address bit set, + // we must be at the end of the mappable range. + (abi && (abi->FixAnyAddress(load_addr) != load_addr))))) { result.AppendErrorWithFormat( "'%s' takes one argument or \"--all\" option:\nUsage: %s\n", m_cmd_name.c_str(), m_cmd_syntax.c_str()); diff --git a/lldb/test/Shell/Commands/command-memory-region.test b/lldb/test/Shell/Commands/command-memory-region.test new file mode 100644 index 0000000000000..35fb7b08cb666 --- /dev/null +++ b/lldb/test/Shell/Commands/command-memory-region.test @@ -0,0 +1,10 @@ +## --all should be able to be used many times in a row. As it is not +## repeatable and starts fresh each time. + +# RUN: %clang_host -g -O0 %S/Inputs/main.c -o %t.out +# RUN: %lldb %t.out -b -o 'b main' -o 'run' -o 'memory region --all' \ +# RUN: -o 'memory region --all' | FileCheck %s +# CHECK-LABEL: memory region --all +# CHECK-NEXT: [0x{{[0-9a-f]+}}-0x{{[0-9a-f]+}}) +# CHECK-LABEL: memory region --all +# CHECK-NEXT: [0x{{[0-9a-f]+}}-0x{{[0-9a-f]+}}) `````````` </details> https://github.com/llvm/llvm-project/pull/177176 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
