151 lines · plain
1## Check that llvm-dwarfdump works when dumping .o files with .dwo files.2 3# RUN: mkdir -p %t.dir4# RUN: yaml2obj %p/Inputs/dump_dwo.o.yaml -o %t.dir/dump_dwo.o5# RUN: yaml2obj %p/Inputs/dump_dwo.dwo.yaml -o %t.dir/dump_dwo.dwo6## We need to be in the same directory so we can find .dwo file7# RUN: cd %t.dir8# RUN: llvm-dwarfdump --dwo dump_dwo.o | FileCheck %s9# RUN: llvm-dwarfdump --dwo --name int --name char dump_dwo.o | FileCheck %s --check-prefix=NAMES10# RUN: llvm-dwarfdump --name int --name char dump_dwo.o | FileCheck %s --check-prefix=NAMES_NO_DWO11# RUN: llvm-dwarfdump --dwo --lookup 0x10 dump_dwo.o | FileCheck %s --check-prefix=LOOKUP12# RUN: llvm-dwarfdump --lookup 0x10 dump_dwo.o | FileCheck %s --check-prefix=LOOKUP_NO_DWO13 14 15## Make sure if we dump dump_dwo.o with the --dwo option that we see the16## contents of the dump_dwo.o _and_ the dump_dwo.dwo file.17 18# CHECK: .debug_info contents:19# CHECK: 0x00000000: Compile Unit: length = 0x00000024, format = DWARF32, version = 0x0005, unit_type = DW_UT_skeleton, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = 0x376dd35da7c3c136 (next unit at 0x00000028)20 21# CHECK: 0x00000014: DW_TAG_skeleton_unit22# CHECK: DW_AT_stmt_list (0x00000000)23# CHECK: DW_AT_str_offsets_base (0x00000008)24# CHECK: DW_AT_comp_dir ("./")25# CHECK: DW_AT_GNU_pubnames (true)26# CHECK: DW_AT_dwo_name ("./dump_dwo.dwo")27# CHECK: DW_AT_low_pc (0x0000000000000000)28# CHECK: DW_AT_high_pc (0x0000000000000033)29# CHECK: DW_AT_addr_base (0x00000008)30 31# CHECK: 0x00000014: DW_TAG_compile_unit32# CHECK: DW_AT_producer ("Apple clang version 15.0.0 (clang-1500.1.0.2.5)")33# CHECK: DW_AT_language (DW_LANG_C_plus_plus)34# CHECK: DW_AT_name ("dump_dwo.cpp")35# CHECK: DW_AT_dwo_name ("./dump_dwo.dwo")36 37# CHECK: 0x0000001a: DW_TAG_subprogram38# CHECK: DW_AT_low_pc (0x0000000000000000)39# CHECK: DW_AT_high_pc (0x0000000000000008)40# CHECK: DW_AT_frame_base (DW_OP_reg641# CHECK: DW_AT_linkage_name ("_Z3foov")42# CHECK: DW_AT_name ("foo")43# CHECK: DW_AT_decl_file (0x00)44# CHECK: DW_AT_decl_line (2)45# CHECK: DW_AT_type (0x00000050 "int")46# CHECK: DW_AT_external (true)47 48# CHECK: 0x0000002a: DW_TAG_subprogram49# CHECK: DW_AT_low_pc (0x0000000000000010)50# CHECK: DW_AT_high_pc (0x0000000000000033)51# CHECK: DW_AT_frame_base (DW_OP_reg652# CHECK: DW_AT_name ("main")53# CHECK: DW_AT_decl_file (0x00)54# CHECK: DW_AT_decl_line (6)55# CHECK: DW_AT_type (0x00000050 "int")56# CHECK: DW_AT_external (true)57 58# CHECK: 0x00000039: DW_TAG_formal_parameter59# CHECK: DW_AT_location (DW_OP_fbreg -8)60# CHECK: DW_AT_name ("argc")61# CHECK: DW_AT_decl_file (0x00)62# CHECK: DW_AT_decl_line (6)63# CHECK: DW_AT_type (0x00000050 "int")64 65# CHECK: 0x00000044: DW_TAG_formal_parameter66# CHECK: DW_AT_location (DW_OP_fbreg -16)67# CHECK: DW_AT_name ("argv")68# CHECK: DW_AT_decl_file (0x00)69# CHECK: DW_AT_decl_line (6)70# CHECK: DW_AT_type (0x00000054 "const char **")71 72# CHECK: 0x0000004f: NULL73 74# CHECK: 0x00000050: DW_TAG_base_type75# CHECK: DW_AT_name ("int")76# CHECK: DW_AT_encoding (DW_ATE_signed)77# CHECK: DW_AT_byte_size (0x04)78 79# CHECK: 0x00000054: DW_TAG_pointer_type80# CHECK: DW_AT_type (0x00000059 "const char *")81 82# CHECK: 0x00000059: DW_TAG_pointer_type83# CHECK: DW_AT_type (0x0000005e "const char")84 85# CHECK: 0x0000005e: DW_TAG_const_type86# CHECK: DW_AT_type (0x00000063 "char")87 88# CHECK: 0x00000063: DW_TAG_base_type89# CHECK: DW_AT_name ("char")90# CHECK: DW_AT_encoding (DW_ATE_signed_char)91# CHECK: DW_AT_byte_size (0x01)92 93# CHECK: 0x00000067: NULL94 95 96## Make sure that if we do specify the --dwo when using --name that we get97## the expected results form the .dwo file98 99# NAMES: 0x00000050: DW_TAG_base_type100# NAMES: DW_AT_name ("int")101# NAMES: DW_AT_encoding (DW_ATE_signed)102# NAMES: DW_AT_byte_size (0x04)103 104# NAMES: 0x00000063: DW_TAG_base_type105# NAMES: DW_AT_name ("char")106# NAMES: DW_AT_encoding (DW_ATE_signed_char)107# NAMES: DW_AT_byte_size (0x01)108 109## Make sure that if we don't specify the --dwo when using --name that we get110## no results111 112# NAMES_NO_DWO-NOT: 0x00000050: DW_TAG_base_type113# NAMES_NO_DWO-NOT: 0x00000063: DW_TAG_base_type114 115## Make sure address lookups succeed when using the --dwo option and the116## --lookup option. Verify that we see the information from the .dwo file which117## means "unit_type = DW_UT_split_compile" and that we see a DW_TAG_compile_unit118# LOOKUP: 0x00000000: Compile Unit: length = 0x00000064, format = DWARF32, version = 0x0005, unit_type = DW_UT_split_compile, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = 0x376dd35da7c3c136 (next unit at 0x00000068)119 120# LOOKUP: 0x00000014: DW_TAG_compile_unit121# LOOKUP: DW_AT_producer ("Apple clang version 15.0.0 (clang-1500.1.0.2.5)")122# LOOKUP: DW_AT_language (DW_LANG_C_plus_plus)123# LOOKUP: DW_AT_name ("dump_dwo.cpp")124# LOOKUP: DW_AT_dwo_name ("./dump_dwo.dwo")125 126# LOOKUP: 0x0000002a: DW_TAG_subprogram127# LOOKUP: DW_AT_low_pc (0x0000000000000010)128# LOOKUP: DW_AT_high_pc (0x0000000000000033)129# LOOKUP: DW_AT_frame_base (DW_OP_reg6130# LOOKUP: DW_AT_name ("main")131# LOOKUP: DW_AT_decl_file (0x00)132# LOOKUP: DW_AT_decl_line (6)133# LOOKUP: DW_AT_type (0x00000050 "int")134# LOOKUP: DW_AT_external (true)135 136## Make sure address lookups succeed when not using the --dwo option and the137## --lookup option. Verify that we see the information from the .o file which138## Means "unit_type = DW_UT_skeleton" and that we see a DW_TAG_skeleton_unit139 140# LOOKUP_NO_DWO: 0x00000000: Compile Unit: length = 0x00000024, format = DWARF32, version = 0x0005, unit_type = DW_UT_skeleton, abbr_offset = 0x0000, addr_size = 0x08, DWO_id = 0x376dd35da7c3c136 (next unit at 0x00000028)141 142# LOOKUP_NO_DWO: 0x00000014: DW_TAG_skeleton_unit143# LOOKUP_NO_DWO: DW_AT_stmt_list (0x00000000)144# LOOKUP_NO_DWO: DW_AT_str_offsets_base (0x00000008)145# LOOKUP_NO_DWO: DW_AT_comp_dir ("./")146# LOOKUP_NO_DWO: DW_AT_GNU_pubnames (true)147# LOOKUP_NO_DWO: DW_AT_dwo_name ("./dump_dwo.dwo")148# LOOKUP_NO_DWO: DW_AT_low_pc (0x0000000000000000)149# LOOKUP_NO_DWO: DW_AT_high_pc (0x0000000000000033)150# LOOKUP_NO_DWO: DW_AT_addr_base (0x00000008)151