Get the correct file name for inline functions.
Summary:
Here is an example for class inline member function declared and defined in the same file:
```
Definition:
0x00004c0a: DW_TAG_subprogram [55] *
DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00177124] = "_ZNK5folly10symbolizer4test24ClassWithInlineFunctions9inlineBarERNS0_10FrameArrayILm100EEE")
DW_AT_name [DW_FORM_strp] ( .debug_str[0x00089a73] = "inlineBar")
DW_AT_decl_file [DW_FORM_data1] (0x1a)
DW_AT_decl_line [DW_FORM_data1] (0xa5)
DW_AT_declaration [DW_FORM_flag_present] (true)
DW_AT_external [DW_FORM_flag_present] (true)
DW_AT_accessibility [DW_FORM_data1] (0x01)
…
Declaration: -- no DW_AT_decl_file
0x000164c1: DW_TAG_subprogram [228] *
DW_AT_specification [DW_FORM_ref4] (cu + 0x48ea => {0x00004c0a})
DW_AT_inline [DW_FORM_data1] (0x01)
DW_AT_object_pointer [DW_FORM_ref4] (cu + 0x161ac => {0x000164cc})
…
Inline function call
0x0001657b: DW_TAG_inlined_subroutine [140] *
DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x161a1 => {0x000164c1})
DW_AT_low_pc [DW_FORM_addr] (0x000000000040fa6e)
DW_AT_high_pc [DW_FORM_data4] (0x00000055)
DW_AT_call_file [DW_FORM_data1] (0x1a)
DW_AT_call_line [DW_FORM_data1] (0xe2)
```
Here is an example for class inline member function declared and defined in different files:
```
Definition: DW_AT_decl_file: 0x01 --> SymbolizerTestUtils.h
0x00004c3d: DW_TAG_subprogram [55] *
DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x0017717f] = "_ZNK5folly10symbolizer4test22InlineFunctionsWrapper9inlineBarERNS0_10FrameArrayILm100EEE")
DW_AT_name [DW_FORM_strp] ( .debug_str[0x00089a73] = "inlineBar")
DW_AT_decl_file [DW_FORM_data1] (0x01)
DW_AT_decl_line [DW_FORM_data1] (0x30)
DW_AT_declaration [DW_FORM_flag_present] (true)
DW_AT_external [DW_FORM_flag_present] (true)
DW_AT_accessibility [DW_FORM_data1] (0x01)
…
Declaration: DW_AT_decl_file: 0xbf --> SymbolizerTestUtils-inl.h
0x00017ee8: DW_TAG_subprogram [231] *
DW_AT_decl_file [DW_FORM_data1] (0xbf)
DW_AT_decl_line [DW_FORM_data1] (0x21)
DW_AT_specification [DW_FORM_ref4] (cu + 0x491d => {0x00004c3d})
DW_AT_inline [DW_FORM_data1] (0x01)
DW_AT_object_pointer [DW_FORM_ref4] (cu + 0x17bd5 => {0x00017ef5})
…
Inline function call
0x00017fa5: DW_TAG_inlined_subroutine [158] *
DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x17bc8 => {0x00017ee8})
DW_AT_low_pc [DW_FORM_addr] (0x00000000004104ee)
DW_AT_high_pc [DW_FORM_data4] (0x00000055)
DW_AT_call_file [DW_FORM_data1] (0x1a)
DW_AT_call_line [DW_FORM_data2] (0x0101)
```
Reviewed By: luciang
Differential Revision: D19444082
fbshipit-source-id: 5a552404609073af04b0cc0b86b5e19d5149a1e1
Showing
Please register or sign in to comment