Kiefmann Bernhard wrote:
My name is Bernhard Kiefmann and I'm writing my Master's thesis with the topic "the suitability of the GNU C compiler used in safety-related areas". The first problem with this is that I have to check if the compiler met the requirements of the international standard IEC 61508:2010. Here I would like to ask you my question as follows:
I think GCC developers and users have different requirements and "Functional safety of electrical/electronic/programmable electronic safety-related systems" is for most of them not the top priority and presumably difficult to achieve for the whole project.
However, I know that the Ada community is wary about the issue and that GCC's gnat (GCC' Ada compiler) is used in safety-critical areas. Also AdaCore (main contributor to the gnat development) advertises "Aids in establishing certification requirements (DO-178B level A / DO-178C-ready, EN 50128, IEC 61508, ECCS-E40B)".
See also gcc.gnu.org/wiki/cauldron2012?action=AttachFile&do=get&target=petergarbett1958.pdf for someone using GCC's Ada compiler for a project, requiring DO178-B/C certification.
Thus, I think the GCC Ada developers/AdaCore developers should be best suited to answer your questions.
I will try to give a first answer to your questions, but as I did not have anything to do with safety certification, I won't be able to give perfect answers.
1) What are the rules of the compiler development? Are there any diagrams of UML? Because they are a requirement of the standard.
Let's start with bugs as there the scheme is a bit easier: If a bug is found and analyzed and a patch has been found, the patch is submitted together with a test case, which becomes part of the regression test suite. Before submitting the patch, it is required to do a build (bootstrap) of the compiler and a run of the test suite without any (new) failure. The patch is then submitted to the gcc-patches mailing list, which allows others to comment and nonobvious patches require the approval prior checkin. - The bootstrap and test-suite run is only done for one architecture, however, as others build+regression test the compiler on various systems regularly, platform specific issues are also detected. Additionally, some other applications/benchmarks/testsuite are also regularly run.
Regarding the addition of new features: It really depends on the developer; I think most do not use UML, but some may.
Actually, a compiler is a rather complex program such that UML does not seem to be a practical approach for the development. Nor is it possible to test all possible code paths. I also believe that a compiler is not required to be developed using UML - contrary to programs requiring safety certification. In any case, I am pretty sure that GNAT is used in safety critical application, which pass the certification.
If I recall correctly some talk by GNAT/AdaCore developers, for certification, they need to prove that the input GNAT code leads to correct assembler at the end - how it reaches the code is not important. But proving that is does, is a bit cumbersome.
2) Are there activities for the Functional Verification?
For the compiler itself, there is only manually writing test cases for new features which should try to give a broad coverage of the new feature, including both valid and invalid (to be diagnosed) code and both compile and run-time test, partially with inspecting the generated code. Plus code-review which does nor really count as formal verification.
However, for applications using GCC, there exist tools. See for instance, http://www.open-do.org/projects/hi-lite/ which is in the context of functional verification and GCC's gnat/C compilers.
If you have information here for me I would rather help in assessing whether the compiler for use in safety-relevant area is suitable.
Well, given that it is used to create programs for safety critical areas, certification agencies seem to regard it (in conjunction with suitable verifications) as suitable ;-)
I hope it helps a bit - any that you will get replies from others who know better how the safety-related certification works.
And good luck with your thesis! Tobias