Practical Testing of a C99 Compiler Using Output Comparison

02/14/2022
by   Flash Sheridan, et al.
0

A simple technique is presented for testing a C99 compiler, by comparison of its output with output from preexisting tools. The advantage to this approach is that new test cases can be added in bulk from existing sources, reducing the need for in-depth investigation of correctness issues, and for creating new test code by hand. This technique was used in testing the PalmSource Palm OS Cobalt ARM C/C++ cross-compiler for Palm-Powered personal digital assistants, primarily for standards-compliance and correct execution of generated code. The technique described here found several hundred bugs, mostly in our in-house code, but also in longstanding high-quality front- and back-end code from Edison Design Group and Apogee Software. It also found eighteen bugs in the GNU C compiler, as well as a bug specific to the Apple version of GCC, a bug specific to the Suse version of GCC, and a dozen bugs in versions of GCC for the ARM processor, several of them critical.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/25/2019

A Systematic Impact Study for Fuzzer-Found Compiler Bugs

Despite much recent interest in randomised testing (fuzzing) of compiler...
research
08/27/2019

K-CONFIG: Using Failing Test Cases to Generate Test Cases in GCC Compilers

The correctness of compilers is instrumental in the safety and reliabili...
research
11/27/2018

How a simple bug in ML compiler could be exploited for backdoors?

Whenever a bug occurs in a program, software developers assume that the ...
research
10/06/2021

How good does a Defect Predictor need to be to guide Search-Based Software Testing?

Defect predictors, static bug detectors and humans inspecting the code c...
research
06/12/2023

A Survey of Modern Compiler Fuzzing

Most software that runs on computers undergoes processing by compilers. ...
research
10/10/2022

The Foil: Capture-Avoiding Substitution With No Sharp Edges

Correctly manipulating program terms in a compiler is surprisingly diffi...
research
04/15/2021

Automated Conformance Testing for JavaScript Engines via Deep Compiler Fuzzing

JavaScript (JS) is a popular, platform-independent programming language....

Please sign up or login with your details

Forgot password? Click here to reset