Qualifying a C Library - Dealing with the conflicting worldviews of the ISO 26262 and ISO C standards
Functional safety and cybersecurity standards treat the qualification of tools and libraries as independent subjects. This independence is inconsistent with the perspective of the ISO C standard which serves as the foundation for implementing compiler toolsets and their libraries. This fundamental difference poses difficulties when it comes to qualifying a compiler and the libraries associated with it.
Introduction
To achieve conformance with the ISO 26262 functional safety standard, it is required to qualify software components, including the libraries that are part of a compiler toolset, before they can be integrated into automotive software systems.
The implementation of a C compiler and its associated libraries heavily relies on ISO/IEC 9899, commonly referred to as ISO C. This standard delineates several critical aspects:
• It defines the characteristics of environments used to translate and execute C programs, which form the basis for what's known as "startup code."
• It specifies the syntax, constraints, and semantics of the C language, which are essential for building the compiler and its executable file, as well as the runtime libraries.
• It covers the library facilities, describing what's inside header files and how C library functions should behave.
The above topics are addressed in separate clauses of the ISO C standard but with many references between the clauses, indicating interdependencies between the startup code, the compiler executable, the runtime libraries, the header files, and the C library. Consequently, it's not immediately clear whether the requirements for tool qualification and/or library qualification apply to a specific part of the compiler toolset, and whether changes made to one part of the toolset might impact the qualification of other parts.
To read the full article, please click here .