Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0xcb (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_v4l2_clip.c
    <16>   DW_AT_stmt_list   : 0x0
    <1a>   DW_AT_comp_dir    : (indirect string, offset: 0x124): /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: 0x15f): mpers_target_var
    <24>   DW_AT_type        : <0x31>
    <28>   DW_AT_external    : 1
    <29>   DW_AT_decl_file   : 3
    <2a>   DW_AT_decl_line   : 53
    <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: 0x1be): struct_v4l2_clip
    <3a>   DW_AT_decl_file   : 3
    <3b>   DW_AT_decl_line   : 42
 <1><3c>: Abbrev Number: 4 (DW_TAG_structure_type)
    <3d>   DW_AT_name        : (indirect string, offset: 0x1b4): v4l2_clip
    <41>   DW_AT_byte_size   : 20
    <42>   DW_AT_decl_file   : 2
    <43>   DW_AT_decl_line   : 550
 <2><45>: Abbrev Number: 5 (DW_TAG_member)
    <46>   DW_AT_name        : (indirect string, offset: 0x170): c
    <4a>   DW_AT_type        : <0x64>
    <4e>   DW_AT_decl_file   : 2
    <4f>   DW_AT_decl_line   : 551
    <51>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><54>: Abbrev Number: 5 (DW_TAG_member)
    <55>   DW_AT_name        : (indirect string, offset: 0x1af): next
    <59>   DW_AT_type        : <0xc9>
    <5d>   DW_AT_decl_file   : 2
    <5e>   DW_AT_decl_line   : 552
    <60>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
 <2><63>: Abbrev Number: 0
 <1><64>: Abbrev Number: 6 (DW_TAG_structure_type)
    <65>   DW_AT_name        : (indirect string, offset: 0x1a5): v4l2_rect
    <69>   DW_AT_byte_size   : 16
    <6a>   DW_AT_decl_file   : 2
    <6b>   DW_AT_decl_line   : 135
 <2><6c>: Abbrev Number: 7 (DW_TAG_member)
    <6d>   DW_AT_name        : (indirect string, offset: 0x172): left
    <71>   DW_AT_type        : <0xa5>
    <75>   DW_AT_decl_file   : 2
    <76>   DW_AT_decl_line   : 136
    <77>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><7a>: Abbrev Number: 7 (DW_TAG_member)
    <7b>   DW_AT_name        : (indirect string, offset: 0x181): top
    <7f>   DW_AT_type        : <0xa5>
    <83>   DW_AT_decl_file   : 2
    <84>   DW_AT_decl_line   : 137
    <85>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
 <2><88>: Abbrev Number: 7 (DW_TAG_member)
    <89>   DW_AT_name        : (indirect string, offset: 0x185): width
    <8d>   DW_AT_type        : <0xb7>
    <91>   DW_AT_decl_file   : 2
    <92>   DW_AT_decl_line   : 138
    <93>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
 <2><96>: Abbrev Number: 7 (DW_TAG_member)
    <97>   DW_AT_name        : (indirect string, offset: 0x19e): height
    <9b>   DW_AT_type        : <0xb7>
    <9f>   DW_AT_decl_file   : 2
    <a0>   DW_AT_decl_line   : 139
    <a1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
 <2><a4>: Abbrev Number: 0
 <1><a5>: Abbrev Number: 3 (DW_TAG_typedef)
    <a6>   DW_AT_type        : <0xb0>
    <aa>   DW_AT_name        : (indirect string, offset: 0x17b): __s32
    <ae>   DW_AT_decl_file   : 1
    <af>   DW_AT_decl_line   : 27
 <1><b0>: Abbrev Number: 8 (DW_TAG_base_type)
    <b1>   DW_AT_name        : (indirect string, offset: 0x177): int
    <b5>   DW_AT_encoding    : 5	(signed)
    <b6>   DW_AT_byte_size   : 4
 <1><b7>: Abbrev Number: 3 (DW_TAG_typedef)
    <b8>   DW_AT_type        : <0xc2>
    <bc>   DW_AT_name        : (indirect string, offset: 0x198): __u32
    <c0>   DW_AT_decl_file   : 1
    <c1>   DW_AT_decl_line   : 28
 <1><c2>: Abbrev Number: 8 (DW_TAG_base_type)
    <c3>   DW_AT_name        : (indirect string, offset: 0x18b): unsigned int
    <c7>   DW_AT_encoding    : 7	(unsigned)
    <c8>   DW_AT_byte_size   : 4
 <1><c9>: Abbrev Number: 9 (DW_TAG_pointer_type)
    <ca>   DW_AT_type        : <0x3c>
 <1><ce>: Abbrev Number: 0

