C Analyzer : A Static Program Analysis Tool for C Programs
Salvato in:
| Pubblicato in: | arXiv.org (Jan 28, 2024), p. n/a |
|---|---|
| Autore principale: | |
| Pubblicazione: |
Cornell University Library, arXiv.org
|
| Soggetti: | |
| Accesso online: | Citation/Abstract Full text outside of ProQuest |
| Tags: |
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 |