Re: debug crt0.s

Efim Monyak
2005-12-08T08:40:27Z

Hier is an output for small executable:

C:\WINNT\system32>C:\Programme\ARM-Eclipse\GNUARM\bin\arm-elf-readelf.exe
-wil C:\embedded\arm\workspace\functest\Debug\functest

Dump of debug contents of section .debug_line:

Length: 66
DWARF Version: 2
Prologue Length: 38
Minimum Instruction Length: 2
Initial value of 'is_stmt': 1
Line Base: -5
Line Range: 14
Opcode Base: 10
(Pointer size: 4)

Opcodes:
Opcode 1 has 0 args
Opcode 2 has 1 args
Opcode 3 has 1 args
Opcode 4 has 1 args
Opcode 5 has 1 args
Opcode 6 has 0 args
Opcode 7 has 0 args
Opcode 8 has 0 args
Opcode 9 has 1 args

The Directory Table:
../src

The File Name Table:
Entry Dir Time Size Name
1 1 0 0 comm_chan.s

Line Number Statements:
Extended opcode 2: set Address to 0x40000114
Advance Line by 9 to 10
Copy
Special opcode 34: advance Address by 4 to 0x40000118 and Line by 1 to 11
Special opcode 34: advance Address by 4 to 0x4000011c and Line by 1 to 12
Special opcode 35: advance Address by 4 to 0x40000120 and Line by 2 to 14
Special opcode 34: advance Address by 4 to 0x40000124 and Line by 1 to 15
Special opcode 34: advance Address by 4 to 0x40000128 and Line by 1 to 16
Special opcode 36: advance Address by 4 to 0x4000012c and Line by 3 to 19
Special opcode 36: advance Address by 4 to 0x40000130 and Line by 3 to 22
Advance PC by 4 to 40000134
Extended opcode 1: End of Sequence

Length: 125
DWARF Version: 2
Prologue Length: 33
Minimum Instruction Length: 2
Initial value of 'is_stmt': 1
Line Base: -5
Line Range: 14
Opcode Base: 10
(Pointer size: 4)

Opcodes:
Opcode 1 has 0 args
Opcode 2 has 1 args
Opcode 3 has 1 args
Opcode 4 has 1 args
Opcode 5 has 1 args
Opcode 6 has 0 args
Opcode 7 has 0 args
Opcode 8 has 0 args
Opcode 9 has 1 args

The Directory Table:
../src

The File Name Table:
Entry Dir Time Size Name
1 1 0 0 crt0.s

Line Number Statements:
Extended opcode 2: set Address to 0x40000000
Advance Line by 185 to 186
Copy
Special opcode 34: advance Address by 4 to 0x40000004 and Line by 1 to 187
Special opcode 34: advance Address by 4 to 0x40000008 and Line by 1 to 188
Special opcode 34: advance Address by 4 to 0x4000000c and Line by 1 to 189
Special opcode 34: advance Address by 4 to 0x40000010 and Line by 1 to 190
Special opcode 34: advance Address by 4 to 0x40000014 and Line by 1 to 191
Special opcode 35: advance Address by 4 to 0x40000018 and Line by 2 to 193
Special opcode 34: advance Address by 4 to 0x4000001c and Line by 1 to 194
Advance PC by 4 to 40000020
Extended opcode 1: End of Sequence

Extended opcode 2: set Address to 0x40000020
Advance Line by 73 to 74
Copy
Special opcode 34: advance Address by 4 to 0x40000024 and Line by 1 to 75
Special opcode 35: advance Address by 4 to 0x40000028 and Line by 2 to 77
Special opcode 38: advance Address by 4 to 0x4000002c and Line by 5 to 82
Special opcode 34: advance Address by 4 to 0x40000030 and Line by 1 to 83
Special opcode 34: advance Address by 4 to 0x40000034 and Line by 1 to 84
Special opcode 34: advance Address by 4 to 0x40000038 and Line by 1 to 85
Special opcode 34: advance Address by 4 to 0x4000003c and Line by 1 to 86
Special opcode 34: advance Address by 4 to 0x40000040 and Line by 1 to 87
Special opcode 34: advance Address by 4 to 0x40000044 and Line by 1 to 88
Special opcode 34: advance Address by 4 to 0x40000048 and Line by 1 to 89
Special opcode 34: advance Address by 4 to 0x4000004c and Line by 1 to 90
Special opcode 34: advance Address by 4 to 0x40000050 and Line by 1 to 91
Special opcode 34: advance Address by 4 to 0x40000054 and Line by 1 to 92
Special opcode 34: advance Address by 4 to 0x40000058 and Line by 1 to 93
Special opcode 34: advance Address by 4 to 0x4000005c and Line by 1 to 94
Special opcode 34: advance Address by 4 to 0x40000060 and Line by 1 to 95
Special opcode 34: advance Address by 4 to 0x40000064 and Line by 1 to 96
Special opcode 34: advance Address by 4 to 0x40000068 and Line by 1 to 97
Special opcode 34: advance Address by 4 to 0x4000006c and Line by 1 to 98
Special opcode 34: advance Address by 4 to 0x40000070 and Line by 1 to 99
Special opcode 35: advance Address by 4 to 0x40000074 and Line by 2 to 101
Special opcode 35: advance Address by 4 to 0x40000078 and Line by 2 to 103
Special opcode 34: advance Address by 4 to 0x4000007c and Line by 1 to 104
Special opcode 34: advance Address by 4 to 0x40000080 and Line by 1 to 105
Special opcode 35: advance Address by 4 to 0x40000084 and Line by 2 to 107
Special opcode 36: advance Address by 4 to 0x40000088 and Line by 3 to 110
Special opcode 35: advance Address by 4 to 0x4000008c and Line by 2 to 112
Special opcode 35: advance Address by 4 to 0x40000090 and Line by 2 to 114
Special opcode 35: advance Address by 4 to 0x40000094 and Line by 2 to 116
Special opcode 36: advance Address by 4 to 0x40000098 and Line by 3 to 119
Special opcode 34: advance Address by 4 to 0x4000009c and Line by 1 to 120
Special opcode 34: advance Address by 4 to 0x400000a0 and Line by 1 to 121
Special opcode 37: advance Address by 4 to 0x400000a4 and Line by 4 to 125
Special opcode 35: advance Address by 4 to 0x400000a8 and Line by 2 to 127
Special opcode 37: advance Address by 4 to 0x400000ac and Line by 4 to 131
Special opcode 35: advance Address by 4 to 0x400000b0 and Line by 2 to 133
Special opcode 35: advance Address by 4 to 0x400000b4 and Line by 2 to 135
Special opcode 36: advance Address by 4 to 0x400000b8 and Line by 3 to 138
Special opcode 34: advance Address by 4 to 0x400000bc and Line by 1 to 139
Special opcode 34: advance Address by 4 to 0x400000c0 and Line by 1 to 140
Special opcode 34: advance Address by 4 to 0x400000c4 and Line by 1 to 141
Special opcode 39: advance Address by 4 to 0x400000c8 and Line by 6 to 147
Special opcode 34: advance Address by 4 to 0x400000cc and Line by 1 to 148
Special opcode 35: advance Address by 4 to 0x400000d0 and Line by 2 to 150
Special opcode 34: advance Address by 4 to 0x400000d4 and Line by 1 to 151
Special opcode 34: advance Address by 4 to 0x400000d8 and Line by 1 to 152
Special opcode 38: advance Address by 4 to 0x400000dc and Line by 5 to 157
Advance PC by 56 to 40000114
Extended opcode 1: End of Sequence

Length: 594
DWARF Version: 2
Prologue Length: 565
Minimum Instruction Length: 2
Initial value of 'is_stmt': 1
Line Base: -5
Line Range: 14
Opcode Base: 10
(Pointer size: 4)

Opcodes:
Opcode 1 has 0 args
Opcode 2 has 1 args
Opcode 3 has 1 args
Opcode 4 has 1 args
Opcode 5 has 1 args
Opcode 6 has 0 args
Opcode 7 has 0 args
Opcode 8 has 0 args
Opcode 9 has 1 args

The Directory Table:
../src
C:/Programme/ARM-Eclipse/GNUARM/arm-elf/include
C:/Programme/ARM-Eclipse/GNUARM/arm-elf/include/sys
C:/Programme/ARM-Eclipse/GNUARM/arm-elf/include/machine
C:/Programme/ARM-Eclipse/GNUARM/lib/gcc/arm-elf/4.0.1/include
C:/embedded/arm/workspace/functest/inc

The File Name Table:
Entry Dir Time Size Name
1 1 0 0 main.c
2 2 0 0 stdio.h
3 2 0 0 _ansi.h
4 2 0 0 newlib.h
5 3 0 0 config.h
6 4 0 0 ieeefp.h
7 5 0 0 stddef.h
8 5 0 0 stdarg.h
9 3 0 0 reent.h
10 3 0 0 _types.h
11 3 0 0 lock.h
12 3 0 0 types.h
13 4 0 0 types.h
14 3 0 0 stdio.h
15 2 0 0 errno.h
16 3 0 0 errno.h
17 2 0 0 string.h
18 6 0 0 utypes.h
19 6 0 0 serialio.h
20 6 0 0 LPC2xsys.h
21 6 0 0 lpc2292.h
22 1 0 0 comm_chan.h
23 1 0 0 commio.h
24 1 0 0 PCPUcfg.h

Line Number Statements:
Extended opcode 2: set Address to 0x40000134
Advance Line by 143 to 144
Copy
Special opcode 124: advance Address by 16 to 0x40000144 and Line by 7
to 151
Special opcode 119: advance Address by 16 to 0x40000154 and Line by 2
to 153
Advance Line by 178 to 331
Special opcode 61: advance Address by 8 to 0x4000015c and Line by 0 to 331
Special opcode 34: advance Address by 4 to 0x40000160 and Line by 1 to 332
Advance PC by 8 to 40000168
Extended opcode 1: End of Sequence

The section .debug_info contains:

Compilation Unit @ 0:
Length: 105
Version: 2
Abbrev Offset: 0
Pointer Size: 4
<0>: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_stmt_list : 0
DW_AT_low_pc : 0x40000114
DW_AT_high_pc : 0x40000134
DW_AT_name : ../src/comm_chan.s
DW_AT_comp_dir : /cygdrive/c/embedded/arm/workspace/functest/Debug
DW_AT_producer : GNU AS 2.16.1
DW_AT_language : 32769 (MIPS assembler)
Compilation Unit @ 6d:
Length: 92
Version: 2
Abbrev Offset: 20
Pointer Size: 4
<0><78>: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_stmt_list : 0x46
DW_AT_name : ../src/crt0.s
DW_AT_comp_dir : /cygdrive/c/embedded/arm/workspace/functest/Debug
DW_AT_producer : GNU AS 2.16.1
DW_AT_language : 32769 (MIPS assembler)
Compilation Unit @ cd:
Length: 315
Version: 2
Abbrev Offset: 36
Pointer Size: 4
<0><d8>: Abbrev Number: 1 (DW_TAG_compile_unit)
DW_AT_macro_info : 0
DW_AT_stmt_list : 0xc7
DW_AT_high_pc : 0x40000168
DW_AT_low_pc : 0x40000134
DW_AT_producer : GNU C 4.0.1
DW_AT_language : 1 (ANSI C)
DW_AT_name : ../src/main.c
DW_AT_comp_dir : /cygdrive/c/embedded/arm/workspace/functest/Debug
<1><136>: Abbrev Number: 2 (DW_TAG_base_type)
DW_AT_name : (indirect string, offset: 0x0): long unsigned int
DW_AT_byte_size : 4
DW_AT_encoding : 7 (unsigned)
<1><13d>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : int
DW_AT_byte_size : 4
DW_AT_encoding : 5 (signed)
<1><144>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : long int
DW_AT_byte_size : 4
DW_AT_encoding : 5 (signed)
<1><150>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : long long int
DW_AT_byte_size : 8
DW_AT_encoding : 5 (signed)
<1><161>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : unsigned int
DW_AT_byte_size : 4
DW_AT_encoding : 7 (unsigned)
<1><171>: Abbrev Number: 2 (DW_TAG_base_type)
DW_AT_name : (indirect string, offset: 0x0): long unsigned int
DW_AT_byte_size : 4
DW_AT_encoding : 7 (unsigned)
<1><178>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : unsigned char
DW_AT_byte_size : 1
DW_AT_encoding : 8 (unsigned char)
<1><189>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : short int
DW_AT_byte_size : 2
DW_AT_encoding : 5 (signed)
<1><196>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : char
DW_AT_byte_size : 1
DW_AT_encoding : 8 (unsigned char)
<1><19e>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : short unsigned int
DW_AT_byte_size : 2
DW_AT_encoding : 7 (unsigned)
<1><1b4>: Abbrev Number: 3 (DW_TAG_base_type)
DW_AT_name : long long unsigned int
DW_AT_byte_size : 8
DW_AT_encoding : 7 (unsigned)
<1><1ce>: Abbrev Number: 4 (DW_TAG_typedef)
DW_AT_name : DWORD
DW_AT_decl_file : 18
DW_AT_decl_line : 16
DW_AT_type : <136>
<1><1db>: Abbrev Number: 5 (DW_TAG_subprogram)
DW_AT_sibling : <206>
DW_AT_external : 1
DW_AT_name : main
DW_AT_decl_file : 1
DW_AT_decl_line : 144
DW_AT_prototyped : 1
DW_AT_type : <13d>
DW_AT_low_pc : 0x40000134
DW_AT_high_pc : 0x40000168
DW_AT_frame_base : 1 byte block: 5b (DW_OP_reg11)
<2><1f7>: Abbrev Number: 6 (DW_TAG_variable)
DW_AT_name : mem
DW_AT_decl_file : 1
DW_AT_decl_line : 147
DW_AT_type : <206>
DW_AT_location : 2 byte block: 7b 70 (DW_OP_breg11: -16)
<1><206>: Abbrev Number: 7 (DW_TAG_volatile_type)
DW_AT_type : <1ce>