非武器的标准库 我正在尝试在任务框架上使用宅男进行WCET分析。但是,该工具无法解析间接跳跃指令。我调查了这些间接跳跃的来源,然后我...

问题描述 投票:0回答:1
fvrwrit.c, signal.c , wctromb.c, vfprint.c

。 这些文件不包含在框架中,但是由于编译器标志而添加它们 specs= nonsys.specs。没有这个标志,我得到了未定义引用的链接错误。 是否有一种方法不包括STD圆柱状,并且仍然具有正确的控制流图的有效二进制文件吗? 还是我该如何强制编译器不生成间接分支并将其替换为直接分支?

您已经确定了问题:您的编译程序包括与标准库功能的间接函数调用。对这些功能进行静态分析也可能(也很困难),并且根据您尝试实现的时间分析,您可能对这些函数调用的WCET不感兴趣。有几个选项。
关于FlowFacts

:Otawa支持使用

FlowFact
c++ arm cross-compiling static-analysis
1个回答
0
投票
(当前网站下降,但您可以使用提供的CMAKE文件和

make autodoc

)来注释您的程序并帮助您获得分析的分析,请使用flowfact

文件:otawa支持:otawa:你想要。有两种支持格式,一种简单的.ff自定义格式和一个基于XML的格式。我将描述.ffx

格式的解决方案。
1。将这些功能调用从分析中使用
.ff
一种处理这些不必要的呼叫标准库的方法就是简单地将它们排除在分析之外。分析将忽略这些功能,您将获得WCET估计,而无需花费运行这些功能的时间。
语法为

nocall

where where function_address是函数名称或要跳过分析的函数的地址。
将此指令输入流量文件,例如
nocall FUNCTION_ADDRESS

,运行

nocalls.ff

2。通过解决间接调用来设置宅男以分析这些功能以分析这些功能

otawa通常无法解析间接函数调用。但是您可以通过提供注释来帮助它。摘自Otawa的文档:

owcet ... BINARY ENTRY_POINT -f nocalls.ff

3。没有这些电话编译二进制
像JF_的评论建议,您可能需要替换不可避免地会用自己的代码调用标准/系统库。
    


© www.soinside.com 2019 - 2025. All rights reserved.