Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x157 (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: 0x3b): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
    <10>   DW_AT_language    : 1	(ANSI C)
    <11>   DW_AT_name        : (indirect string, offset: 0x151): mpers-mx32/time_t.c	
    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xc6): /usr/local/google/home/enh/Downloads/strace-4.16	
    <19>   DW_AT_stmt_list   : 0x0	
 <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
    <1e>   DW_AT_byte_size   : 1	
    <1f>   DW_AT_encoding    : 6	(signed char)
    <20>   DW_AT_name        : (indirect string, offset: 0x178): signed char	
 <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
    <25>   DW_AT_byte_size   : 2	
    <26>   DW_AT_encoding    : 5	(signed)
    <27>   DW_AT_name        : (indirect string, offset: 0x18d): short int	
 <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
    <2c>   DW_AT_byte_size   : 4	
    <2d>   DW_AT_encoding    : 5	(signed)
    <2e>   DW_AT_name        : int	
 <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
    <33>   DW_AT_byte_size   : 8	
    <34>   DW_AT_encoding    : 5	(signed)
    <35>   DW_AT_name        : (indirect string, offset: 0x133): long long int	
 <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
    <3a>   DW_AT_byte_size   : 1	
    <3b>   DW_AT_encoding    : 8	(unsigned char)
    <3c>   DW_AT_name        : (indirect string, offset: 0xfc): unsigned char	
 <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
    <41>   DW_AT_byte_size   : 2	
    <42>   DW_AT_encoding    : 7	(unsigned)
    <43>   DW_AT_name        : (indirect string, offset: 0x165): short unsigned int	
 <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
    <48>   DW_AT_byte_size   : 4	
    <49>   DW_AT_encoding    : 7	(unsigned)
    <4a>   DW_AT_name        : (indirect string, offset: 0x197): unsigned int	
 <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
    <4f>   DW_AT_byte_size   : 8	
    <50>   DW_AT_encoding    : 7	(unsigned)
    <51>   DW_AT_name        : (indirect string, offset: 0xaf): long long unsigned int	
 <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
    <56>   DW_AT_byte_size   : 4	
    <57>   DW_AT_encoding    : 5	(signed)
    <58>   DW_AT_name        : (indirect string, offset: 0x111): long int	
 <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
    <5d>   DW_AT_byte_size   : 4	
    <5e>   DW_AT_encoding    : 7	(unsigned)
    <5f>   DW_AT_name        : (indirect string, offset: 0x9d): long unsigned int	
 <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
    <64>   DW_AT_name        : (indirect string, offset: 0x11): __quad_t	
    <68>   DW_AT_decl_file   : 1	
    <69>   DW_AT_decl_line   : 55	
    <6a>   DW_AT_type        : <0x32>	
 <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
    <6f>   DW_AT_byte_size   : 4	
    <70>   DW_AT_encoding    : 7	(unsigned)
    <71>   DW_AT_name        : (indirect string, offset: 0x184): sizetype	
 <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
    <76>   DW_AT_name        : (indirect string, offset: 0x141): __time_t	
    <7a>   DW_AT_decl_file   : 1	
    <7b>   DW_AT_decl_line   : 139	
    <7c>   DW_AT_type        : <0x63>	
 <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
    <81>   DW_AT_byte_size   : 1	
    <82>   DW_AT_encoding    : 6	(signed char)
    <83>   DW_AT_name        : (indirect string, offset: 0xf7): char	
 <1><87>: Abbrev Number: 4 (DW_TAG_typedef)
    <88>   DW_AT_name        : (indirect string, offset: 0x10a): time_t	
    <8c>   DW_AT_decl_file   : 2	
    <8d>   DW_AT_decl_line   : 75	
    <8e>   DW_AT_type        : <0x75>	
 <1><92>: Abbrev Number: 5 (DW_TAG_pointer_type)
    <93>   DW_AT_byte_size   : 4	
    <94>   DW_AT_type        : <0x98>	
 <1><98>: Abbrev Number: 6 (DW_TAG_const_type)
    <99>   DW_AT_type        : <0x80>	
 <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
    <9e>   DW_AT_name        : (indirect string, offset: 0x14a): sysent	
    <a2>   DW_AT_byte_size   : 20	
    <a3>   DW_AT_decl_file   : 3	
    <a4>   DW_AT_decl_line   : 4	
    <a5>   DW_AT_sibling     : <0xf0>	
 <2><a9>: Abbrev Number: 8 (DW_TAG_member)
    <aa>   DW_AT_name        : (indirect string, offset: 0x97): nargs	
    <ae>   DW_AT_decl_file   : 3	
    <af>   DW_AT_decl_line   : 5	
    <b0>   DW_AT_type        : <0x47>	
    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
 <2><b7>: Abbrev Number: 8 (DW_TAG_member)
    <b8>   DW_AT_name        : (indirect string, offset: 0x123): sys_flags	
    <bc>   DW_AT_decl_file   : 3	
    <bd>   DW_AT_decl_line   : 6	
    <be>   DW_AT_type        : <0x2b>	
    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
 <2><c5>: Abbrev Number: 9 (DW_TAG_member)
    <c6>   DW_AT_name        : sen	
    <ca>   DW_AT_decl_file   : 3	
    <cb>   DW_AT_decl_line   : 7	
    <cc>   DW_AT_type        : <0x2b>	
    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
 <2><d3>: Abbrev Number: 8 (DW_TAG_member)
    <d4>   DW_AT_name        : (indirect string, offset: 0x11a): sys_func	
    <d8>   DW_AT_decl_file   : 3	
    <d9>   DW_AT_decl_line   : 8	
    <da>   DW_AT_type        : <0xfb>	
    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
 <2><e1>: Abbrev Number: 8 (DW_TAG_member)
    <e2>   DW_AT_name        : (indirect string, offset: 0x1a): sys_name	
    <e6>   DW_AT_decl_file   : 3	
    <e7>   DW_AT_decl_line   : 9	
    <e8>   DW_AT_type        : <0x92>	
    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
 <2><ef>: Abbrev Number: 0
 <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
    <f1>   DW_AT_type        : <0x2b>	
    <f5>   DW_AT_sibling     : <0xfb>	
 <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
 <2><fa>: Abbrev Number: 0
 <1><fb>: Abbrev Number: 5 (DW_TAG_pointer_type)
    <fc>   DW_AT_byte_size   : 4	
    <fd>   DW_AT_type        : <0xf0>	
 <1><101>: Abbrev Number: 4 (DW_TAG_typedef)
    <102>   DW_AT_name        : (indirect string, offset: 0x23): struct_sysent	
    <106>   DW_AT_decl_file   : 3	
    <107>   DW_AT_decl_line   : 10	
    <108>   DW_AT_type        : <0x9d>	
 <1><10c>: Abbrev Number: 5 (DW_TAG_pointer_type)
    <10d>   DW_AT_byte_size   : 4	
    <10e>   DW_AT_type        : <0x112>	
 <1><112>: Abbrev Number: 6 (DW_TAG_const_type)
    <113>   DW_AT_type        : <0x101>	
 <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
    <118>   DW_AT_byte_size   : 1	
    <119>   DW_AT_encoding    : 2	(boolean)
    <11a>   DW_AT_name        : (indirect string, offset: 0x12d): _Bool	
 <1><11e>: Abbrev Number: 12 (DW_TAG_variable)
    <11f>   DW_AT_name        : (indirect string, offset: 0x0): current_wordsize	
    <123>   DW_AT_decl_file   : 4	
    <124>   DW_AT_decl_line   : 757	
    <126>   DW_AT_type        : <0x47>	
    <12a>   DW_AT_external    : 1	
    <12b>   DW_AT_declaration : 1	
 <1><12c>: Abbrev Number: 12 (DW_TAG_variable)
    <12d>   DW_AT_name        : (indirect string, offset: 0x14a): sysent	
    <131>   DW_AT_decl_file   : 4	
    <132>   DW_AT_decl_line   : 892	
    <134>   DW_AT_type        : <0x10c>	
    <138>   DW_AT_external    : 1	
    <139>   DW_AT_declaration : 1	
 <1><13a>: Abbrev Number: 12 (DW_TAG_variable)
    <13b>   DW_AT_name        : (indirect string, offset: 0x31): nsyscalls	
    <13f>   DW_AT_decl_file   : 4	
    <140>   DW_AT_decl_line   : 903	
    <142>   DW_AT_type        : <0x47>	
    <146>   DW_AT_external    : 1	
    <147>   DW_AT_declaration : 1	
 <1><148>: Abbrev Number: 13 (DW_TAG_variable)
    <149>   DW_AT_name        : (indirect string, offset: 0x86): mpers_target_var	
    <14d>   DW_AT_decl_file   : 5	
    <14e>   DW_AT_decl_line   : 31	
    <14f>   DW_AT_type        : <0x87>	
    <153>   DW_AT_external    : 1	
    <154>   DW_AT_location    : 5 byte block: 3 8 0 0 0 	(DW_OP_addr: 8)
 <1><15a>: Abbrev Number: 0

