Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0xc4 (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_group_req.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   : 4
    <2a>   DW_AT_decl_line   : 37
    <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: 0x1f7): struct_group_req
    <3a>   DW_AT_decl_file   : 4
    <3b>   DW_AT_decl_line   : 33
 <1><3c>: Abbrev Number: 4 (DW_TAG_structure_type)
    <3d>   DW_AT_name        : (indirect string, offset: 0x1ed): group_req
    <41>   DW_AT_byte_size   : 132
    <42>   DW_AT_decl_file   : 2
    <43>   DW_AT_decl_line   : 151
 <2><44>: Abbrev Number: 5 (DW_TAG_member)
    <45>   DW_AT_name        : (indirect string, offset: 0x170): gr_interface
    <49>   DW_AT_type        : <0x62>
    <4d>   DW_AT_decl_file   : 2
    <4e>   DW_AT_decl_line   : 152
    <4f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><52>: Abbrev Number: 6 (DW_TAG_member)
    <53>   DW_AT_name        : (indirect string, offset: 0x190): gr_group
    <57>   DW_AT_type        : <0x74>
    <5b>   DW_AT_decl_file   : 2
    <5c>   DW_AT_decl_line   : 153
    <5d>   Unknown AT value: 88: 4
    <5e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
 <2><61>: Abbrev Number: 0
 <1><62>: Abbrev Number: 3 (DW_TAG_typedef)
    <63>   DW_AT_type        : <0x6d>
    <67>   DW_AT_name        : (indirect string, offset: 0x18a): __u32
    <6b>   DW_AT_decl_file   : 1
    <6c>   DW_AT_decl_line   : 28
 <1><6d>: Abbrev Number: 7 (DW_TAG_base_type)
    <6e>   DW_AT_name        : (indirect string, offset: 0x17d): unsigned int
    <72>   DW_AT_encoding    : 7	(unsigned)
    <73>   DW_AT_byte_size   : 4
 <1><74>: Abbrev Number: 8 (DW_TAG_structure_type)
    <75>   DW_AT_name        : (indirect string, offset: 0x1dc): sockaddr_storage
    <79>   DW_AT_byte_size   : 128
    <7a>   DW_AT_decl_file   : 3
    <7b>   DW_AT_decl_line   : 24
    <7c>   Unknown AT value: 88: 4
 <2><7d>: Abbrev Number: 5 (DW_TAG_member)
    <7e>   DW_AT_name        : (indirect string, offset: 0x199): ss_family
    <82>   DW_AT_type        : <0x9a>
    <86>   DW_AT_decl_file   : 3
    <87>   DW_AT_decl_line   : 25
    <88>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><8b>: Abbrev Number: 5 (DW_TAG_member)
    <8c>   DW_AT_name        : (indirect string, offset: 0x1c7): __data
    <90>   DW_AT_type        : <0xac>
    <94>   DW_AT_decl_file   : 3
    <95>   DW_AT_decl_line   : 26
    <96>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
 <2><99>: Abbrev Number: 0
 <1><9a>: Abbrev Number: 3 (DW_TAG_typedef)
    <9b>   DW_AT_type        : <0xa5>
    <9f>   DW_AT_name        : (indirect string, offset: 0x1b2): __kernel_sa_family_t
    <a3>   DW_AT_decl_file   : 3
    <a4>   DW_AT_decl_line   : 23
 <1><a5>: Abbrev Number: 7 (DW_TAG_base_type)
    <a6>   DW_AT_name        : (indirect string, offset: 0x1a3): unsigned short
    <aa>   DW_AT_encoding    : 7	(unsigned)
    <ab>   DW_AT_byte_size   : 2
 <1><ac>: Abbrev Number: 9 (DW_TAG_array_type)
    <ad>   DW_AT_type        : <0xb9>
 <2><b1>: Abbrev Number: 10 (DW_TAG_subrange_type)
    <b2>   DW_AT_type        : <0xc0>
    <b6>   DW_AT_lower_bound : 0
    <b7>   DW_AT_count       : 126
 <2><b8>: Abbrev Number: 0
 <1><b9>: Abbrev Number: 7 (DW_TAG_base_type)
    <ba>   DW_AT_name        : (indirect string, offset: 0x1ce): char
    <be>   DW_AT_encoding    : 8	(unsigned char)
    <bf>   DW_AT_byte_size   : 1
 <1><c0>: Abbrev Number: 11 (DW_TAG_base_type)
    <c1>   DW_AT_name        : (indirect string, offset: 0x1d3): sizetype
    <c5>   DW_AT_byte_size   : 8
    <c6>   DW_AT_encoding    : 7	(unsigned)
 <1><c7>: Abbrev Number: 0

