summaryrefslogtreecommitdiffstats
path: root/lldb/test/Shell/SymbolFile
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-12-23 14:33:00 +0100
committerPavel Labath <pavel@labath.sk>2019-12-23 14:54:22 +0100
commit46f02fc922e053006e34d860e9efaf29c88d8ba3 (patch)
tree25a00a46f03a9d90390855f6f950f635eccf771f /lldb/test/Shell/SymbolFile
parent8d6f59b78a83489d3dacdd4db0dbf1d4213c92b7 (diff)
downloadbcm5719-llvm-46f02fc922e053006e34d860e9efaf29c88d8ba3.tar.gz
bcm5719-llvm-46f02fc922e053006e34d860e9efaf29c88d8ba3.zip
[lldb/DWARF] Fix hostname-stripping logic
This bit of code is trying to strip everything up to the first colon from all debug info paths, as dwarf2 recommends this syntax for storing the compilation host name. However, this code was too eager, and it ended up stripping the entire compilation directory, if it did not contain a forward slash (or a "x:\"). Normally this does not matter, as all absolute paths will contain one of these patterns, but this does not have to be the case in case the debug info is produced by "clang -fdebug-compilation-dir", which can end up producing a relative compilation directory with no slashes (this is one of the techniques for producing "relocatable" debug info).
Diffstat (limited to 'lldb/test/Shell/SymbolFile')
-rw-r--r--lldb/test/Shell/SymbolFile/DWARF/debug_line-relative_path.s49
1 files changed, 49 insertions, 0 deletions
diff --git a/lldb/test/Shell/SymbolFile/DWARF/debug_line-relative_path.s b/lldb/test/Shell/SymbolFile/DWARF/debug_line-relative_path.s
new file mode 100644
index 00000000000..8bbf30bfcc3
--- /dev/null
+++ b/lldb/test/Shell/SymbolFile/DWARF/debug_line-relative_path.s
@@ -0,0 +1,49 @@
+# This tests handling of debug info with fully relative paths, such as those
+# produced by "clang -fdebug-compilation-dir <something-relative>". This is one
+# of the techniques used to produce "relocatable" debug info.
+
+# REQUIRES: x86
+
+# RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux -o %t %s
+# RUN: %lldb %t -o "image dump line-table t.c" | FileCheck %s
+
+# CHECK: 0x0000000000000000: {{q[\\/]w[\\/]e[\\/]r[\\/]t}}.c:1
+
+ .text
+main:
+ .file 1 "w/e/r" "t.c"
+ .loc 1 1 0 # w/e/r/t.c:1:0
+ retq
+
+ .section .debug_abbrev,"",@progbits
+ .byte 1 # Abbreviation Code
+ .byte 17 # DW_TAG_compile_unit
+ .byte 0 # DW_CHILDREN_no
+ .byte 37 # DW_AT_producer
+ .byte 8 # DW_FORM_string
+ .byte 3 # DW_AT_name
+ .byte 8 # DW_FORM_string
+ .byte 16 # DW_AT_stmt_list
+ .byte 23 # DW_FORM_sec_offset
+ .byte 27 # DW_AT_comp_dir
+ .byte 8 # DW_FORM_string
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 0 # EOM(3)
+
+ .section .debug_info,"",@progbits
+.Lcu_begin0:
+ .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
+.Ldebug_info_start0:
+ .short 4 # DWARF version number
+ .long .debug_abbrev # Offset Into Abbrev. Section
+ .byte 8 # Address Size (in bytes)
+ .byte 1 # Abbrev [1] 0xb:0x40 DW_TAG_compile_unit
+ .asciz "Hand-written DWARF" # DW_AT_producer
+ .asciz "w/e/r/t.c" # DW_AT_name
+ .long .Lline_table_start0 # DW_AT_stmt_list
+ .asciz "q" # DW_AT_comp_dir
+.Ldebug_info_end0:
+
+ .section .debug_line,"",@progbits
+.Lline_table_start0:
OpenPOWER on IntegriCloud