config: Debugging features
Switch between Debug / Release builds with btvars, removing the need for an overlay to override artifact paths, and so that recipes whose build section references the output directory can be easily parameterised.
$ shrinkwrap build cca-3world.yaml -b RMM_BUILD=debug -b TFA_BUILD=debug ...
This also allows the user to create a common "debug" overlay which configures the build type for multiple components and works even if any of them are absent from a particular recipe stack.
Example:
# debug-all.yaml
...
layers:
- debug/tfa.yaml
- debug/rmm.yaml
- debug/tftf.yaml
# builds successfully even though TFTF is absent
$ shrinkwrap build cca-3world.yaml -o debug-all.yaml
Add an optional field to btvars and rtvars to specify accepted values. null is a supported item which makes the variable optional and resolve to an empty string if left unspecified.
btvars:
foo:
type: string
options:
- a
- b
- null
# rejected
value: c
# accepted, ${btvar:foo} resolves to ''
value: null
Auto-generate a script to load debugging symbols, which can be sourced at runtime by the Arm Debugger or Development Studio.
$ shrinkwrap build cca-4world.yaml -b RMM_BUILD=debug -b TFA_BUILD=debug -o debug/armdbg.yaml
# build/cca-4world/armdbg-script/armdbg.ds
add-symbol-file build/cca-4world/tfa/fvp/debug/bl1/bl1.elf EL3:0x0
add-symbol-file build/cca-4world/tfa/fvp/debug/bl2/bl2.elf EL1S:0x0
add-symbol-file build/cca-4world/tfa/fvp/debug/bl31/bl31.elf EL3:0x0
add-symbol-file build/cca-4world/rmm/debug/rmm.elf EL2RL:0xFDC00000+0x20000
add-symbol-file build/cca-4world/hafnium/secure_aem_v8a_fvp_vhe_clang/hafnium.elf EL2S:0x0
| Component | Debug build | Debug symbol generation |
|---|---|---|
| TF-A |
|
|
| TF-A-Tests |
|
|
| TF-RMM |
|
|
| Hafnium |
(debug-only) |
|
| RF-A |
|
|
| EDK-II |
|
|
Edited by Yuliang Wang