We have OpenCSD in 1.4 currently in RHEL-10, while upstream has developed to 1.5.6.
There are interesting fixes and features we might be interested in:
- Version 1.4.2:
- Decoder memory access - add debug features and cacheing to improve performance of decode. Caching controllable by API or environment variables.
- Decode debug options to control potential runaway debug when incorrect memory images input to decoder.
- aarch64 instruction check for invalid instruction opcode. (any opcode with 0x0000 as top 16 bits).
- optional instruction range maximum run limit. Set by environment variable.
- Memory spaces: ensure that decoder memory requests are correctly labelled with Realm and root characteristics when appropriate.
- M class tail chained interrupts now correctly handled.
- Version 1.5.1:
- ETE: Add support for Arch 9.5 FEAT_PAUTH_LR. Add new instructions to disassembler to recognise RETA<k>SPPC variants as indirect branches. Adds new test snapshots.
- Version 1.5.4:
- Add operation flags to allow clients to enable additional checking modes. Checks for inconsistencies in program image and incoming trace. Adds operational flags:
- `OCSD_OPFLG_N_UNCOND_DIR_BR_CHK` - check for N atom on unconditional direct branches.
- `OCSD_OPFLG_STRICT_N_UNCOND_BR_CHK` - check for N atom on all unconditional branches.
- `OCSD_OPFLG_CHK_RANGE_CONTINUE` - Inconsistent range continuity on not taken branches.
- Add operational flag `ETM4_OPFLG_PKTDEC_AA64_OPCODE_CHK` to enable aa64 opcode checks.
- Add operation flags to allow clients to enable additional checking modes. Checks for inconsistencies in program image and incoming trace. Adds operational flags:
- Version 1.5.5:
- memacc: Fix for memacc objects created in decode tree not being released correctly.