diff options
author | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2019-01-14 13:49:22 +0100 |
---|---|---|
committer | Sandrine Bailleux <sandrine.bailleux@arm.com> | 2019-01-14 13:51:17 +0100 |
commit | 452f360545f0b4d19720c2dfbaf80cf48c1aa3de (patch) | |
tree | e0a61d5a614b9f7193a0b53357f346e7ec8f04c3 /include | |
parent | 80ddcc3286b61f40015b30296a47baf47c3e8fd0 (diff) |
Add CFI debug info to vector entries
This is based on TF-A commit 31823b6961d35a5d53e81d3bf4977ad7b2be81dd.
Add Call Frame Information assembler directives to vector entries so
that debuggers display the backtrace of functions that triggered a
synchronous exception. For example, a function triggering a data abort
will be easier to debug if the backtrace can be displayed from a
breakpoint at the beginning of the synchronous exception vector.
DS-5 needs CFI otherwise it will not attempt to display the backtrace.
Other debuggers might have other needs. These debug information are
stored in the ELF file but not in the final binary.
Change-Id: I1129419f318465049f53b5e41c304ea61fa44483
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/common/aarch64/asm_macros.S | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/include/common/aarch64/asm_macros.S b/include/common/aarch64/asm_macros.S index ad47290..5298ae0 100644 --- a/include/common/aarch64/asm_macros.S +++ b/include/common/aarch64/asm_macros.S @@ -61,20 +61,21 @@ */ .macro vector_entry label .section .vectors, "ax" + .cfi_sections .debug_frame .align 7, 0 + .type \label, %function + .cfi_startproc \label: .endm /* - * This macro verifies that the a given vector doesn't exceed the - * architectural limit of 32 instructions. This is meant to be placed - * immedately after the last instruction in the vector. It takes the - * vector entry as the parameter + * Add the bytes until fill the full exception vector, whose size is always + * 32 instructions. If there are more than 32 instructions in the + * exception vector then an error is emitted. */ - .macro check_vector_size since - .if (. - \since) > (32 * 4) - .error "Vector exceeds 32 instructions" - .endif + .macro end_vector_entry label + .cfi_endproc + .fill \label + (32 * 4) - . .endm /* |