brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · c5f22a2 Raw
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