diff options
author | Paul Robinson <paul.robinson@sony.com> | 2018-03-27 22:40:34 +0000 |
---|---|---|
committer | Paul Robinson <paul.robinson@sony.com> | 2018-03-27 22:40:34 +0000 |
commit | 07480bd17760c76fa6d51c4dfc3337247beda6de (patch) | |
tree | 90b9e07b451e8189cd79834b2f7e8cc89e54114e /llvm/test | |
parent | 2519ee70810c561ce40e5e4e57a9c083d30faf67 (diff) | |
download | bcm5719-llvm-07480bd17760c76fa6d51c4dfc3337247beda6de.tar.gz bcm5719-llvm-07480bd17760c76fa6d51c4dfc3337247beda6de.zip |
Reapply "[DWARFv5] Emit file 0 to the line table."
DWARF v5 specifies that the root file (also given in the DW_AT_name
attribute of the compilation unit DIE) should be emitted explicitly to
the line table's list of files. This makes the line table more
independent of the .debug_info section.
Fixes the bug found by asan. Also XFAIL the new test for Darwin, which
is stuck on DWARF v2, and fix up other tests so they stop failing on
Windows. Last but not least, don't break "clang -g" of an assembler
file that has .file directives in it.
Differential Revision: https://reviews.llvm.org/D44054
llvm-svn: 328676
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/Generic/dwarf-md5.ll | 35 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/dwarf-source.ll | 39 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/dbg-file-name.ll | 2 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/inline-asm-locs.ll | 2 | ||||
-rw-r--r-- | llvm/test/MC/ARM/dwarf-asm-multiple-sections.s | 4 | ||||
-rw-r--r-- | llvm/test/MC/ELF/debug-file-options.s | 13 | ||||
-rw-r--r-- | llvm/test/MC/ELF/debug-md5.s | 12 | ||||
-rw-r--r-- | llvm/test/MC/ELF/debug-source.s | 12 | ||||
-rw-r--r-- | llvm/test/MC/ELF/dwarf-file0.s | 19 |
9 files changed, 84 insertions, 54 deletions
diff --git a/llvm/test/CodeGen/Generic/dwarf-md5.ll b/llvm/test/CodeGen/Generic/dwarf-md5.ll index b9977200de1..09b901efaf7 100644 --- a/llvm/test/CodeGen/Generic/dwarf-md5.ll +++ b/llvm/test/CodeGen/Generic/dwarf-md5.ll @@ -8,28 +8,25 @@ ; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM ; RUN: %llc_dwarf -dwarf-version 5 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM ; RUN: %llc_dwarf -dwarf-version 4 -filetype=obj -o %t4.o %s -; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ-4 +; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ ; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s -; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefix=OBJ-5 +; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefixes=OBJ,OBJ-5 -; FIXME: Need to convey the MD5 for the primary source file. -; ASM: .file 1 ".{{/|\\\\}}t1.h" md5 "11111111111111111111111111111111" -; ASM: .file 2 ".{{/|\\\\}}t2.h" md5 "22222222222222222222222222222222" - -; OBJ-4: file_names[ 1]: -; OBJ-4-NEXT: name: "t1.h" -; OBJ-4-NEXT: dir_index: 1 -; OBJ-4: file_names[ 2]: -; OBJ-4-NEXT: name: "t2.h" -; OBJ-4-NEXT: dir_index: 1 +; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" md5 "00000000000000000000000000000000" +; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" md5 "11111111111111111111111111111111" +; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" md5 "22222222222222222222222222222222" ; OBJ-5: file_names[ 0]: -; OBJ-5-NEXT: name: "t1.h" -; OBJ-5-NEXT: dir_index: 1 +; OBJ-5-NEXT: name: "t.c" +; OBJ-5-NEXT: dir_index: 0 +; OBJ-5-NEXT: md5_checksum: 00000000000000000000000000000000 +; OBJ: file_names[ 1]: +; OBJ-NEXT: name: "t1.h" +; OBJ-NEXT: dir_index: 0 ; OBJ-5-NEXT: md5_checksum: 11111111111111111111111111111111 -; OBJ-5: file_names[ 1]: -; OBJ-5-NEXT: name: "t2.h" -; OBJ-5-NEXT: dir_index: 1 +; OBJ: file_names[ 2]: +; OBJ-NEXT: name: "t2.h" +; OBJ-NEXT: dir_index: 0 ; OBJ-5-NEXT: md5_checksum: 22222222222222222222222222222222 ; ModuleID = 't.c' @@ -50,9 +47,9 @@ source_filename = "t.c" !5 = !{!0, !6} !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) !7 = distinct !DIGlobalVariable(name: "t2", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true) -!8 = !DIFile(filename: "./t2.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "22222222222222222222222222222222") +!8 = !DIFile(filename: "t2.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "22222222222222222222222222222222") !9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!10 = !DIFile(filename: "./t1.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "11111111111111111111111111111111") +!10 = !DIFile(filename: "t1.h", directory: "/home/probinson/projects/scratch", checksumkind: CSK_MD5, checksum: "11111111111111111111111111111111") !11 = !{i32 2, !"Dwarf Version", i32 4} !12 = !{i32 2, !"Debug Info Version", i32 3} !13 = !{i32 1, !"wchar_size", i32 4} diff --git a/llvm/test/CodeGen/Generic/dwarf-source.ll b/llvm/test/CodeGen/Generic/dwarf-source.ll index 9c34fc5285b..e59193d0d8a 100644 --- a/llvm/test/CodeGen/Generic/dwarf-source.ll +++ b/llvm/test/CodeGen/Generic/dwarf-source.ll @@ -8,30 +8,27 @@ ; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM ; RUN: %llc_dwarf -dwarf-version 5 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM ; RUN: %llc_dwarf -dwarf-version 4 -filetype=obj -o %t4.o %s -; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefix=OBJ-4 +; RUN: llvm-dwarfdump -debug-line %t4.o | FileCheck %s --check-prefixes=OBJ,OBJ-4 ; RUN: %llc_dwarf -dwarf-version 5 -filetype=obj -o %t5.o %s -; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefix=OBJ-5 +; RUN: llvm-dwarfdump -debug-line %t5.o | FileCheck %s --check-prefixes=OBJ,OBJ-5 -; FIXME: Need to convey the source for the primary source file. -; ASM: .file 1 ".{{/|\\\\}}t1.h" source "11111111111111111111111111111111" -; ASM: .file 2 ".{{/|\\\\}}t2.h" source "22222222222222222222222222222222" - -; OBJ-4: file_names[ 1]: -; OBJ-4-NEXT: name: "t1.h" -; OBJ-4-NEXT: dir_index: 1 -; OBJ-4-NOT: 11111111111111111111111111111111 -; OBJ-4: file_names[ 2]: -; OBJ-4-NEXT: name: "t2.h" -; OBJ-4-NEXT: dir_index: 1 -; OBJ-4-NOT: 22222222222222222222222222222222 +; ASM: .file 0 "[[COMPDIR:.*]]{{[/\\]}}t.c" source "00000000000000000000000000000000" +; ASM: .file 1 "[[COMPDIR]]{{[/\\]}}t1.h" source "11111111111111111111111111111111" +; ASM: .file 2 "[[COMPDIR]]{{[/\\]}}t2.h" source "22222222222222222222222222222222" ; OBJ-5: file_names[ 0]: -; OBJ-5-NEXT: name: "t1.h" -; OBJ-5-NEXT: dir_index: 1 +; OBJ-5-NEXT: name: "t.c" +; OBJ-5-NEXT: dir_index: 0 +; OBJ-5-NEXT: source: "00000000000000000000000000000000" +; OBJ: file_names[ 1]: +; OBJ-NEXT: name: "t1.h" +; OBJ-NEXT: dir_index: 0 +; OBJ-4-NOT: 11111111111111111111111111111111 ; OBJ-5-NEXT: source: "11111111111111111111111111111111" -; OBJ-5: file_names[ 1]: -; OBJ-5-NEXT: name: "t2.h" -; OBJ-5-NEXT: dir_index: 1 +; OBJ: file_names[ 2]: +; OBJ-NEXT: name: "t2.h" +; OBJ-NEXT: dir_index: 0 +; OBJ-4-NOT: 22222222222222222222222222222222 ; OBJ-5-NEXT: source: "22222222222222222222222222222222" ; ModuleID = 't.c' @@ -52,9 +49,9 @@ source_filename = "t.c" !5 = !{!0, !6} !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) !7 = distinct !DIGlobalVariable(name: "t2", scope: !2, file: !8, line: 1, type: !9, isLocal: false, isDefinition: true) -!8 = !DIFile(filename: "./t2.h", directory: "/test", source: "22222222222222222222222222222222") +!8 = !DIFile(filename: "t2.h", directory: "/test", source: "22222222222222222222222222222222") !9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!10 = !DIFile(filename: "./t1.h", directory: "/test", source: "11111111111111111111111111111111") +!10 = !DIFile(filename: "t1.h", directory: "/test", source: "11111111111111111111111111111111") !11 = !{i32 2, !"Dwarf Version", i32 4} !12 = !{i32 2, !"Debug Info Version", i32 3} !13 = !{i32 1, !"wchar_size", i32 4} diff --git a/llvm/test/DebugInfo/X86/dbg-file-name.ll b/llvm/test/DebugInfo/X86/dbg-file-name.ll index 251952df191..633b9c069c5 100644 --- a/llvm/test/DebugInfo/X86/dbg-file-name.ll +++ b/llvm/test/DebugInfo/X86/dbg-file-name.ll @@ -2,7 +2,7 @@ ; Verify that the file name is relative to the directory. ; rdar://problem/8884898 -; CHECK: file 1 "simple.c" +; CHECK: file 1 "/Users/manav/one/two" "simple.c" declare i32 @printf(i8*, ...) nounwind diff --git a/llvm/test/DebugInfo/X86/inline-asm-locs.ll b/llvm/test/DebugInfo/X86/inline-asm-locs.ll index 632aa0be623..5412c7f4133 100644 --- a/llvm/test/DebugInfo/X86/inline-asm-locs.ll +++ b/llvm/test/DebugInfo/X86/inline-asm-locs.ll @@ -22,7 +22,7 @@ ; CHECK: .file 2 "B.asm" ; CHECK: .loc 1 111 ; CHECK: .loc 2 222 -; CHECK: .file 3 "test.c" +; CHECK: .file 3 "{{.*[/\\]}}test.c" ; CHECK: .loc 3 14 0 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" diff --git a/llvm/test/MC/ARM/dwarf-asm-multiple-sections.s b/llvm/test/MC/ARM/dwarf-asm-multiple-sections.s index 4c099acccd5..cff8f000731 100644 --- a/llvm/test/MC/ARM/dwarf-asm-multiple-sections.s +++ b/llvm/test/MC/ARM/dwarf-asm-multiple-sections.s @@ -54,9 +54,9 @@ b: // DWARF-DL: .debug_line contents: // DWARF-DL: version: [[DWVER]] // DWARF-DL-5: address_size: 4 -// DWARF-DL-5: include_directories[ 0] = "" +// DWARF-DL-5: include_directories[ 0] = "/tmp" // DWARF-DL: file_names[ [[DWFILE]]]: -// DWARF-DL: name: "<stdin>" +// DWARF-DL: name: "{{(<stdin>|-)}}" // DWARF-DL: 0x0000000000000000 17 0 1 0 0 is_stmt // DWARF-DL-NEXT: 0x0000000000000004 17 0 1 0 0 is_stmt end_sequence // DWARF-DL-NEXT: 0x0000000000000000 21 0 1 0 0 is_stmt diff --git a/llvm/test/MC/ELF/debug-file-options.s b/llvm/test/MC/ELF/debug-file-options.s index 3bcd131cc38..5c77a48ab72 100644 --- a/llvm/test/MC/ELF/debug-file-options.s +++ b/llvm/test/MC/ELF/debug-file-options.s @@ -11,25 +11,32 @@ # CHECK: debug_line[0x00000000] # CHECK: version: 5 -# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "" +# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "{{.+}}" # CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1" # CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2" # CHECK-NOT: include_directories # CHECK: file_names[ 0]: +# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "{{.+}}" +# CHECK-NEXT: dir_index: 0 +# CHECK-NEXT: md5_checksum: +# CHECK-NEXT: source: .debug_line_str[0x[[FILE0SRC:[0-9a-f]+]]] = "" +# CHECK: file_names[ 1]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo" # CHECK-NEXT: dir_index: 1 # CHECK-NEXT: md5_checksum: ee87e05688663173cd6043a3a15bba6e # CHECK-NEXT: source: .debug_line_str[0x[[FILE1SRC:[0-9a-f]+]]] = "void foo() {}" -# CHECK: file_names[ 1]: +# CHECK: file_names[ 2]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar" # CHECK-NEXT: dir_index: 2 # CHECK-NEXT: md5_checksum: 816225a0c90ca8948b70eb58be4d522f # CHECK-NEXT: source: .debug_line_str[0x[[FILE2SRC:[0-9a-f]+]]] = "void bar() {}" # CHECK: .debug_line_str contents: -# CHECK-NEXT: 0x[[DIR0]]: "" +# CHECK-NEXT: 0x[[DIR0]]: "{{.+}}" # CHECK-NEXT: 0x[[DIR1]]: "dir1" # CHECK-NEXT: 0x[[DIR2]]: "dir2" +# CHECK-NEXT: 0x[[FILE0]]: "{{.+}}" +# CHECK-NEXT: 0x[[FILE0SRC]]: "" # CHECK-NEXT: 0x[[FILE1]]: "foo" # CHECK-NEXT: 0x[[FILE1SRC]]: "void foo() {}" # CHECK-NEXT: 0x[[FILE2]]: "bar" diff --git a/llvm/test/MC/ELF/debug-md5.s b/llvm/test/MC/ELF/debug-md5.s index f8f3bc1a362..658e02e5917 100644 --- a/llvm/test/MC/ELF/debug-md5.s +++ b/llvm/test/MC/ELF/debug-md5.s @@ -1,4 +1,4 @@ -// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -filetype=obj %s -o - | llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s +// RUN: llvm-mc -triple x86_64-unknown-unknown -dwarf-version 5 -fdebug-compilation-dir=/tmp -filetype=obj %s -o - | llvm-dwarfdump --debug-line --debug-line-str -v - | FileCheck %s .file 1 "dir1/foo" md5 "00112233445566778899aabbccddeeff" .file 2 "dir2" "bar" md5 "ffeeddccbbaa99887766554433221100" @@ -9,22 +9,26 @@ # CHECK: debug_line[0x00000000] # CHECK: version: 5 -# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "" +# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "/tmp" # CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1" # CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2" # CHECK-NOT: include_directories # CHECK: file_names[ 0]: +# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "{{.+}}" +# CHECK-NEXT: dir_index: 0 +# CHECK: file_names[ 1]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo" # CHECK-NEXT: dir_index: 1 # CHECK-NEXT: md5_checksum: 00112233445566778899aabbccddeeff -# CHECK: file_names[ 1]: +# CHECK: file_names[ 2]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar" # CHECK-NEXT: dir_index: 2 # CHECK-NEXT: md5_checksum: ffeeddccbbaa99887766554433221100 # CHECK: .debug_line_str contents: -# CHECK-NEXT: 0x[[DIR0]]: "" +# CHECK-NEXT: 0x[[DIR0]]: "/tmp" # CHECK-NEXT: 0x[[DIR1]]: "dir1" # CHECK-NEXT: 0x[[DIR2]]: "dir2" +# CHECK-NEXT: 0x[[FILE0]]: "{{.+}}" # CHECK-NEXT: 0x[[FILE1]]: "foo" # CHECK-NEXT: 0x[[FILE2]]: "bar" diff --git a/llvm/test/MC/ELF/debug-source.s b/llvm/test/MC/ELF/debug-source.s index 0b919e15ddb..1cf39c7a9d2 100644 --- a/llvm/test/MC/ELF/debug-source.s +++ b/llvm/test/MC/ELF/debug-source.s @@ -9,23 +9,29 @@ # CHECK: debug_line[0x00000000] # CHECK: version: 5 -# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "" +# CHECK: include_directories[ 0] = .debug_line_str[0x[[DIR0:[0-9a-f]+]]] = "{{.+}}" # CHECK: include_directories[ 1] = .debug_line_str[0x[[DIR1:[0-9a-f]+]]] = "dir1" # CHECK: include_directories[ 2] = .debug_line_str[0x[[DIR2:[0-9a-f]+]]] = "dir2" # CHECK-NOT: include_directories # CHECK: file_names[ 0]: +# CHECK-NEXT: name: .debug_line_str[0x[[FILE0:[0-9a-f]+]]] = "{{.+}}" +# CHECK-NEXT: dir_index: 0 +# CHECK-NEXT: source: .debug_line_str[0x[[FILE0SRC:[0-9a-f]+]]] = "" +# CHECK: file_names[ 1]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE1:[0-9a-f]+]]] = "foo" # CHECK-NEXT: dir_index: 1 # CHECK-NEXT: source: .debug_line_str[0x[[FILE1SRC:[0-9a-f]+]]] = "void foo() {}" -# CHECK: file_names[ 1]: +# CHECK: file_names[ 2]: # CHECK-NEXT: name: .debug_line_str[0x[[FILE2:[0-9a-f]+]]] = "bar" # CHECK-NEXT: dir_index: 2 # CHECK-NEXT: source: .debug_line_str[0x[[FILE2SRC:[0-9a-f]+]]] = "void bar()\n{\n}" # CHECK: .debug_line_str contents: -# CHECK-NEXT: 0x[[DIR0]]: "" +# CHECK-NEXT: 0x[[DIR0]]: "{{.+}}" # CHECK-NEXT: 0x[[DIR1]]: "dir1" # CHECK-NEXT: 0x[[DIR2]]: "dir2" +# CHECK-NEXT: 0x[[FILE0]]: "{{.+}}" +# CHECK-NEXT: 0x[[FILE0SRC]]: "" # CHECK-NEXT: 0x[[FILE1]]: "foo" # CHECK-NEXT: 0x[[FILE1SRC]]: "void foo() {}" # CHECK-NEXT: 0x[[FILE2]]: "bar" diff --git a/llvm/test/MC/ELF/dwarf-file0.s b/llvm/test/MC/ELF/dwarf-file0.s new file mode 100644 index 00000000000..ae87df2a3f0 --- /dev/null +++ b/llvm/test/MC/ELF/dwarf-file0.s @@ -0,0 +1,19 @@ +# RUN: llvm-mc -dwarf-version 4 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK,CHECK-4 +# RUN: llvm-mc -dwarf-version 5 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK,CHECK-5 +# Darwin is stuck on DWARF v2. +# XFAIL: darwin + .file 0 "root.cpp" + .file 1 "header.h" + .file 2 "root.cpp" +# CHECK-5: include_directories[ 0] = "" +# CHECK-4-NOT: include_directories +# CHECK-4-NOT: file_names[ 0] +# CHECK-5: file_names[ 0]: +# CHECK-5-NEXT: name: "root.cpp" +# CHECK-5-NEXT: dir_index: 0 +# CHECK: file_names[ 1]: +# CHECK-NEXT: name: "header.h" +# CHECK-NEXT: dir_index: 0 +# CHECK: file_names[ 2]: +# CHECK-NEXT: name: "root.cpp" +# CHECK-NEXT: dir_index: 0 |