Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0xc2 (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 clang version 5.0.300080  (based on LLVM 5.0.300080)
    <10>   DW_AT_language    : 12	(ANSI C99)
    <12>   DW_AT_name        : (indirect string, offset: 0x3d): mpers-m32/struct_blkpg_partition.c
    <16>   DW_AT_stmt_list   : 0x0
    <1a>   DW_AT_comp_dir    : (indirect string, offset: 0x60): /usr/local/google/ndkports/.out/strace/package/strace-4.22
 <1><1e>: Abbrev Number: 2 (DW_TAG_variable)
    <1f>   DW_AT_name        : (indirect string, offset: 0x9b): mpers_target_var
    <23>   DW_AT_type        : <0x30>
    <27>   DW_AT_external    : 1
    <28>   DW_AT_decl_file   : 2
    <29>   DW_AT_decl_line   : 65
    <2a>   DW_AT_location    : 5 byte block: 3 8 0 0 0 	(DW_OP_addr: 8)
 <1><30>: Abbrev Number: 3 (DW_TAG_typedef)
    <31>   DW_AT_type        : <0x3b>
    <35>   DW_AT_name        : (indirect string, offset: 0xff): struct_blkpg_partition
    <39>   DW_AT_decl_file   : 2
    <3a>   DW_AT_decl_line   : 52
 <1><3b>: Abbrev Number: 4 (DW_TAG_structure_type)
    <3c>   DW_AT_byte_size   : 152
    <3d>   DW_AT_decl_file   : 2
    <3e>   DW_AT_decl_line   : 45
 <2><3f>: Abbrev Number: 5 (DW_TAG_member)
    <40>   DW_AT_name        : (indirect string, offset: 0xac): start
    <44>   DW_AT_type        : <0x86>
    <48>   DW_AT_decl_file   : 2
    <49>   DW_AT_decl_line   : 46
    <4a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><4d>: Abbrev Number: 5 (DW_TAG_member)
    <4e>   DW_AT_name        : (indirect string, offset: 0xd2): length
    <52>   DW_AT_type        : <0x86>
    <56>   DW_AT_decl_file   : 2
    <57>   DW_AT_decl_line   : 47
    <58>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
 <2><5b>: Abbrev Number: 5 (DW_TAG_member)
    <5c>   DW_AT_name        : (indirect string, offset: 0xd9): pno
    <60>   DW_AT_type        : <0xa3>
    <64>   DW_AT_decl_file   : 2
    <65>   DW_AT_decl_line   : 48
    <66>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
 <2><69>: Abbrev Number: 5 (DW_TAG_member)
    <6a>   DW_AT_name        : (indirect string, offset: 0xe1): devname
    <6e>   DW_AT_type        : <0xaa>
    <72>   DW_AT_decl_file   : 2
    <73>   DW_AT_decl_line   : 49
    <74>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
 <2><77>: Abbrev Number: 5 (DW_TAG_member)
    <78>   DW_AT_name        : (indirect string, offset: 0xf7): volname
    <7c>   DW_AT_type        : <0xaa>
    <80>   DW_AT_decl_file   : 2
    <81>   DW_AT_decl_line   : 51
    <82>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
 <2><85>: Abbrev Number: 0
 <1><86>: Abbrev Number: 3 (DW_TAG_typedef)
    <87>   DW_AT_type        : <0x91>
    <8b>   DW_AT_name        : (indirect string, offset: 0xca): int64_t
    <8f>   DW_AT_decl_file   : 1
    <90>   DW_AT_decl_line   : 67
 <1><91>: Abbrev Number: 3 (DW_TAG_typedef)
    <92>   DW_AT_type        : <0x9c>
    <96>   DW_AT_name        : (indirect string, offset: 0xc0): __int64_t
    <9a>   DW_AT_decl_file   : 1
    <9b>   DW_AT_decl_line   : 46
 <1><9c>: Abbrev Number: 6 (DW_TAG_base_type)
    <9d>   DW_AT_name        : (indirect string, offset: 0xb2): long long int
    <a1>   DW_AT_encoding    : 5	(signed)
    <a2>   DW_AT_byte_size   : 8
 <1><a3>: Abbrev Number: 6 (DW_TAG_base_type)
    <a4>   DW_AT_name        : (indirect string, offset: 0xdd): int
    <a8>   DW_AT_encoding    : 5	(signed)
    <a9>   DW_AT_byte_size   : 4
 <1><aa>: Abbrev Number: 7 (DW_TAG_array_type)
    <ab>   DW_AT_type        : <0xb7>
 <2><af>: Abbrev Number: 8 (DW_TAG_subrange_type)
    <b0>   DW_AT_type        : <0xbe>
    <b4>   DW_AT_lower_bound : 0
    <b5>   DW_AT_count       : 64
 <2><b6>: Abbrev Number: 0
 <1><b7>: Abbrev Number: 6 (DW_TAG_base_type)
    <b8>   DW_AT_name        : (indirect string, offset: 0xe9): char
    <bc>   DW_AT_encoding    : 8	(unsigned char)
    <bd>   DW_AT_byte_size   : 1
 <1><be>: Abbrev Number: 9 (DW_TAG_base_type)
    <bf>   DW_AT_name        : (indirect string, offset: 0xee): sizetype
    <c3>   DW_AT_byte_size   : 8
    <c4>   DW_AT_encoding    : 7	(unsigned)
 <1><c5>: Abbrev Number: 0

