C Analyzer : A Static Program Analysis Tool for C Programs

Salvato in:
Dettagli Bibliografici
Pubblicato in:arXiv.org (Jan 28, 2024), p. n/a
Autore principale: Solanki, Rajendra Kumar
Pubblicazione:
Cornell University Library, arXiv.org
Soggetti:
Accesso online:Citation/Abstract
Full text outside of ProQuest
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!

MARC

LEADER 00000nab a2200000uu 4500
001 2972956601
003 UK-CbPIL
022 |a 2331-8422 
035 |a 2972956601 
045 0 |b d20240128 
100 1 |a Solanki, Rajendra Kumar 
245 1 |a C Analyzer : A Static Program Analysis Tool for C Programs 
260 |b Cornell University Library, arXiv.org  |c Jan 28, 2024 
513 |a Working Paper 
520 3 |a In our times, when the world is increasingly becoming more dependent on software programs, writing bug-free, correct programs is crucial. Program verification based on formal methods can guarantee this by detecting run-time errors in safety-critical systems to avoid possible adverse impacts on human life and save time and money. This project work tries to leverage Abstract Interpretation techniques for static analysis of C programs. C Analyzer is a tool developed for static analysis of C programs. This implementation of C Analyzer provides a plug-and-play domain architecture for multiple abstract domains to be used. C Analyzer supports four abstract domains - Interval, Octagon, Polyhedra, and Bit Vector. We use these different domains for required precision in program verification. C Analyzer tool uses LLVM C/C++ compiler frontend Clang API to generate and traverse the Control Flow Graph (CFG) of a given C program. This tool generates invariants in different abstract domains for statements in basic blocks of CFG during CFG traversal. Using these invariants, some properties of a program, such as dividing by zero, modulus zero, arithmetic overflow, etc., can be analyzed. We also use a source-to-source transformation tool, CIL (Common Intermediate language), to transform some C constructs into simpler constructs, such as transforming logical operators, switch statements, and conditional operators into if-else ladders and transforming do-while and for loops into while loops. Using C Analyzer, C program constructs such as declarations, assignments, binary operations (arithmetic, relational, bitwise shift, etc.), conditions (if-else), loops (while, do while, for loop), nested conditions, and nested loops can be analyzed. Currently, this tool does not support arrays, structures, unions, pointers, or function calls. 
653 |a Operators 
653 |a Program verification (computers) 
653 |a Nested loops 
653 |a Invariants 
653 |a Formal method 
653 |a Arithmetic 
653 |a Ladders 
653 |a Safety critical 
653 |a Software 
653 |a Intermediate languages 
653 |a Run time (computers) 
653 |a Computer programming 
773 0 |t arXiv.org  |g (Jan 28, 2024), p. n/a 
786 0 |d ProQuest  |t Engineering Database 
856 4 1 |3 Citation/Abstract  |u https://www.proquest.com/docview/2972956601/abstract/embedded/L8HZQI7Z43R0LA5T?source=fedsrch 
856 4 0 |3 Full text outside of ProQuest  |u http://arxiv.org/abs/2403.12973