Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0xb2 (32-bit)
   Version:       2
   Abbrev Offset: 0x0
   Pointer Size:  4
 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <c>   DW_AT_producer    : (indirect string, offset: 0x0): Android (4691093 based on r316199) clang version 6.0.2 (https://android.googlesource.com/toolchain/clang 183abd29fc496f55536e7d904e0abae47888fc7f) (https://android.googlesource.com/toolchain/llvm 34361f192e41ed6e4e8f9aca80a4ea7e9856f327) (based on LLVM 6.0.2svn)
    <10>   DW_AT_language    : 12	(ANSI C99)
    <12>   DW_AT_name        : (indirect string, offset: 0x107): mpers-m32/struct_rtc_pll_info.c
    <16>   DW_AT_stmt_list   : 0x0
    <1a>   DW_AT_comp_dir    : (indirect string, offset: 0x127): /usr/local/google/ndkports/.out/strace/package/strace-4.23
    <1e>   DW_AT_GNU_pubnames: 1
 <1><1f>: Abbrev Number: 2 (DW_TAG_variable)
    <20>   DW_AT_name        : (indirect string, offset: 0x162): mpers_target_var
    <24>   DW_AT_type        : <0x31>
    <28>   DW_AT_external    : 1
    <29>   DW_AT_decl_file   : 2
    <2a>   DW_AT_decl_line   : 38
    <2b>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
 <1><31>: Abbrev Number: 3 (DW_TAG_typedef)
    <32>   DW_AT_type        : <0x3c>
    <36>   DW_AT_name        : (indirect string, offset: 0x1d2): struct_rtc_pll_info
    <3a>   DW_AT_decl_file   : 2
    <3b>   DW_AT_decl_line   : 36
 <1><3c>: Abbrev Number: 4 (DW_TAG_structure_type)
    <3d>   DW_AT_name        : (indirect string, offset: 0x1c5): rtc_pll_info
    <41>   DW_AT_byte_size   : 28
    <42>   DW_AT_decl_file   : 1
    <43>   DW_AT_decl_line   : 37
 <2><44>: Abbrev Number: 5 (DW_TAG_member)
    <45>   DW_AT_name        : (indirect string, offset: 0x173): pll_ctrl
    <49>   DW_AT_type        : <0xa7>
    <4d>   DW_AT_decl_file   : 1
    <4e>   DW_AT_decl_line   : 38
    <4f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><52>: Abbrev Number: 5 (DW_TAG_member)
    <53>   DW_AT_name        : (indirect string, offset: 0x180): pll_value
    <57>   DW_AT_type        : <0xa7>
    <5b>   DW_AT_decl_file   : 1
    <5c>   DW_AT_decl_line   : 39
    <5d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
 <2><60>: Abbrev Number: 5 (DW_TAG_member)
    <61>   DW_AT_name        : (indirect string, offset: 0x18a): pll_max
    <65>   DW_AT_type        : <0xa7>
    <69>   DW_AT_decl_file   : 1
    <6a>   DW_AT_decl_line   : 40
    <6b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
 <2><6e>: Abbrev Number: 5 (DW_TAG_member)
    <6f>   DW_AT_name        : (indirect string, offset: 0x192): pll_min
    <73>   DW_AT_type        : <0xa7>
    <77>   DW_AT_decl_file   : 1
    <78>   DW_AT_decl_line   : 41
    <79>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
 <2><7c>: Abbrev Number: 5 (DW_TAG_member)
    <7d>   DW_AT_name        : (indirect string, offset: 0x19a): pll_posmult
    <81>   DW_AT_type        : <0xa7>
    <85>   DW_AT_decl_file   : 1
    <86>   DW_AT_decl_line   : 42
    <87>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
 <2><8a>: Abbrev Number: 5 (DW_TAG_member)
    <8b>   DW_AT_name        : (indirect string, offset: 0x1a6): pll_negmult
    <8f>   DW_AT_type        : <0xa7>
    <93>   DW_AT_decl_file   : 1
    <94>   DW_AT_decl_line   : 43
    <95>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
 <2><98>: Abbrev Number: 5 (DW_TAG_member)
    <99>   DW_AT_name        : (indirect string, offset: 0x1b2): pll_clock
    <9d>   DW_AT_type        : <0xae>
    <a1>   DW_AT_decl_file   : 1
    <a2>   DW_AT_decl_line   : 44
    <a3>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
 <2><a6>: Abbrev Number: 0
 <1><a7>: Abbrev Number: 6 (DW_TAG_base_type)
    <a8>   DW_AT_name        : (indirect string, offset: 0x17c): int
    <ac>   DW_AT_encoding    : 5	(signed)
    <ad>   DW_AT_byte_size   : 4
 <1><ae>: Abbrev Number: 6 (DW_TAG_base_type)
    <af>   DW_AT_name        : (indirect string, offset: 0x1bc): long int
    <b3>   DW_AT_encoding    : 5	(signed)
    <b4>   DW_AT_byte_size   : 4
 <1><b5>: Abbrev Number: 0

