ARM Assembly
Language Tools
v18.1.0.LTS User's Guide
SPNU118U - REVISED JANUARY 2018
A Symbolic Debugging Directives
The assembler supports several directives that the ARM C/C++ compiler uses for symbolic debugging.
These directives are not meant for use by assembly-language programmers. They require arguments that can be difficult to calculate manually, and their usage must conform to a predetermined agreement between the compiler, the assembler, and the debugger. This appendix documents these directives for informational purposes only.
A.1 DWARF Debugging Format
A subset of the DWARF symbolic debugging directives are always listed in the assembly language file that the compiler creates for program analysis purposes. To list the complete set used for full symbolic debug, invoke the compiler with the --symdebug:dwarf option, as shown below:
armcl --symdebug:dwarf --keep_asm input_file
The --keep_asm option instructs the compiler to retain the generated assembly file.
To disable the generation of all symbolic debug directives, invoke the compiler with the -symdebug:none option:
armcl --symdebug:none --keep_asm input_file
The DWARF debugging format consists of the following directives:
- The .dwtag and .dwendtag directives define a Debug Information Entry (DIE) in the .debug_info section.
- The .dwattr directive adds an attribute to an existing DIE.
- The .dwpsn directive identifies the source position of a C/C++ statement.
- The .dwcie and .dwendentry directives define a Common Information Entry (CIE) in the .debug_frame section.
- The .dwfde and .dwendentry directives define a Frame Description Entry (FDE) in the .debug_frame section.
- The .dwcfi directive defines a call frame instruction for a CIE or FDE.
A.2 Debug Directive Syntax
Table A-1 is an alphabetical listing of the symbolic debugging directives. For information on the C/C++ compiler, refer to the ARM Optimizing C/C++ Compiler User's Guide.
Table A-1 Symbolic Debugging Directives
Label | Directive | Arguments |
---|---|---|
.block | [beginning line number] | |
.dwattr | DIE label,DIE attribute name(DIE attribute value)[,DIE attribute name(attribute value) [, ...] | |
.dwcfi | call frame instruction opcode[,operand[,operand]] | |
CIE label | .dwcie | version, return address register |
.dwendentry | ||
.dwendtag | ||
.dwfde | CIE label | |
.dwpsn | "filename", line number, column number | |
DIE label | .dwtag | DIE tag name,DIE attribute name(DIE attribute value)[,DIE attribute name(attribute value) [, ...] |
.endblock | [ending line number] | |
.endfunc | [ending line number[,register mask[, frame size]]] | |
.eos | ||
.etag | name[, size] | |
.file | "filename" | |
.func | [beginning line number] | |
.line | line number[, address] | |
.member | name, value[, type, storage class, size, tag, dims] | |
.stag | name[, size] | |
.sym | name, value[, type, storage class, size, tag, dims] | |
.utag | name[, size] |
Copyright© 2018, Texas Instruments Incorporated. An IMPORTANT NOTICE for this document addresses availability, warranty, changes, use in safety-critical applications, intellectual property matters and other important disclaimers.