| Test DWARF5 support in dsymutil. Currently this still generates an empty dSYM. |
| |
| $ cat dwarf5.c |
| __attribute__ ((optnone)) |
| int foo() { |
| volatile i; |
| return i; |
| } |
| |
| int main(int argc, char** argv) { |
| return foo(); |
| } |
| |
| $ clang -gdwarf-5 dwarf5.c -c -o dwarf5.o |
| $ clang dwarf5.o -o dwarf5.out |
| |
| RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty |
| RUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s |
| CHECK-NOT: error: |
| |
| RUN: llvm-dwarfdump %t.dSYM | FileCheck %s --check-prefix DWARF |
| DWARF: DW_TAG_compile_unit |
| DWARF: DW_AT_producer ("clang version 12.0.0 |
| DWARF: DW_AT_language (DW_LANG_C99) |
| DWARF: DW_AT_name ("dwarf5.c") |
| DWARF: DW_AT_LLVM_sysroot ("/") |
| DWARF: DW_AT_stmt_list (0x00000000) |
| DWARF: DW_AT_comp_dir ("/private/tmp/dwarf5") |
| DWARF: DW_AT_low_pc (0x0000000100003f80) |
| DWARF: DW_AT_high_pc (0x0000000100003fb1) |
| DWARF: DW_AT_addr_base (0x00000008) |
| DWARF: DW_TAG_subprogram |
| DWARF: DW_AT_name ("foo") |
| DWARF: DW_AT_decl_file (0x00) |
| DWARF: DW_AT_decl_line (2) |
| DWARF: DW_AT_type (0x00000091 "int") |
| DWARF: DW_AT_external (true) |
| DWARF: DW_TAG_variable |
| DWARF: DW_AT_name ("i") |
| DWARF: DW_AT_decl_file (0x00) |
| DWARF: DW_AT_decl_line (3) |
| DWARF: DW_AT_type (0x00000098 "volatile int") |
| DWARF: DW_TAG_subprogram |
| DWARF: DW_AT_name ("main") |
| DWARF: DW_AT_decl_file (0x00) |
| DWARF: DW_AT_decl_line (7) |
| DWARF: DW_AT_prototyped (true) |
| DWARF: DW_AT_type (0x00000091 "int") |
| DWARF: DW_AT_external (true) |
| DWARF: DW_TAG_formal_parameter |
| DWARF: DW_AT_name ("argc") |
| DWARF: DW_AT_decl_file (0x00) |
| DWARF: DW_AT_decl_line (7) |
| DWARF: DW_AT_type (0x00000091 "int") |
| DWARF: DW_TAG_formal_parameter |
| DWARF: DW_AT_name ("argv") |
| DWARF: DW_AT_decl_file (0x00) |
| DWARF: DW_AT_decl_line (7) |
| DWARF: DW_AT_type (0x0000009d "char **") |