Existing standards for airborne-embedded software systems impose a number of requirements applicable to the software development cycle of hard real-time operating systems found in modern aircraft. The measures taken are meant to reduce the risks of undesired consequences, but have strongly varying costs. Dynamic instrumentation and static analysis are common practices used to automatically find software defects, from strictly non-conforming code constructions to memory corruptions or invalid control flow. LLVM analyser and sanitizer infrastructure, while regularly applied to general-purpose software, originally was not thought to be introduced to heavily restricted environments. In this paper we discuss the specifics of airborne systems with regards to dynamic instrumentation and provide practical considerations to be taken into account for the effective use of general-purpose instrumentation tools. We bring a complete LLVM stack support to JetOS, a prospective onboard real-time operating system currently being developed at ISP RAS in collaboration with GosNIIAS. As an example, we port AddressSanitizer, MemorySanitizer, and UndefinedBehaviorSanitizer and provide the details against the caveats on all relevant sides: a sanitizer, a compiler, and an operating system. In addition we suggest uninvolved optimisations and enhancements to the runtimes to maximise the effects of the tools.
翻译:机载软件系统的现有标准规定了适用于现代航空器中硬实时操作系统软件开发周期的若干要求。所采取的措施旨在减少不理想后果的风险,但成本差别很大。动态仪器和静态分析是用来自动发现软件缺陷的常见做法,从严格不兼容的代码构造到记忆腐败或无效控制流。LLLVM分析仪和防污设备基础设施,虽然经常适用于一般用途软件,但原先被认为没有引入到严格限制的环境。本文讨论空气系统关于动态仪器的具体细节,并为有效使用通用仪器工具提供实际考虑。我们给JetOS带来完整的LLLVM堆支持,目前正在ISP RAS与GosNIIAS合作开发的机载实时操作系统。例如,我们港口地址Sanitister、MymeSanitizeer和未定义的Behavior Saniter,并针对所有相关方的洞穴作了详细介绍:Saniticer系统升级和升级工具。