Skip to content

config: Debugging features

Yuliang Wang requested to merge yw/debug into main

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

Merge request reports

Loading