Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x154 (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_statfs64.c
    <16>   DW_AT_stmt_list   : 0x0
    <1a>   DW_AT_comp_dir    : (indirect string, offset: 0x123): /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: 0x15e): 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 8 0 0 0 	(DW_OP_addr: 8)
 <1><31>: Abbrev Number: 3 (DW_TAG_typedef)
    <32>   DW_AT_type        : <0x3c>
    <36>   DW_AT_name        : (indirect string, offset: 0x232): struct_statfs64
    <3a>   DW_AT_decl_file   : 4
    <3b>   DW_AT_decl_line   : 35
 <1><3c>: Abbrev Number: 4 (DW_TAG_structure_type)
    <3d>   DW_AT_name        : (indirect string, offset: 0x229): statfs64
    <41>   DW_AT_byte_size   : 88
    <42>   DW_AT_decl_file   : 2
    <43>   DW_AT_decl_line   : 46
 <2><44>: Abbrev Number: 5 (DW_TAG_member)
    <45>   DW_AT_name        : (indirect string, offset: 0x16f): f_type
    <49>   DW_AT_type        : <0xed>
    <4d>   DW_AT_decl_file   : 2
    <4e>   DW_AT_decl_line   : 47
    <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: 0x18f): f_bsize
    <57>   DW_AT_type        : <0xed>
    <5b>   DW_AT_decl_file   : 2
    <5c>   DW_AT_decl_line   : 48
    <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: 0x197): f_blocks
    <65>   DW_AT_type        : <0xff>
    <69>   DW_AT_decl_file   : 2
    <6a>   DW_AT_decl_line   : 49
    <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: 0x1bd): f_bfree
    <73>   DW_AT_type        : <0xff>
    <77>   DW_AT_decl_file   : 2
    <78>   DW_AT_decl_line   : 50
    <79>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
 <2><7c>: Abbrev Number: 5 (DW_TAG_member)
    <7d>   DW_AT_name        : (indirect string, offset: 0x1c5): f_bavail
    <81>   DW_AT_type        : <0xff>
    <85>   DW_AT_decl_file   : 2
    <86>   DW_AT_decl_line   : 51
    <87>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
 <2><8a>: Abbrev Number: 5 (DW_TAG_member)
    <8b>   DW_AT_name        : (indirect string, offset: 0x1ce): f_files
    <8f>   DW_AT_type        : <0xff>
    <93>   DW_AT_decl_file   : 2
    <94>   DW_AT_decl_line   : 52
    <95>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
 <2><98>: Abbrev Number: 5 (DW_TAG_member)
    <99>   DW_AT_name        : (indirect string, offset: 0x1d6): f_ffree
    <9d>   DW_AT_type        : <0xff>
    <a1>   DW_AT_decl_file   : 2
    <a2>   DW_AT_decl_line   : 53
    <a3>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
 <2><a6>: Abbrev Number: 5 (DW_TAG_member)
    <a7>   DW_AT_name        : (indirect string, offset: 0x1de): f_fsid
    <ab>   DW_AT_type        : <0x111>
    <af>   DW_AT_decl_file   : 2
    <b0>   DW_AT_decl_line   : 54
    <b1>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
 <2><b4>: Abbrev Number: 5 (DW_TAG_member)
    <b5>   DW_AT_name        : (indirect string, offset: 0x206): f_namelen
    <b9>   DW_AT_type        : <0xed>
    <bd>   DW_AT_decl_file   : 2
    <be>   DW_AT_decl_line   : 55
    <bf>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
 <2><c2>: Abbrev Number: 5 (DW_TAG_member)
    <c3>   DW_AT_name        : (indirect string, offset: 0x210): f_frsize
    <c7>   DW_AT_type        : <0xed>
    <cb>   DW_AT_decl_file   : 2
    <cc>   DW_AT_decl_line   : 56
    <cd>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
 <2><d0>: Abbrev Number: 5 (DW_TAG_member)
    <d1>   DW_AT_name        : (indirect string, offset: 0x219): f_flags
    <d5>   DW_AT_type        : <0xed>
    <d9>   DW_AT_decl_file   : 2
    <da>   DW_AT_decl_line   : 57
    <db>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
 <2><de>: Abbrev Number: 5 (DW_TAG_member)
    <df>   DW_AT_name        : (indirect string, offset: 0x221): f_spare
    <e3>   DW_AT_type        : <0x14a>
    <e7>   DW_AT_decl_file   : 2
    <e8>   DW_AT_decl_line   : 58
    <e9>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
 <2><ec>: Abbrev Number: 0
 <1><ed>: Abbrev Number: 3 (DW_TAG_typedef)
    <ee>   DW_AT_type        : <0xf8>
    <f2>   DW_AT_name        : (indirect string, offset: 0x17f): __kernel_long_t
    <f6>   DW_AT_decl_file   : 1
    <f7>   DW_AT_decl_line   : 23
 <1><f8>: Abbrev Number: 6 (DW_TAG_base_type)
    <f9>   DW_AT_name        : (indirect string, offset: 0x176): long int
    <fd>   DW_AT_encoding    : 5	(signed)
    <fe>   DW_AT_byte_size   : 4
 <1><ff>: Abbrev Number: 3 (DW_TAG_typedef)
    <100>   DW_AT_type        : <0x10a>
    <104>   DW_AT_name        : (indirect string, offset: 0x1b7): __u64
    <108>   DW_AT_decl_file   : 3
    <109>   DW_AT_decl_line   : 31
 <1><10a>: Abbrev Number: 6 (DW_TAG_base_type)
    <10b>   DW_AT_name        : (indirect string, offset: 0x1a0): long long unsigned int
    <10f>   DW_AT_encoding    : 7	(unsigned)
    <110>   DW_AT_byte_size   : 8
 <1><111>: Abbrev Number: 3 (DW_TAG_typedef)
    <112>   DW_AT_type        : <0x11c>
    <116>   DW_AT_name        : (indirect string, offset: 0x1f6): __kernel_fsid_t
    <11a>   DW_AT_decl_file   : 1
    <11b>   DW_AT_decl_line   : 73
 <1><11c>: Abbrev Number: 7 (DW_TAG_structure_type)
    <11d>   DW_AT_byte_size   : 8
    <11e>   DW_AT_decl_file   : 1
    <11f>   DW_AT_decl_line   : 71
 <2><120>: Abbrev Number: 5 (DW_TAG_member)
    <121>   DW_AT_name        : (indirect string, offset: 0x1e5): val
    <125>   DW_AT_type        : <0x12f>
    <129>   DW_AT_decl_file   : 1
    <12a>   DW_AT_decl_line   : 72
    <12b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><12e>: Abbrev Number: 0
 <1><12f>: Abbrev Number: 8 (DW_TAG_array_type)
    <130>   DW_AT_type        : <0x13c>
 <2><134>: Abbrev Number: 9 (DW_TAG_subrange_type)
    <135>   DW_AT_type        : <0x143>
    <139>   DW_AT_lower_bound : 0
    <13a>   DW_AT_count       : 2
 <2><13b>: Abbrev Number: 0
 <1><13c>: Abbrev Number: 6 (DW_TAG_base_type)
    <13d>   DW_AT_name        : (indirect string, offset: 0x1e9): int
    <141>   DW_AT_encoding    : 5	(signed)
    <142>   DW_AT_byte_size   : 4
 <1><143>: Abbrev Number: 10 (DW_TAG_base_type)
    <144>   DW_AT_name        : (indirect string, offset: 0x1ed): sizetype
    <148>   DW_AT_byte_size   : 8
    <149>   DW_AT_encoding    : 7	(unsigned)
 <1><14a>: Abbrev Number: 8 (DW_TAG_array_type)
    <14b>   DW_AT_type        : <0xed>
 <2><14f>: Abbrev Number: 9 (DW_TAG_subrange_type)
    <150>   DW_AT_type        : <0x143>
    <154>   DW_AT_lower_bound : 0
    <155>   DW_AT_count       : 4
 <2><156>: Abbrev Number: 0
 <1><157>: Abbrev Number: 0

