Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions
User-space programs rely on memory allocation primitives when they need to construct dynamic structures such as lists or trees. However, low-level OS kernel services and embedded device drivers typically avoid resorting to an external memory allocator in such cases, and store structure elements in c...
Gespeichert in:
Veröffentlicht in: | IEEE transactions on computer-aided design of integrated circuits and systems 2018-11, Vol.37 (11), p.2311-2322 |
---|---|
Hauptverfasser: | , , |
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | 2322 |
---|---|
container_issue | 11 |
container_start_page | 2311 |
container_title | IEEE transactions on computer-aided design of integrated circuits and systems |
container_volume | 37 |
creator | Liu, Jiangchao Chen, Liqian Rival, Xavier |
description | User-space programs rely on memory allocation primitives when they need to construct dynamic structures such as lists or trees. However, low-level OS kernel services and embedded device drivers typically avoid resorting to an external memory allocator in such cases, and store structure elements in contiguous arrays instead. This programming pattern leads to very complex code, based on data-structures that can be viewed and accessed either as arrays or as chained dynamic structures. The code correctness then depends on intricate invariants mixing both aspects. We propose a static analysis that is able to verify such programs. It relies on the combination of abstractions of the allocator array and of the dynamic structures built inside it. This approach allows to integrate program reasoning steps inherent in the array and in the chained structure into a single abstract interpretation. We report on the successful verification of several embedded OS kernel services and drivers. |
doi_str_mv | 10.1109/TCAD.2018.2858462 |
format | Article |
fullrecord | <record><control><sourceid>proquest_RIE</sourceid><recordid>TN_cdi_hal_primary_oai_HAL_hal_01963049v1</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><ieee_id>8493567</ieee_id><sourcerecordid>2121956328</sourcerecordid><originalsourceid>FETCH-LOGICAL-c370t-751566f0666486fabb50f77b5e38e3f9a24e452463473ccfee0f2ce1f5feed8e3</originalsourceid><addsrcrecordid>eNo9kEtLAzEUhYMoWKs_QNwMuHIxNe_MLEutD6gItroNmZmbGu1MajIj9N-bUnF1D5fvHA4HoUuCJ4Tg8nY1m95NKCbFhBai4JIeoREpmco5EeQYjTBVRY6xwqfoLMZPjAkXtByhr-nQ-9b0rs7eITjr6qR9l3mbzdsKmgaabLmLPbTZzDeQPZvObYdNgrp1drfrTJucyz4MdT8EiEn6kCyuS3jXu_Xgh5i9wjplxnN0Ys0mwsXfHaO3-_lq9pgvXh6eZtNFXjOF-1wJIqS0WErJC2lNVQlslaoEsAKYLQ3lkMpzybhidW0BsKU1ECuSbBIyRjeH3A-z0dvgWhN22hunH6cLvf9hUkqGeflDEnt9YLfBfw8Qe_3ph9ClepoSSkohGS0SRQ5UHXyMAex_LMF6v7_e76_3--u__ZPn6uBxAPDPF7xkQir2C7j-gc4</addsrcrecordid><sourcetype>Open Access Repository</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2121956328</pqid></control><display><type>article</type><title>Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions</title><source>IEEE Electronic Library (IEL)</source><creator>Liu, Jiangchao ; Chen, Liqian ; Rival, Xavier</creator><creatorcontrib>Liu, Jiangchao ; Chen, Liqian ; Rival, Xavier</creatorcontrib><description>User-space programs rely on memory allocation primitives when they need to construct dynamic structures such as lists or trees. However, low-level OS kernel services and embedded device drivers typically avoid resorting to an external memory allocator in such cases, and store structure elements in contiguous arrays instead. This programming pattern leads to very complex code, based on data-structures that can be viewed and accessed either as arrays or as chained dynamic structures. The code correctness then depends on intricate invariants mixing both aspects. We propose a static analysis that is able to verify such programs. It relies on the combination of abstractions of the allocator array and of the dynamic structures built inside it. This approach allows to integrate program reasoning steps inherent in the array and in the chained structure into a single abstract interpretation. We report on the successful verification of several embedded OS kernel services and drivers.</description><identifier>ISSN: 0278-0070</identifier><identifier>EISSN: 1937-4151</identifier><identifier>DOI: 10.1109/TCAD.2018.2858462</identifier><identifier>CODEN: ITCSDI</identifier><language>eng</language><publisher>New York: IEEE</publisher><subject>Abstract interpretation ; Aerodynamics ; Arrays ; Chains ; Computer Science ; Data models ; Device driver programs ; Dynamic scheduling ; Electronic devices ; Embedded systems ; Indexes ; Memory management ; operation system ; overlaid data structures ; Program verification (computers) ; Programming Languages ; Space programs ; Static analysis ; Static code analysis ; Task analysis ; verification</subject><ispartof>IEEE transactions on computer-aided design of integrated circuits and systems, 2018-11, Vol.37 (11), p.2311-2322</ispartof><rights>Copyright The Institute of Electrical and Electronics Engineers, Inc. (IEEE) 2018</rights><rights>Distributed under a Creative Commons Attribution 4.0 International License</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c370t-751566f0666486fabb50f77b5e38e3f9a24e452463473ccfee0f2ce1f5feed8e3</citedby><cites>FETCH-LOGICAL-c370t-751566f0666486fabb50f77b5e38e3f9a24e452463473ccfee0f2ce1f5feed8e3</cites><orcidid>0000-0002-2349-3667 ; 0000-0002-2875-6171</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://ieeexplore.ieee.org/document/8493567$$EHTML$$P50$$Gieee$$H</linktohtml><link.rule.ids>230,314,777,781,793,882,27905,27906,54739</link.rule.ids><linktorsrc>$$Uhttps://ieeexplore.ieee.org/document/8493567$$EView_record_in_IEEE$$FView_record_in_$$GIEEE</linktorsrc><backlink>$$Uhttps://hal.science/hal-01963049$$DView record in HAL$$Hfree_for_read</backlink></links><search><creatorcontrib>Liu, Jiangchao</creatorcontrib><creatorcontrib>Chen, Liqian</creatorcontrib><creatorcontrib>Rival, Xavier</creatorcontrib><title>Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions</title><title>IEEE transactions on computer-aided design of integrated circuits and systems</title><addtitle>TCAD</addtitle><description>User-space programs rely on memory allocation primitives when they need to construct dynamic structures such as lists or trees. However, low-level OS kernel services and embedded device drivers typically avoid resorting to an external memory allocator in such cases, and store structure elements in contiguous arrays instead. This programming pattern leads to very complex code, based on data-structures that can be viewed and accessed either as arrays or as chained dynamic structures. The code correctness then depends on intricate invariants mixing both aspects. We propose a static analysis that is able to verify such programs. It relies on the combination of abstractions of the allocator array and of the dynamic structures built inside it. This approach allows to integrate program reasoning steps inherent in the array and in the chained structure into a single abstract interpretation. We report on the successful verification of several embedded OS kernel services and drivers.</description><subject>Abstract interpretation</subject><subject>Aerodynamics</subject><subject>Arrays</subject><subject>Chains</subject><subject>Computer Science</subject><subject>Data models</subject><subject>Device driver programs</subject><subject>Dynamic scheduling</subject><subject>Electronic devices</subject><subject>Embedded systems</subject><subject>Indexes</subject><subject>Memory management</subject><subject>operation system</subject><subject>overlaid data structures</subject><subject>Program verification (computers)</subject><subject>Programming Languages</subject><subject>Space programs</subject><subject>Static analysis</subject><subject>Static code analysis</subject><subject>Task analysis</subject><subject>verification</subject><issn>0278-0070</issn><issn>1937-4151</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2018</creationdate><recordtype>article</recordtype><sourceid>RIE</sourceid><recordid>eNo9kEtLAzEUhYMoWKs_QNwMuHIxNe_MLEutD6gItroNmZmbGu1MajIj9N-bUnF1D5fvHA4HoUuCJ4Tg8nY1m95NKCbFhBai4JIeoREpmco5EeQYjTBVRY6xwqfoLMZPjAkXtByhr-nQ-9b0rs7eITjr6qR9l3mbzdsKmgaabLmLPbTZzDeQPZvObYdNgrp1drfrTJucyz4MdT8EiEn6kCyuS3jXu_Xgh5i9wjplxnN0Ys0mwsXfHaO3-_lq9pgvXh6eZtNFXjOF-1wJIqS0WErJC2lNVQlslaoEsAKYLQ3lkMpzybhidW0BsKU1ECuSbBIyRjeH3A-z0dvgWhN22hunH6cLvf9hUkqGeflDEnt9YLfBfw8Qe_3ph9ClepoSSkohGS0SRQ5UHXyMAex_LMF6v7_e76_3--u__ZPn6uBxAPDPF7xkQir2C7j-gc4</recordid><startdate>20181101</startdate><enddate>20181101</enddate><creator>Liu, Jiangchao</creator><creator>Chen, Liqian</creator><creator>Rival, Xavier</creator><general>IEEE</general><general>The Institute of Electrical and Electronics Engineers, Inc. (IEEE)</general><scope>97E</scope><scope>RIA</scope><scope>RIE</scope><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>7SP</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>1XC</scope><scope>VOOES</scope><orcidid>https://orcid.org/0000-0002-2349-3667</orcidid><orcidid>https://orcid.org/0000-0002-2875-6171</orcidid></search><sort><creationdate>20181101</creationdate><title>Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions</title><author>Liu, Jiangchao ; Chen, Liqian ; Rival, Xavier</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c370t-751566f0666486fabb50f77b5e38e3f9a24e452463473ccfee0f2ce1f5feed8e3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2018</creationdate><topic>Abstract interpretation</topic><topic>Aerodynamics</topic><topic>Arrays</topic><topic>Chains</topic><topic>Computer Science</topic><topic>Data models</topic><topic>Device driver programs</topic><topic>Dynamic scheduling</topic><topic>Electronic devices</topic><topic>Embedded systems</topic><topic>Indexes</topic><topic>Memory management</topic><topic>operation system</topic><topic>overlaid data structures</topic><topic>Program verification (computers)</topic><topic>Programming Languages</topic><topic>Space programs</topic><topic>Static analysis</topic><topic>Static code analysis</topic><topic>Task analysis</topic><topic>verification</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Liu, Jiangchao</creatorcontrib><creatorcontrib>Chen, Liqian</creatorcontrib><creatorcontrib>Rival, Xavier</creatorcontrib><collection>IEEE All-Society Periodicals Package (ASPP) 2005-present</collection><collection>IEEE All-Society Periodicals Package (ASPP) 1998-Present</collection><collection>IEEE Electronic Library (IEL)</collection><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Electronics & Communications Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><collection>Hyper Article en Ligne (HAL)</collection><collection>Hyper Article en Ligne (HAL) (Open Access)</collection><jtitle>IEEE transactions on computer-aided design of integrated circuits and systems</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext_linktorsrc</fulltext></delivery><addata><au>Liu, Jiangchao</au><au>Chen, Liqian</au><au>Rival, Xavier</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions</atitle><jtitle>IEEE transactions on computer-aided design of integrated circuits and systems</jtitle><stitle>TCAD</stitle><date>2018-11-01</date><risdate>2018</risdate><volume>37</volume><issue>11</issue><spage>2311</spage><epage>2322</epage><pages>2311-2322</pages><issn>0278-0070</issn><eissn>1937-4151</eissn><coden>ITCSDI</coden><abstract>User-space programs rely on memory allocation primitives when they need to construct dynamic structures such as lists or trees. However, low-level OS kernel services and embedded device drivers typically avoid resorting to an external memory allocator in such cases, and store structure elements in contiguous arrays instead. This programming pattern leads to very complex code, based on data-structures that can be viewed and accessed either as arrays or as chained dynamic structures. The code correctness then depends on intricate invariants mixing both aspects. We propose a static analysis that is able to verify such programs. It relies on the combination of abstractions of the allocator array and of the dynamic structures built inside it. This approach allows to integrate program reasoning steps inherent in the array and in the chained structure into a single abstract interpretation. We report on the successful verification of several embedded OS kernel services and drivers.</abstract><cop>New York</cop><pub>IEEE</pub><doi>10.1109/TCAD.2018.2858462</doi><tpages>12</tpages><orcidid>https://orcid.org/0000-0002-2349-3667</orcidid><orcidid>https://orcid.org/0000-0002-2875-6171</orcidid><oa>free_for_read</oa></addata></record> |
fulltext | fulltext_linktorsrc |
identifier | ISSN: 0278-0070 |
ispartof | IEEE transactions on computer-aided design of integrated circuits and systems, 2018-11, Vol.37 (11), p.2311-2322 |
issn | 0278-0070 1937-4151 |
language | eng |
recordid | cdi_hal_primary_oai_HAL_hal_01963049v1 |
source | IEEE Electronic Library (IEL) |
subjects | Abstract interpretation Aerodynamics Arrays Chains Computer Science Data models Device driver programs Dynamic scheduling Electronic devices Embedded systems Indexes Memory management operation system overlaid data structures Program verification (computers) Programming Languages Space programs Static analysis Static code analysis Task analysis verification |
title | Automatic Verification of Embedded System Code Manipulating Dynamic Structures Stored in Contiguous Regions |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-19T18%3A29%3A14IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_RIE&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Automatic%20Verification%20of%20Embedded%20System%20Code%20Manipulating%20Dynamic%20Structures%20Stored%20in%20Contiguous%20Regions&rft.jtitle=IEEE%20transactions%20on%20computer-aided%20design%20of%20integrated%20circuits%20and%20systems&rft.au=Liu,%20Jiangchao&rft.date=2018-11-01&rft.volume=37&rft.issue=11&rft.spage=2311&rft.epage=2322&rft.pages=2311-2322&rft.issn=0278-0070&rft.eissn=1937-4151&rft.coden=ITCSDI&rft_id=info:doi/10.1109/TCAD.2018.2858462&rft_dat=%3Cproquest_RIE%3E2121956328%3C/proquest_RIE%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2121956328&rft_id=info:pmid/&rft_ieee_id=8493567&rfr_iscdi=true |