Author: Caroline Tice Date: 2021-04-15T17:17:44-07:00 New Revision: 042668d092bb585e526023027faee8d28f968a76
URL: https://github.com/llvm/llvm-project/commit/042668d092bb585e526023027faee8d28f968a76 DIFF: https://github.com/llvm/llvm-project/commit/042668d092bb585e526023027faee8d28f968a76.diff LOG: Revert "[LLDB] Use path relative to binary for finding .dwo files." This reverts commit b241f3cb292d0ba1ad5a33b3bbd4a8a3a9c909dc. Test case is breaking windows builder. Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Removed: lldb/test/Shell/SymbolFile/DWARF/dwo-relative-path.s ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index da170383405f..3a04f429c7c7 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -1651,13 +1651,6 @@ SymbolFileDWARF::GetDwoSymbolFileForCompileUnit( return nullptr; dwo_file.SetFile(comp_dir, FileSpec::Style::native); - if (dwo_file.IsRelative()) { - // if DW_AT_comp_dir is relative, it should be relative to the location - // of the executable, not to the location from which the debugger was - // launched. - dwo_file.PrependPathComponent( - m_objfile_sp->GetFileSpec().GetDirectory().GetStringRef()); - } FileSystem::Instance().Resolve(dwo_file); dwo_file.AppendPathComponent(dwo_name); } diff --git a/lldb/test/Shell/SymbolFile/DWARF/dwo-relative-path.s b/lldb/test/Shell/SymbolFile/DWARF/dwo-relative-path.s deleted file mode 100644 index cc05434261e4..000000000000 --- a/lldb/test/Shell/SymbolFile/DWARF/dwo-relative-path.s +++ /dev/null @@ -1,417 +0,0 @@ -# Test to verify LLDB searches for dwos with relative paths relative to the -# binary location, not relative to LLDB's launch location. - -# RUN: llvm-mc --filetype=obj --triple x86_64-pc-linux %s -o %t.o -# RUN: llvm-objcopy --split-dwo=%T/dwo-relative-path.dwo %t.o - -# RUN: cd ../.. - -# RUN: %lldb %t.o -o "target var x" -b 2>&1 | FileCheck %s - -# CHECK: x = 0 - - .text - .file "dwo-relative-path.cpp" - .file 0 "." "dwo-relative-path.cpp" md5 0xadc61d242247514c5d402d62db34b825 - .globl main # -- Begin function main - .p2align 4, 0x90 - .type main,@function -main: # @main -.Lfunc_begin0: - .loc 0 14 0 # dwo-relative-path.cpp:14:0 - .cfi_startproc -# %bb.0: # %entry - pushq %rbp - .cfi_def_cfa_offset 16 - .cfi_offset %rbp, -16 - movq %rsp, %rbp - .cfi_def_cfa_register %rbp - movl $0, -4(%rbp) - movl %edi, -8(%rbp) - movq %rsi, -16(%rbp) -.Ltmp0: - .loc 0 15 8 prologue_end # dwo-relative-path.cpp:15:8 - movw .L__const.main.y, %ax - movw %ax, -19(%rbp) - movb .L__const.main.y+2, %al - movb %al, -17(%rbp) - .loc 0 17 14 # dwo-relative-path.cpp:17:14 - movsbl -19(%rbp), %eax - .loc 0 17 27 is_stmt 0 # dwo-relative-path.cpp:17:27 - movsbl -18(%rbp), %ecx - .loc 0 17 19 # dwo-relative-path.cpp:17:19 - addl %ecx, %eax - .loc 0 17 5 # dwo-relative-path.cpp:17:5 - addl x, %eax - movl %eax, x - .loc 0 19 3 is_stmt 1 # dwo-relative-path.cpp:19:3 - xorl %eax, %eax - popq %rbp - .cfi_def_cfa %rsp, 8 - retq -.Ltmp1: -.Lfunc_end0: - .size main, .Lfunc_end0-main - .cfi_endproc - # -- End function - .type x,@object # @x - .data - .globl x - .p2align 2 -x: - .long 10 # 0xa - .size x, 4 - - .type .L__const.main.y,@object # @__const.main.y - .section .rodata,"a",@progbits -.L__const.main.y: - .ascii "abc" - .size .L__const.main.y, 3 - - .section .debug_abbrev,"",@progbits - .byte 1 # Abbreviation Code - .byte 74 # DW_TAG_skeleton_unit - .byte 0 # DW_CHILDREN_no - .byte 16 # DW_AT_stmt_list - .byte 23 # DW_FORM_sec_offset - .byte 114 # DW_AT_str_offsets_base - .byte 23 # DW_FORM_sec_offset - .byte 27 # DW_AT_comp_dir - .byte 37 # DW_FORM_strx1 - .ascii "\264B" # DW_AT_GNU_pubnames - .byte 25 # DW_FORM_flag_present - .byte 118 # DW_AT_dwo_name - .byte 37 # DW_FORM_strx1 - .byte 17 # DW_AT_low_pc - .byte 27 # DW_FORM_addrx - .byte 18 # DW_AT_high_pc - .byte 6 # DW_FORM_data4 - .byte 115 # DW_AT_addr_base - .byte 23 # DW_FORM_sec_offset - .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 5 # DWARF version number - .byte 4 # DWARF Unit Type - .byte 8 # Address Size (in bytes) - .long .debug_abbrev # Offset Into Abbrev. Section - .quad 3752513468363206953 - .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit - .long .Lline_table_start0 # DW_AT_stmt_list - .long .Lstr_offsets_base0 # DW_AT_str_offsets_base - .byte 0 # DW_AT_comp_dir - # DW_AT_GNU_pubnames - .byte 1 # DW_AT_dwo_name - .byte 1 # DW_AT_low_pc - .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc - .long .Laddr_table_base0 # DW_AT_addr_base -.Ldebug_info_end0: - .section .debug_str_offsets,"",@progbits - .long 12 # Length of String Offsets Set - .short 5 - .short 0 -.Lstr_offsets_base0: - .section .debug_str,"MS",@progbits,1 -.Lskel_string0: - .asciz "." # string offset=0 -.Lskel_string1: - .asciz "dwo-relative-path.dwo" # string offset=2 - .section .debug_str_offsets,"",@progbits - .long .Lskel_string0 - .long .Lskel_string1 - .section .debug_str_offsets.dwo,"e",@progbits - .long 48 # Length of String Offsets Set - .short 5 - .short 0 - .section .debug_str.dwo,"eMS",@progbits,1 -.Linfo_string0: - .asciz "x" # string offset=0 -.Linfo_string1: - .asciz "int" # string offset=2 -.Linfo_string2: - .asciz "main" # string offset=6 -.Linfo_string3: - .asciz "argc" # string offset=11 -.Linfo_string4: - .asciz "argv" # string offset=16 -.Linfo_string5: - .asciz "char" # string offset=21 -.Linfo_string6: - .asciz "y" # string offset=26 -.Linfo_string7: - .asciz "__ARRAY_SIZE_TYPE__" # string offset=28 -.Linfo_string8: - .asciz "clang version 13.0.0 (https://chromium.googlesource.com/external/github.com/llvm/llvm-project 6666e0d7a29c639df7a1652b6d3bf16f28edd45a)" # string offset=48 -.Linfo_string9: - .asciz "dwo-relative-path.cpp" # string offset=184 -.Linfo_string10: - .asciz "dwo-relative-path.dwo" # string offset=206 - .section .debug_str_offsets.dwo,"e",@progbits - .long 0 - .long 2 - .long 6 - .long 11 - .long 16 - .long 21 - .long 26 - .long 28 - .long 48 - .long 184 - .long 206 - .section .debug_info.dwo,"e",@progbits - .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit -.Ldebug_info_dwo_start0: - .short 5 # DWARF version number - .byte 5 # DWARF Unit Type - .byte 8 # Address Size (in bytes) - .long 0 # Offset Into Abbrev. Section - .quad 3752513468363206953 - .byte 1 # Abbrev [1] 0x14:0x65 DW_TAG_compile_unit - .byte 8 # DW_AT_producer - .short 33 # DW_AT_language - .byte 9 # DW_AT_name - .byte 10 # DW_AT_dwo_name - .byte 2 # Abbrev [2] 0x1a:0xb DW_TAG_variable - .byte 0 # DW_AT_name - .long 37 # DW_AT_type - # DW_AT_external - .byte 0 # DW_AT_decl_file - .byte 11 # DW_AT_decl_line - .byte 2 # DW_AT_location - .byte 161 - .byte 0 - .byte 3 # Abbrev [3] 0x25:0x4 DW_TAG_base_type - .byte 1 # DW_AT_name - .byte 5 # DW_AT_encoding - .byte 4 # DW_AT_byte_size - .byte 4 # Abbrev [4] 0x29:0x31 DW_TAG_subprogram - .byte 1 # DW_AT_low_pc - .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc - .byte 1 # DW_AT_frame_base - .byte 86 - .byte 2 # DW_AT_name - .byte 0 # DW_AT_decl_file - .byte 13 # DW_AT_decl_line - .long 37 # DW_AT_type - # DW_AT_external - .byte 5 # Abbrev [5] 0x38:0xb DW_TAG_formal_parameter - .byte 2 # DW_AT_location - .byte 145 - .byte 120 - .byte 3 # DW_AT_name - .byte 0 # DW_AT_decl_file - .byte 13 # DW_AT_decl_line - .long 37 # DW_AT_type - .byte 5 # Abbrev [5] 0x43:0xb DW_TAG_formal_parameter - .byte 2 # DW_AT_location - .byte 145 - .byte 112 - .byte 4 # DW_AT_name - .byte 0 # DW_AT_decl_file - .byte 13 # DW_AT_decl_line - .long 90 # DW_AT_type - .byte 6 # Abbrev [6] 0x4e:0xb DW_TAG_variable - .byte 2 # DW_AT_location - .byte 145 - .byte 109 - .byte 6 # DW_AT_name - .byte 0 # DW_AT_decl_file - .byte 15 # DW_AT_decl_line - .long 104 # DW_AT_type - .byte 0 # End Of Children Mark - .byte 7 # Abbrev [7] 0x5a:0x5 DW_TAG_pointer_type - .long 95 # DW_AT_type - .byte 7 # Abbrev [7] 0x5f:0x5 DW_TAG_pointer_type - .long 100 # DW_AT_type - .byte 3 # Abbrev [3] 0x64:0x4 DW_TAG_base_type - .byte 5 # DW_AT_name - .byte 6 # DW_AT_encoding - .byte 1 # DW_AT_byte_size - .byte 8 # Abbrev [8] 0x68:0xc DW_TAG_array_type - .long 100 # DW_AT_type - .byte 9 # Abbrev [9] 0x6d:0x6 DW_TAG_subrange_type - .long 116 # DW_AT_type - .byte 3 # DW_AT_count - .byte 0 # End Of Children Mark - .byte 10 # Abbrev [10] 0x74:0x4 DW_TAG_base_type - .byte 7 # DW_AT_name - .byte 8 # DW_AT_byte_size - .byte 7 # DW_AT_encoding - .byte 0 # End Of Children Mark -.Ldebug_info_dwo_end0: - .section .debug_abbrev.dwo,"e",@progbits - .byte 1 # Abbreviation Code - .byte 17 # DW_TAG_compile_unit - .byte 1 # DW_CHILDREN_yes - .byte 37 # DW_AT_producer - .byte 37 # DW_FORM_strx1 - .byte 19 # DW_AT_language - .byte 5 # DW_FORM_data2 - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 118 # DW_AT_dwo_name - .byte 37 # DW_FORM_strx1 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 2 # Abbreviation Code - .byte 52 # DW_TAG_variable - .byte 0 # DW_CHILDREN_no - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 63 # DW_AT_external - .byte 25 # DW_FORM_flag_present - .byte 58 # DW_AT_decl_file - .byte 11 # DW_FORM_data1 - .byte 59 # DW_AT_decl_line - .byte 11 # DW_FORM_data1 - .byte 2 # DW_AT_location - .byte 24 # DW_FORM_exprloc - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 3 # Abbreviation Code - .byte 36 # DW_TAG_base_type - .byte 0 # DW_CHILDREN_no - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 62 # DW_AT_encoding - .byte 11 # DW_FORM_data1 - .byte 11 # DW_AT_byte_size - .byte 11 # DW_FORM_data1 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 4 # Abbreviation Code - .byte 46 # DW_TAG_subprogram - .byte 1 # DW_CHILDREN_yes - .byte 17 # DW_AT_low_pc - .byte 27 # DW_FORM_addrx - .byte 18 # DW_AT_high_pc - .byte 6 # DW_FORM_data4 - .byte 64 # DW_AT_frame_base - .byte 24 # DW_FORM_exprloc - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 58 # DW_AT_decl_file - .byte 11 # DW_FORM_data1 - .byte 59 # DW_AT_decl_line - .byte 11 # DW_FORM_data1 - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 63 # DW_AT_external - .byte 25 # DW_FORM_flag_present - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 5 # Abbreviation Code - .byte 5 # DW_TAG_formal_parameter - .byte 0 # DW_CHILDREN_no - .byte 2 # DW_AT_location - .byte 24 # DW_FORM_exprloc - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 58 # DW_AT_decl_file - .byte 11 # DW_FORM_data1 - .byte 59 # DW_AT_decl_line - .byte 11 # DW_FORM_data1 - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 6 # Abbreviation Code - .byte 52 # DW_TAG_variable - .byte 0 # DW_CHILDREN_no - .byte 2 # DW_AT_location - .byte 24 # DW_FORM_exprloc - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 58 # DW_AT_decl_file - .byte 11 # DW_FORM_data1 - .byte 59 # DW_AT_decl_line - .byte 11 # DW_FORM_data1 - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 7 # Abbreviation Code - .byte 15 # DW_TAG_pointer_type - .byte 0 # DW_CHILDREN_no - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 8 # Abbreviation Code - .byte 1 # DW_TAG_array_type - .byte 1 # DW_CHILDREN_yes - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 9 # Abbreviation Code - .byte 33 # DW_TAG_subrange_type - .byte 0 # DW_CHILDREN_no - .byte 73 # DW_AT_type - .byte 19 # DW_FORM_ref4 - .byte 55 # DW_AT_count - .byte 11 # DW_FORM_data1 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 10 # Abbreviation Code - .byte 36 # DW_TAG_base_type - .byte 0 # DW_CHILDREN_no - .byte 3 # DW_AT_name - .byte 37 # DW_FORM_strx1 - .byte 11 # DW_AT_byte_size - .byte 11 # DW_FORM_data1 - .byte 62 # DW_AT_encoding - .byte 11 # DW_FORM_data1 - .byte 0 # EOM(1) - .byte 0 # EOM(2) - .byte 0 # EOM(3) - .section .debug_addr,"",@progbits - .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution -.Ldebug_addr_start0: - .short 5 # DWARF version number - .byte 8 # Address size - .byte 0 # Segment selector size -.Laddr_table_base0: - .quad x - .quad .Lfunc_begin0 -.Ldebug_addr_end0: - .section .debug_gnu_pubnames,"",@progbits - .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info -.LpubNames_start0: - .short 2 # DWARF Version - .long .Lcu_begin0 # Offset of Compilation Unit Info - .long 40 # Compilation Unit Length - .long 41 # DIE offset - .byte 48 # Attributes: FUNCTION, EXTERNAL - .asciz "main" # External Name - .long 26 # DIE offset - .byte 32 # Attributes: VARIABLE, EXTERNAL - .asciz "x" # External Name - .long 0 # End Mark -.LpubNames_end0: - .section .debug_gnu_pubtypes,"",@progbits - .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info -.LpubTypes_start0: - .short 2 # DWARF Version - .long .Lcu_begin0 # Offset of Compilation Unit Info - .long 40 # Compilation Unit Length - .long 37 # DIE offset - .byte 144 # Attributes: TYPE, STATIC - .asciz "int" # External Name - .long 100 # DIE offset - .byte 144 # Attributes: TYPE, STATIC - .asciz "char" # External Name - .long 0 # End Mark -.LpubTypes_end0: - .ident "clang version 13.0.0 (https://chromium.googlesource.com/external/github.com/llvm/llvm-project 6666e0d7a29c639df7a1652b6d3bf16f28edd45a)" - .section ".note.GNU-stack","",@progbits - .addrsig - .addrsig_sym x - .section .debug_line,"",@progbits -.Lline_table_start0: _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits