首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何证明编译器的功能安全?

如何证明编译器的功能安全?
EN

Stack Overflow用户
提问于 2018-03-27 15:07:58
回答 3查看 3.9K关注 0票数 10

我们是国际标准化组织-13485,从事医疗器械的开发.我们目前使用的是IAR认证编译器,但我们考虑切换到gcc,因为它是跨平台的,构建可以用普通的Makefile实现自动化,而这在IAR中是不可能的。

我正试图了解我们应该做什么来获得arm-none-eabi-gcc的医疗发展认证。

无论是ISO-13485,ISO-26262,ISO-62304或ISO-61508给我一个提示,我应该做什么来验证我的编译器.

我是执着于IAR,还是有其他选择?

我想这个问题也可以推广到太空/汽车。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-27 15:24:52

我在一家拥有ISO-26262认证的公司的工具链团队工作,我们最近对我们的开发套件进行了功能安全性验证。

该过程的一部分是运行一组验证测试套件,其中编译了数千个测试程序,并将结果与预期结果进行了比较。另一部分是ISO标准符合性测试。当然,这些测试都不是详尽无遗的,但确实发现了一些问题。然而,第三部分包括运行GCC自己附带的DejaGNU测试套件。

安全验证的下一个技巧是确保所有已知的问题都有文档化。功能安全并不意味着您的工具链是完美的,它只意味着已知的缺陷被清楚地记录下来,并且您已经有了一个识别和记录缺陷的过程。为了进行全面验证,您需要做的是修复或记录每一个偏离预期行为的偏差,这样就没有已知的、不合理的偏差。

验证本身就是一个完整的行业。它既昂贵又费时.

票数 15
EN

Stack Overflow用户

发布于 2019-10-15 08:45:34

免责声明:我是一个团队的一员,开发一个测试套件来验证C/C++编译器,并使编译器具有功能安全性。最终免责声明

这是可能的。这个过程被称为“资格认证”,而不是认证,因为它的目标是在编译器中找到任何薄弱环节,并在需要时定义解决办法。在ISO 26262中,它可以在第8部分第11节“对软件工具的使用的信心”中找到。本例中的“软件工具”是编译器。

第11.4.9.2节规定:

代码语言:javascript
复制
11.4.9.2 The validation of the software tool shall meet the following criteria:


the validation measures shall demonstrate that the software tool complies with
its specified requirements,
...
EXAMPLE
The standard for a programming language helps to define the requirements for
validating the associated compiler.

解释这一点必须与ISO标准相一致。要进行验证,您需要一个基于语言标准的测试套件。

DejaGNU套件不适合于限制编译器的功能安全性。如果您的编译器版本中存在一些“众所周知的问题”,DejaGNU是有用的,但是它没有系统地根据任何国际标准化组织标准来验证编译器。它主要是一个回归测试套件,测试许多不符合ISO标准的需求。以下是这方面的一些例子:

例1:https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/c-c%2B%2B-common/diagnostic-format-json-1.c

此测试测试编译器是否生成JSON格式的诊断消息,这是ISO/IEC-9899:* C标准、ISO/IEC-14882:* C++标准或ISO-26262标准所不需要的。

例2:https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/g%2B%2B.dg/tree-ssa/pr13954.C

如果编译器没有实现任何条件常量传播优化,则此测试“失败”,但C++标准也不要求这一点,任何功能安全标准也不要求这样做。

例3:在另一边,通过DejaGNU套件并不表示符合标准,而只表示符合GNU“方言”:

i5

对于应用程序开发中使用的选项、配置和环境,编译器进行验证也很重要。这通常被称为“用例”。ISO 26262说:

代码语言:javascript
复制
11.4.3.1
When using a software tool, it shall be ensured that its usage, its
determined environmental and functional constraints and its general
operating conditions comply with its evaluation criteria or its
qualification.

正如@StephenM.Webb正确地提到的,测试是认证过程的一部分。另一部分是记录过程、测试结果和缓解(解决办法)。

在验证编译器之后,只要用例相同,就可以在任何安全关键环境中重用它。

票数 7
EN

Stack Overflow用户

发布于 2019-07-10 17:50:20

如果您正在使用任何特定于供应商的软件,您可以要求提供软件有异常行为(假阳性)的用例或场景,在这种情况下,gcc是开源的,需要软件的用户进行验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49516502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档