| # RUN: yaml2obj --docnum=1 %s -o %t.name.o |
| # RUN: llvm-dwarfdump --show-sources %t.name.o | \ |
| # RUN: FileCheck --check-prefix=CU-NAME --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # CU-NAME: first.c |
| # CU-NAME-NEXT: second.c |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| debug_info: |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: first.c |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: second.c |
| |
| # RUN: yaml2obj --docnum=2 %s -o %t.comp-dir.o |
| # RUN: llvm-dwarfdump --show-sources %t.comp-dir.o 2>&1 | \ |
| # RUN: FileCheck -DFILE=%t.comp-dir.o --check-prefix=CU-COMP-DIR \ |
| # RUN: --match-full-lines --implicit-check-not={{.}} %s |
| |
| # CU-COMP-DIR: warning: [[FILE]]: missing name for compilation unit |
| # CU-COMP-DIR-NEXT: warning: [[FILE]]: missing name for compilation unit |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| debug_info: |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: /comp/first |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: /comp/second |
| |
| # RUN: yaml2obj --docnum=3 \ |
| # RUN: -DFIRST_NAME=first.c -DFIRST_COMP_DIR=/comp/first \ |
| # RUN: -DSECOND_NAME=second.c -DSECOND_COMP_DIR=/comp/second \ |
| # RUN: -o %t.comp-dir-rel-name.o %s |
| # RUN: llvm-dwarfdump --show-sources %t.comp-dir-rel-name.o | \ |
| # RUN: FileCheck --check-prefix=CU-COMP-DIR-REL-NAME --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # CU-COMP-DIR-REL-NAME: /comp/first[[SEP:[/\\]]]first.c |
| # CU-COMP-DIR-REL-NAME-NEXT: /comp/second[[SEP]]second.c |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_string |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| debug_info: |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: [[FIRST_NAME]] |
| - CStr: [[FIRST_COMP_DIR]] |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: [[SECOND_NAME]] |
| - CStr: [[SECOND_COMP_DIR]] |
| |
| # RUN: yaml2obj --docnum=3 -o %t.comp-dir-abs-name-posix.o \ |
| # RUN: -DFIRST_NAME=/abs/first.c -DFIRST_COMP_DIR=/comp/dir \ |
| # RUN: -DSECOND_NAME=/abs/second.c -DSECOND_COMP_DIR=/comp/dir \ |
| # RUN: %s |
| # RUN: llvm-dwarfdump --show-sources %t.comp-dir-abs-name-posix.o | \ |
| # RUN: FileCheck --check-prefix=CU-COMP-DIR-ABS-NAME-POSIX \ |
| # RUN: --match-full-lines --implicit-check-not={{.}} %s |
| |
| # CU-COMP-DIR-ABS-NAME-POSIX: /abs/first.c |
| # CU-COMP-DIR-ABS-NAME-POSIX-NEXT: /abs/second.c |
| |
| # RUN: yaml2obj --docnum=3 -o %t.comp-dir-abs-name-windows.o \ |
| # RUN: -DFIRST_NAME='C:\abs\first.c' -DFIRST_COMP_DIR='C:\comp\dir' \ |
| # RUN: -DSECOND_NAME='C:\abs\second.c' -DSECOND_COMP_DIR='C:\comp\dir' \ |
| # RUN: %s |
| # RUN: llvm-dwarfdump --show-sources %t.comp-dir-abs-name-windows.o | \ |
| # RUN: FileCheck --check-prefix=CU-COMP-DIR-ABS-NAME-WINDOWS \ |
| # RUN: --match-full-lines --implicit-check-not={{.}} %s |
| |
| # CU-COMP-DIR-ABS-NAME-WINDOWS: C:\abs\first.c |
| # CU-COMP-DIR-ABS-NAME-WINDOWS-NEXT: C:\abs\second.c |
| |
| # RUN: yaml2obj --docnum=4 %s -o %t.line-table-abs.o |
| # RUN: llvm-dwarfdump --show-sources %t.line-table-abs.o | \ |
| # RUN: FileCheck --check-prefix=LINE-TABLE-ABS --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # LINE-TABLE-ABS: /comp/first[[SEP:[/\\]]]first.c |
| # LINE-TABLE-ABS-NEXT: /comp/second[[SEP]]second.c |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_line: |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| IncludeDirs: [/comp/first] |
| Files: |
| - Name: first.c |
| DirIdx: 1 |
| ModTime: 0 |
| Length: 0 |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| IncludeDirs: [/comp/second] |
| Files: |
| - Name: second.c |
| DirIdx: 1 |
| ModTime: 0 |
| Length: 0 |
| |
| # RUN: yaml2obj --docnum=5 %s -o %t.line-table-rel.o |
| # RUN: llvm-dwarfdump --show-sources %t.line-table-rel.o | \ |
| # RUN: FileCheck --check-prefix=LINE-TABLE-REL --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # LINE-TABLE-REL: first.c |
| # LINE-TABLE-REL-NEXT: second.c |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_line: |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| Files: |
| - Name: first.c |
| DirIdx: 0 |
| ModTime: 0 |
| Length: 0 |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| Files: |
| - Name: second.c |
| DirIdx: 0 |
| ModTime: 0 |
| Length: 0 |
| |
| # RUN: yaml2obj --docnum=6 %s -o %t.cu-line-table.o |
| # RUN: llvm-dwarfdump --show-sources %t.cu-line-table.o | \ |
| # RUN: FileCheck --check-prefix=CU-LINE-TABLE --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # CU-LINE-TABLE: /first[[SEP:[/\\]]]first[[SEP]]first.c |
| # CU-LINE-TABLE-NEXT: /second[[SEP]]second[[SEP]]second.c |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_abbrev: |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| - Attribute: DW_AT_stmt_list |
| Form: DW_FORM_sec_offset |
| - Table: |
| - Code: 1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_no |
| Attributes: |
| - Attribute: DW_AT_comp_dir |
| Form: DW_FORM_string |
| - Attribute: DW_AT_stmt_list |
| Form: DW_FORM_sec_offset |
| debug_info: |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: /first |
| - Value: 0 |
| - Version: 4 |
| Entries: |
| - AbbrCode: 1 |
| Values: |
| - CStr: /second |
| - Value: 0x23 |
| debug_line: |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| IncludeDirs: [first] |
| Files: |
| - Name: first.c |
| DirIdx: 1 |
| ModTime: 0 |
| Length: 0 |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| IncludeDirs: [second] |
| Files: |
| - Name: second.c |
| DirIdx: 1 |
| ModTime: 0 |
| Length: 0 |
| |
| # RUN: llvm-dwarfdump --show-sources %t.line-table-rel.o %t.cu-line-table.o | \ |
| # RUN: FileCheck --check-prefix=MULTIPLE-FILES --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # MULTIPLE-FILES: first.c |
| # MULTIPLE-FILES-NEXT: second.c |
| # MULTIPLE-FILES-NEXT: /first[[SEP:[/\\]]]first[[SEP]]first.c |
| # MULTIPLE-FILES-NEXT: /second[[SEP]]second[[SEP]]second.c |
| |
| # RUN: yaml2obj --docnum=7 %s -o %t.no-filenames.o |
| # RUN: llvm-dwarfdump --show-sources %t.no-filenames.o | count 0 |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_X86_64 |
| DWARF: |
| debug_line: |
| - Version: 4 |
| MinInstLength: 1 |
| MaxOpsPerInst: 1 |
| DefaultIsStmt: 1 |
| LineBase: 0 |
| LineRange: 0 |
| OpcodeBase: 1 |
| IncludeDirs: [] |
| |
| # TODO: Use yaml2obj for this test once it supports DWARFv5 line tables. |
| # RUN: echo '.file 0 "/dir" "dwarfv5.c"' | \ |
| # RUN: llvm-mc -g -dwarf-version=5 -triple x86_64-pc-linux -filetype=obj \ |
| # RUN: -o %t.dwarfv5.o |
| # RUN: llvm-dwarfdump --show-sources %t.dwarfv5.o | \ |
| # RUN: FileCheck --check-prefix=DWARFV5 --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # DWARFV5: /dir{{[/\\]}}dwarfv5.c |
| |
| # RUN: llvm-mc -triple x86_64-pc-linux %S/Inputs/debug_line_malformed.s \ |
| # RUN: -filetype=obj -o %t.malformed.o |
| # RUN: not llvm-dwarfdump --show-sources %t.malformed.o 2>&1 | \ |
| # RUN: FileCheck --check-prefix=MALFORMED --match-full-lines \ |
| # RUN: --implicit-check-not={{.}} %s |
| |
| # MALFORMED: error: parsing line table prologue at offset 0x00000048: unsupported version 0 |