summaryrefslogtreecommitdiff
path: root/lldb
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-01-10 10:23:27 +0000
committerPavel Labath <pavel@labath.sk>2019-01-10 10:23:27 +0000
commit33238b98972a120975a485205781c21dec1e0181 (patch)
tree3a1defd75903158535f9fe98057f65c808f3035b /lldb
parent1c63837b731a6a4364fdda3817210ae74acac3ae (diff)
Revert "Add a verbose mode to "image dump line-table" and use it to write a .debug_line test"
This reverts commit r350802 because the test fails on windows. This happens because we treat the paths as windows paths even though they have linux path separators in the asm file. That results in wrong paths being computed (\tmp\tmp\a.c instead of /tmp/a.c). Reverting until I can figure out what to do with this.
Diffstat (limited to 'lldb')
-rw-r--r--lldb/lit/SymbolFile/DWARF/debug-line-basic.s75
-rw-r--r--lldb/source/Commands/CommandObjectTarget.cpp48
2 files changed, 4 insertions, 119 deletions
diff --git a/lldb/lit/SymbolFile/DWARF/debug-line-basic.s b/lldb/lit/SymbolFile/DWARF/debug-line-basic.s
deleted file mode 100644
index 2c8024d08f1..00000000000
--- a/lldb/lit/SymbolFile/DWARF/debug-line-basic.s
+++ /dev/null
@@ -1,75 +0,0 @@
-# REQUIRES: lld
-
-# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj > %t.o
-# RUN: ld.lld %t.o -o %t
-# RUN: %lldb %t -o "image dump line-table -v a.c" -o exit | FileCheck %s
-
-
- .text
- .globl _start
-_start:
-# CHECK: Line table for /tmp/a.c
- .file 1 "/tmp/b.c"
- .loc 1 0 0
- nop
-# CHECK-NEXT: 0x0000000000201000: /tmp/b.c, is_start_of_statement = TRUE{{$}}
- .loc 1 1 0
- nop
-# CHECK-NEXT: 0x0000000000201001: /tmp/b.c:1, is_start_of_statement = TRUE{{$}}
- .loc 1 1 1
- nop
-# CHECK-NEXT: 0x0000000000201002: /tmp/b.c:1:1, is_start_of_statement = TRUE{{$}}
- .loc 1 2 0 is_stmt 0
- nop
-# CHECK-NEXT: 0x0000000000201003: /tmp/b.c:2{{$}}
- .loc 1 2 0 is_stmt 0 basic_block
- nop
-# CHECK-NEXT: 0x0000000000201004: /tmp/b.c:2, is_start_of_basic_block = TRUE{{$}}
- .loc 1 2 0 is_stmt 0 prologue_end
- nop
-# CHECK-NEXT: 0x0000000000201005: /tmp/b.c:2, is_prologue_end = TRUE{{$}}
- .loc 1 2 0 is_stmt 0 epilogue_begin
- nop
-# CHECK-NEXT: 0x0000000000201006: /tmp/b.c:2, is_epilogue_begin = TRUE{{$}}
- .file 2 "/tmp/c.c"
- .loc 2 1 0 is_stmt 0
- nop
-# CHECK-NEXT: 0x0000000000201007: /tmp/c.c:1{{$}}
-
-# CHECK-NEXT: 0x0000000000201008: /tmp/c.c:1, is_terminal_entry = TRUE{{$}}
-
- .section .debug_str,"MS",@progbits,1
-.Linfo_string1:
- .asciz "a.c"
-.Linfo_string2:
- .asciz "/tmp"
- .section .debug_abbrev,"",@progbits
- .byte 1 # Abbreviation Code
- .byte 17 # DW_TAG_compile_unit
- .byte 0 # DW_CHILDREN_no
- .byte 19 # DW_AT_language
- .byte 5 # DW_FORM_data2
- .byte 3 # DW_AT_name
- .byte 14 # DW_FORM_strp
- .byte 16 # DW_AT_stmt_list
- .byte 23 # DW_FORM_sec_offset
- .byte 27 # DW_AT_comp_dir
- .byte 14 # DW_FORM_strp
- .byte 0 # EOM(1)
- .byte 0 # EOM(2)
- .byte 0 # EOM(3)
- .section .debug_info,"",@progbits
-.Lcu_begin0:
- .long .Lcu_end0-.Lcu_start0 # Length of Unit
-.Lcu_start0:
- .short 4 # DWARF version number
- .long .debug_abbrev # Offset Into Abbrev. Section
- .byte 8 # Address Size (in bytes)
- .byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
- .short 12 # DW_AT_language
- .long .Linfo_string1 # DW_AT_name
- .long .Lline_table_start0 # DW_AT_stmt_list
- .long .Linfo_string2 # DW_AT_comp_dir
-.Lcu_end0:
- .section .debug_line,"",@progbits
-.Lline_table_start0:
diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp
index 8842031b6d5..4a4d0d2d609 100644
--- a/lldb/source/Commands/CommandObjectTarget.cpp
+++ b/lldb/source/Commands/CommandObjectTarget.cpp
@@ -1348,7 +1348,7 @@ static void DumpModuleUUID(Stream &strm, Module *module) {
static uint32_t DumpCompileUnitLineTable(CommandInterpreter &interpreter,
Stream &strm, Module *module,
const FileSpec &file_spec,
- lldb::DescriptionLevel desc_level) {
+ bool load_addresses) {
uint32_t num_matches = 0;
if (module) {
SymbolContextList sc_list;
@@ -1367,7 +1367,7 @@ static uint32_t DumpCompileUnitLineTable(CommandInterpreter &interpreter,
if (line_table)
line_table->GetDescription(
&strm, interpreter.GetExecutionContext().GetTargetPtr(),
- desc_level);
+ lldb::eDescriptionLevelBrief);
else
strm << "No line table";
}
@@ -2411,8 +2411,6 @@ public:
~CommandObjectTargetModulesDumpLineTable() override = default;
- Options *GetOptions() override { return &m_options; }
-
protected:
bool DoExecute(Args &command, CommandReturnObject &result) override {
Target *target = m_exe_ctx.GetTargetPtr();
@@ -2445,9 +2443,8 @@ protected:
if (DumpCompileUnitLineTable(
m_interpreter, result.GetOutputStream(),
target_modules.GetModulePointerAtIndexUnlocked(i),
- file_spec,
- m_options.m_verbose ? eDescriptionLevelFull
- : eDescriptionLevelBrief))
+ file_spec, m_exe_ctx.GetProcessPtr() &&
+ m_exe_ctx.GetProcessRef().IsAlive()))
num_dumped++;
}
if (num_dumped == 0)
@@ -2467,43 +2464,6 @@ protected:
}
return result.Succeeded();
}
-
- class CommandOptions : public Options {
- public:
- CommandOptions() : Options() { OptionParsingStarting(nullptr); }
-
- Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
- ExecutionContext *execution_context) override {
- assert(option_idx == 0 && "We only have one option.");
- m_verbose = true;
-
- return Status();
- }
-
- void OptionParsingStarting(ExecutionContext *execution_context) override {
- m_verbose = false;
- }
-
- llvm::ArrayRef<OptionDefinition> GetDefinitions() override {
- static constexpr OptionDefinition g_options[] = {
- {LLDB_OPT_SET_ALL,
- false,
- "verbose",
- 'v',
- OptionParser::eNoArgument,
- nullptr,
- {},
- 0,
- eArgTypeNone,
- "Enable verbose dump."},
- };
- return llvm::makeArrayRef(g_options);
- }
-
- bool m_verbose;
- };
-
- CommandOptions m_options;
};
#pragma mark CommandObjectTargetModulesDump