169 lines
4.4 KiB
Plaintext
169 lines
4.4 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Detect Decisions with Observability Gaps
|
|
; @Description:
|
|
;
|
|
; Load the demo application into an instruction set simulator
|
|
; and export observability gaps to a file. The inputs arguments are:
|
|
; 1. the ELF file for which the code coverage should be measured and
|
|
; 2. the path of the output file containing the detected observability gaps
|
|
|
|
; Usage:
|
|
; DO detect-obs-gaps <elf> <outfile>
|
|
; e.g. DO detect-obs-gaps "demo.elf" "demo.json"
|
|
;
|
|
; @Author: CSA
|
|
; @Copyright: (C) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: detect-obs-gaps.cmm 22909 2024-06-11 14:25:28Z csax $
|
|
|
|
PRIVATE ¶m
|
|
ENTRY %LINE ¶m
|
|
|
|
RESet
|
|
SYStem.RESet
|
|
|
|
PRIVATE &elf &outfile
|
|
GOSUB ParseParameters ¶m
|
|
RETURNVALUES &elf &outfile
|
|
|
|
IF STRing.SCAN("&elf","arm_cr.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RM57L843-ZWT
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_arm_cr.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","arm_cr_flash.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RM57L843-ZWT
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_arm_cr_flash.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","arm_cm.elf",0.)>=0
|
|
(
|
|
SYStem.CPU STM32F407IG
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_arm_cm.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","ppc_mpc55xx.elf",0.)>=0
|
|
(
|
|
SYStem.CPU MPC55XX
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_ppc_mpc55xx.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","ppc_t2080.elf",0.)>=0
|
|
(
|
|
SYStem.CPU T2080
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_ppc_t2080.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","tricore_tc3.elf",0.)>=0
|
|
(
|
|
SYStem.CPU TC399XE
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_tricore_tc3.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","tricore_tc2.elf",0.)>=0
|
|
(
|
|
SYStem.CPU TC399XE
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_tricore_tc2.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","riscv_rv32.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RV32
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_riscv_rv32.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","riscv_rv32_flash.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RV32
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_riscv_rv32_flash.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","riscv_rv64.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RV64
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_riscv_rv64.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","riscv_rv64_flash.elf",0.)>=0
|
|
(
|
|
SYStem.CPU RV64
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_riscv_rv64_flash.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","mips_m14k_mips32.elf",0.)>=0
|
|
(
|
|
SYStem.CPU PIC32MZ
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_mips_m14k_mips32.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE IF STRing.SCAN("&elf","mips_m14k_micro.elf",0.)>=0
|
|
(
|
|
SYStem.CPU PIC32MZ
|
|
SYStem.Up
|
|
|
|
Data.LOAD.Elf "~~~~/../coverage_mips_m14k_micro.elf" /RelPath /PlusVM
|
|
)
|
|
ELSE
|
|
(
|
|
PRINT %ERROR "Error: Executable variant is not supported."
|
|
ENDDO FALSE()
|
|
)
|
|
|
|
PRIVATE &eca
|
|
&eca="coverage.c.eca"
|
|
|
|
IF !OS.FILE.EXIST(&eca)
|
|
(
|
|
PRINT %ERROR "Error: ECA file ""&eca"" does not exist."
|
|
ENDDO FALSE()
|
|
)
|
|
|
|
sYmbol.ECA.LOADALL /SkipErrors
|
|
|
|
sYmbol.ECA.BINary.ControlFlowMode.Trace ON
|
|
sYmbol.ECA.BINary.ControlFlowMode.INSTR ON
|
|
sYmbol.ECA.BINary.PROCESS
|
|
|
|
sYmbol.ECA.BINary.EXPORT.GAPS "&outfile"
|
|
|
|
QUIT
|
|
|
|
|
|
; --------------------------------------------------------------------------------
|
|
; Parse script input parameters
|
|
;
|
|
SUBROUTINE ParseParameters
|
|
(
|
|
PRIVATE &elf &outfile
|
|
ENTRY &elf &outfile
|
|
|
|
IF STRing.SCAN("&elf","arm_cr.elf",0.)<0.&&STRing.SCAN("&elf","arm_cr_flash.elf",0.)<0.&&STRing.SCAN("&elf","arm_cm.elf",0.)<0.&&STRing.SCAN("&elf","ppc_mpc55xx.elf",0.)<0.&&STRing.SCAN("&elf","ppc_t2080.elf",0.)<0.&&STRing.SCAN("&elf","tricore_tc3.elf",0.)<0.&&STRing.SCAN("&elf","tricore_tc2.elf",0.)<0.&&STRing.SCAN("&elf","riscv_rv32.elf",0.)<0.&&STRing.SCAN("&elf","riscv_rv32_flash.elf",0.)<0.&&STRing.SCAN("&elf","riscv_rv64.elf",0.)<0.&&STRing.SCAN("&elf","riscv_rv64_flash.elf",0.)<0.&&STRing.SCAN("&elf","mips_m14k_mips32.elf",0.)<0.&&STRing.SCAN("&elf","mips_m14k_micro.elf",0.)<0.
|
|
(
|
|
PRINT %ERROR "Error: Executable variant is not supported."
|
|
ENDDO FALSE()
|
|
)
|
|
|
|
IF "&outfile"==""
|
|
(
|
|
PRIVATE &fname
|
|
&fname=OS.PresentPracticeFile()
|
|
PRINT %ERROR "Error: Missing Argument - Usage DO " OS.FILE.NAME(&fname) " <elf> <outfile>"
|
|
ENDDO FALSE()
|
|
)
|
|
RETURN "&elf" "&outfile"
|
|
)
|