168 lines · plain
1## Test that inline function resolution works when the function has been split2## into multiple discontinuous parts (and those parts are placed in different3## sections)4 5# RUN: llvm-mc -triple x86_64-pc-linux -filetype=obj %s -o %t6# RUN: %lldb %t -o "image lookup -v -n look_me_up" -o exit | FileCheck %s7 8# CHECK: 1 match found in {{.*}}9# CHECK: Summary: {{.*}}`foo - 3 [inlined] foo_inl + 110# CHECK-NEXT: {{.*}}`foo - 411# CHECK: Blocks: id = {{.*}}, ranges = [0x00000000-0x00000004)[0x00000005-0x00000008)12# CHECK-NEXT: id = {{.*}}, ranges = [0x00000001-0x00000003)[0x00000006-0x00000007), name = "foo_inl"13 14 .text15 16 .section .text.__part1,"ax",@progbits17foo.__part.1:18 nop19.Lfoo_inl.__part.1:20 nop21 .type look_me_up,@function22look_me_up:23 nop24.Lfoo_inl.__part.1_end:25 nop26.Lfoo.__part.1_end:27 .size foo.__part.1, .Lfoo.__part.1_end-foo.__part.128 29 30bar:31 nop32.Lbar_end:33 .size bar, .Lbar_end-bar34 35 .type foo,@function36foo:37 nop38.Lfoo_inl:39 nop40.Lfoo_inl_end:41 nop42.Lfoo_end:43 .size foo, .Lfoo_end-foo44 45 .section .debug_abbrev,"",@progbits46 .byte 1 # Abbreviation Code47 .byte 17 # DW_TAG_compile_unit48 .byte 1 # DW_CHILDREN_yes49 .byte 37 # DW_AT_producer50 .byte 8 # DW_FORM_string51 .byte 19 # DW_AT_language52 .byte 5 # DW_FORM_data253 .byte 17 # DW_AT_low_pc54 .byte 1 # DW_FORM_addr55 .byte 85 # DW_AT_ranges56 .byte 35 # DW_FORM_rnglistx57 .byte 116 # DW_AT_rnglists_base58 .byte 23 # DW_FORM_sec_offset59 .byte 0 # EOM(1)60 .byte 0 # EOM(2)61 .byte 2 # Abbreviation Code62 .byte 46 # DW_TAG_subprogram63 .byte 0 # DW_CHILDREN_no64 .byte 3 # DW_AT_name65 .byte 8 # DW_FORM_string66 .byte 0 # EOM(1)67 .byte 0 # EOM(2)68 .byte 3 # Abbreviation Code69 .byte 46 # DW_TAG_subprogram70 .byte 1 # DW_CHILDREN_yes71 .byte 85 # DW_AT_ranges72 .byte 35 # DW_FORM_rnglistx73 .byte 3 # DW_AT_name74 .byte 8 # DW_FORM_string75 .byte 0 # EOM(1)76 .byte 0 # EOM(2)77 .byte 4 # Abbreviation Code78 .byte 29 # DW_TAG_inlined_subroutine79 .byte 0 # DW_CHILDREN_no80 .byte 85 # DW_AT_ranges81 .byte 35 # DW_FORM_rnglistx82 .byte 49 # DW_AT_abstract_origin83 .byte 19 # DW_FORM_ref484 .byte 0 # EOM(1)85 .byte 0 # EOM(2)86 .byte 0 # EOM(3)87 88 .section .debug_info,"",@progbits89.Lcu_begin0:90 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit91.Ldebug_info_start0:92 .short 5 # DWARF version number93 .byte 1 # DWARF Unit Type94 .byte 8 # Address Size (in bytes)95 .long .debug_abbrev # Offset Into Abbrev. Section96 .byte 1 # Abbrev DW_TAG_compile_unit97 .asciz "Hand-written DWARF" # DW_AT_producer98 .short 29 # DW_AT_language99 .quad 0 # DW_AT_low_pc100 .byte 1 # DW_AT_ranges101 .long .Lrnglists_table_base0 # DW_AT_rnglists_base102 103 .byte 3 # Abbrev DW_TAG_subprogram104 .byte 2 # DW_AT_ranges105 .asciz "bar" # DW_AT_name106 .byte 0 # End Of Children Mark107 108.Lfoo_inl_die:109 .byte 2 # Abbrev DW_TAG_subprogram110 .asciz "foo_inl" # DW_AT_name111 112 .byte 3 # Abbrev DW_TAG_subprogram113 .byte 0 # DW_AT_ranges114 .asciz "foo" # DW_AT_name115 .byte 4 # Abbrev DW_TAG_inlined_subroutine116 .byte 3 # DW_AT_ranges117 .long .Lfoo_inl_die-.Lcu_begin0 # DW_AT_abstract_origin118 .byte 0 # End Of Children Mark119 120 .byte 0 # End Of Children Mark121.Ldebug_info_end0:122 123 .section .debug_rnglists,"",@progbits124 .long .Ldebug_list_header_end0-.Ldebug_list_header_start0 # Length125.Ldebug_list_header_start0:126 .short 5 # Version127 .byte 8 # Address size128 .byte 0 # Segment selector size129 .long 4 # Offset entry count130.Lrnglists_table_base0:131 .long .Ldebug_ranges0-.Lrnglists_table_base0132 .long .Ldebug_ranges1-.Lrnglists_table_base0133 .long .Ldebug_ranges2-.Lrnglists_table_base0134 .long .Ldebug_ranges3-.Lrnglists_table_base0135.Ldebug_ranges0:136 .byte 6 # DW_RLE_start_end137 .quad foo138 .quad .Lfoo_end139 .byte 6 # DW_RLE_start_end140 .quad foo.__part.1141 .quad .Lfoo.__part.1_end142 .byte 0 # DW_RLE_end_of_list143.Ldebug_ranges1:144 .byte 6 # DW_RLE_start_end145 .quad bar146 .quad .Lbar_end147 .byte 6 # DW_RLE_start_end148 .quad foo.__part.1149 .quad .Lfoo.__part.1_end150 .byte 6 # DW_RLE_start_end151 .quad foo152 .quad .Lfoo_end153 .byte 0 # DW_RLE_end_of_list154.Ldebug_ranges2:155 .byte 6 # DW_RLE_start_end156 .quad bar157 .quad .Lbar_end158 .byte 0 # DW_RLE_end_of_list159.Ldebug_ranges3:160 .byte 6 # DW_RLE_start_end161 .quad .Lfoo_inl162 .quad .Lfoo_inl_end163 .byte 6 # DW_RLE_start_end164 .quad .Lfoo_inl.__part.1165 .quad .Lfoo_inl.__part.1_end166 .byte 0 # DW_RLE_end_of_list167.Ldebug_list_header_end0:168