Compiling C and C++ Programs for Dynamic White-Box Analysis View Full Text


Ontology type: schema:Chapter     


Chapter Info

DATE

2020-08-13

AUTHORS

Zuzana Baranová , Petr Ročkai

ABSTRACT

Building software packages from source is a complex and highly technical process. For this reason, most software comes with build instructions which have both a human-readable and an executable component. The latter in turn requires substantial infrastructure, which helps software authors deal with two major sources of complexity: first, generation and management of various build artefacts and their dependencies, and second, the differences between platforms, compiler toolchains and build environments.This poses a significant problem for white-box analysis tools, which often require that the source code of the program under test is compiled into an intermediate format, like the LLVM IR. In this paper, we present divcc, a drop-in replacement for C and C++ compilation tools which transparently fits into existing build tools and software deployment solutions. Additionally, divcc generates intermediate and native code in a single pass, ensuring that the final executable is built from the intermediate code that is being analysed. More... »

PAGES

30-45

Book

TITLE

Formal Methods. FM 2019 International Workshops

ISBN

978-3-030-54993-0
978-3-030-54994-7

Identifiers

URI

http://scigraph.springernature.com/pub.10.1007/978-3-030-54994-7_4

DOI

http://dx.doi.org/10.1007/978-3-030-54994-7_4

DIMENSIONS

https://app.dimensions.ai/details/publication/pub.1130075594


Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
Incoming Citations Browse incoming citations for this publication using opencitations.net

JSON-LD is the canonical representation for SciGraph data.

TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

[
  {
    "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
    "about": [
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Information and Computing Sciences", 
        "type": "DefinedTerm"
      }, 
      {
        "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0803", 
        "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
        "name": "Computer Software", 
        "type": "DefinedTerm"
      }
    ], 
    "author": [
      {
        "affiliation": {
          "alternateName": "Faculty of Informatics, Masaryk University, Brno, Czech Republic", 
          "id": "http://www.grid.ac/institutes/grid.10267.32", 
          "name": [
            "Faculty of Informatics, Masaryk University, Brno, Czech Republic"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Baranov\u00e1", 
        "givenName": "Zuzana", 
        "id": "sg:person.015764046444.46", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015764046444.46"
        ], 
        "type": "Person"
      }, 
      {
        "affiliation": {
          "alternateName": "Faculty of Informatics, Masaryk University, Brno, Czech Republic", 
          "id": "http://www.grid.ac/institutes/grid.10267.32", 
          "name": [
            "Faculty of Informatics, Masaryk University, Brno, Czech Republic"
          ], 
          "type": "Organization"
        }, 
        "familyName": "Ro\u010dkai", 
        "givenName": "Petr", 
        "id": "sg:person.07377571657.86", 
        "sameAs": [
          "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.07377571657.86"
        ], 
        "type": "Person"
      }
    ], 
    "datePublished": "2020-08-13", 
    "datePublishedReg": "2020-08-13", 
    "description": "Building software packages from source is a complex and highly technical process. For this reason, most software comes with build instructions which have both a human-readable and an executable component. The latter in turn requires substantial infrastructure, which helps software authors deal with two major sources of complexity: first, generation and management of various build artefacts and their dependencies, and second, the differences between platforms, compiler toolchains and build environments.This poses a significant problem for white-box analysis tools, which often require that the source code of the program under test is compiled into an intermediate format, like the LLVM IR. In this paper, we present divcc, a drop-in replacement for C and C++ compilation tools which transparently fits into existing build tools and software deployment solutions. Additionally, divcc generates intermediate and native code in a single pass, ensuring that the final executable is built from the intermediate code that is being analysed.", 
    "editor": [
      {
        "familyName": "Sekerinski", 
        "givenName": "Emil", 
        "type": "Person"
      }, 
      {
        "familyName": "Moreira", 
        "givenName": "Nelma", 
        "type": "Person"
      }, 
      {
        "familyName": "Oliveira", 
        "givenName": "Jos\u00e9 N.", 
        "type": "Person"
      }, 
      {
        "familyName": "Ratiu", 
        "givenName": "Daniel", 
        "type": "Person"
      }, 
      {
        "familyName": "Guidotti", 
        "givenName": "Riccardo", 
        "type": "Person"
      }, 
      {
        "familyName": "Farrell", 
        "givenName": "Marie", 
        "type": "Person"
      }, 
      {
        "familyName": "Luckcuck", 
        "givenName": "Matt", 
        "type": "Person"
      }, 
      {
        "familyName": "Marmsoler", 
        "givenName": "Diego", 
        "type": "Person"
      }, 
      {
        "familyName": "Campos", 
        "givenName": "Jos\u00e9", 
        "type": "Person"
      }, 
      {
        "familyName": "Astarte", 
        "givenName": "Troy", 
        "type": "Person"
      }, 
      {
        "familyName": "Gonnord", 
        "givenName": "Laure", 
        "type": "Person"
      }, 
      {
        "familyName": "Cerone", 
        "givenName": "Antonio", 
        "type": "Person"
      }, 
      {
        "familyName": "Couto", 
        "givenName": "Luis", 
        "type": "Person"
      }, 
      {
        "familyName": "Dongol", 
        "givenName": "Brijesh", 
        "type": "Person"
      }, 
      {
        "familyName": "Kutrib", 
        "givenName": "Martin", 
        "type": "Person"
      }, 
      {
        "familyName": "Monteiro", 
        "givenName": "Pedro", 
        "type": "Person"
      }, 
      {
        "familyName": "Delmas", 
        "givenName": "David", 
        "type": "Person"
      }
    ], 
    "genre": "chapter", 
    "id": "sg:pub.10.1007/978-3-030-54994-7_4", 
    "isAccessibleForFree": false, 
    "isPartOf": {
      "isbn": [
        "978-3-030-54993-0", 
        "978-3-030-54994-7"
      ], 
      "name": "Formal Methods. FM 2019 International Workshops", 
      "type": "Book"
    }, 
    "keywords": [
      "white-box analysis", 
      "build artifacts", 
      "compiler toolchain", 
      "build tools", 
      "executable components", 
      "software authors", 
      "native code", 
      "deployment solution", 
      "most software", 
      "compilation tools", 
      "LLVM IR", 
      "source code", 
      "intermediate code", 
      "intermediate format", 
      "build instructions", 
      "software package", 
      "analysis tools", 
      "code", 
      "technical processes", 
      "single pass", 
      "toolchain", 
      "executables", 
      "substantial infrastructure", 
      "tool", 
      "software", 
      "infrastructure", 
      "platform", 
      "complexity", 
      "format", 
      "significant problem", 
      "artifacts", 
      "environment", 
      "package", 
      "dependency", 
      "program", 
      "solution", 
      "instruction", 
      "management", 
      "generation", 
      "process", 
      "pass", 
      "source", 
      "components", 
      "authors", 
      "reasons", 
      "analysis", 
      "turn", 
      "major source", 
      "test", 
      "drop", 
      "replacement", 
      "differences", 
      "IR", 
      "paper", 
      "problem"
    ], 
    "name": "Compiling C and C++ Programs for Dynamic White-Box Analysis", 
    "pagination": "30-45", 
    "productId": [
      {
        "name": "dimensions_id", 
        "type": "PropertyValue", 
        "value": [
          "pub.1130075594"
        ]
      }, 
      {
        "name": "doi", 
        "type": "PropertyValue", 
        "value": [
          "10.1007/978-3-030-54994-7_4"
        ]
      }
    ], 
    "publisher": {
      "name": "Springer Nature", 
      "type": "Organisation"
    }, 
    "sameAs": [
      "https://doi.org/10.1007/978-3-030-54994-7_4", 
      "https://app.dimensions.ai/details/publication/pub.1130075594"
    ], 
    "sdDataset": "chapters", 
    "sdDatePublished": "2022-08-04T17:17", 
    "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
    "sdPublisher": {
      "name": "Springer Nature - SN SciGraph project", 
      "type": "Organization"
    }, 
    "sdSource": "s3://com-springernature-scigraph/baseset/20220804/entities/gbq_results/chapter/chapter_256.jsonl", 
    "type": "Chapter", 
    "url": "https://doi.org/10.1007/978-3-030-54994-7_4"
  }
]
 

Download the RDF metadata as:  json-ld nt turtle xml License info

HOW TO GET THIS DATA PROGRAMMATICALLY:

JSON-LD is a popular format for linked data which is fully compatible with JSON.

curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1007/978-3-030-54994-7_4'

N-Triples is a line-based linked data format ideal for batch operations.

curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1007/978-3-030-54994-7_4'

Turtle is a human-readable linked data format.

curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1007/978-3-030-54994-7_4'

RDF/XML is a standard XML format for linked data.

curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1007/978-3-030-54994-7_4'


 

This table displays all metadata directly associated to this object as RDF triples.

201 TRIPLES      22 PREDICATES      79 URIs      72 LITERALS      7 BLANK NODES

Subject Predicate Object
1 sg:pub.10.1007/978-3-030-54994-7_4 schema:about anzsrc-for:08
2 anzsrc-for:0803
3 schema:author N91d170998603486eabf17efde75d5134
4 schema:datePublished 2020-08-13
5 schema:datePublishedReg 2020-08-13
6 schema:description Building software packages from source is a complex and highly technical process. For this reason, most software comes with build instructions which have both a human-readable and an executable component. The latter in turn requires substantial infrastructure, which helps software authors deal with two major sources of complexity: first, generation and management of various build artefacts and their dependencies, and second, the differences between platforms, compiler toolchains and build environments.This poses a significant problem for white-box analysis tools, which often require that the source code of the program under test is compiled into an intermediate format, like the LLVM IR. In this paper, we present divcc, a drop-in replacement for C and C++ compilation tools which transparently fits into existing build tools and software deployment solutions. Additionally, divcc generates intermediate and native code in a single pass, ensuring that the final executable is built from the intermediate code that is being analysed.
7 schema:editor Nda1d98bf3fe741549c133d633670b0cb
8 schema:genre chapter
9 schema:isAccessibleForFree false
10 schema:isPartOf N28d45a0f392f4ce392b73051f9340200
11 schema:keywords IR
12 LLVM IR
13 analysis
14 analysis tools
15 artifacts
16 authors
17 build artifacts
18 build instructions
19 build tools
20 code
21 compilation tools
22 compiler toolchain
23 complexity
24 components
25 dependency
26 deployment solution
27 differences
28 drop
29 environment
30 executable components
31 executables
32 format
33 generation
34 infrastructure
35 instruction
36 intermediate code
37 intermediate format
38 major source
39 management
40 most software
41 native code
42 package
43 paper
44 pass
45 platform
46 problem
47 process
48 program
49 reasons
50 replacement
51 significant problem
52 single pass
53 software
54 software authors
55 software package
56 solution
57 source
58 source code
59 substantial infrastructure
60 technical processes
61 test
62 tool
63 toolchain
64 turn
65 white-box analysis
66 schema:name Compiling C and C++ Programs for Dynamic White-Box Analysis
67 schema:pagination 30-45
68 schema:productId N5a372d6b0d6449d98eddeae28a70bea4
69 N6da2b5d56254436d98718468c44082fb
70 schema:publisher N2e032d70f4e04ad382afc8c3f1d01aea
71 schema:sameAs https://app.dimensions.ai/details/publication/pub.1130075594
72 https://doi.org/10.1007/978-3-030-54994-7_4
73 schema:sdDatePublished 2022-08-04T17:17
74 schema:sdLicense https://scigraph.springernature.com/explorer/license/
75 schema:sdPublisher N00ea5bf97bef42488223606b30dd0b40
76 schema:url https://doi.org/10.1007/978-3-030-54994-7_4
77 sgo:license sg:explorer/license/
78 sgo:sdDataset chapters
79 rdf:type schema:Chapter
80 N00ea5bf97bef42488223606b30dd0b40 schema:name Springer Nature - SN SciGraph project
81 rdf:type schema:Organization
82 N0ac07e2254be45aa8560569ea6d74dbe schema:familyName Sekerinski
83 schema:givenName Emil
84 rdf:type schema:Person
85 N1b8f4e87d87b47f19af43c1738b65e9e rdf:first sg:person.07377571657.86
86 rdf:rest rdf:nil
87 N1c46e782adb042a5b335f314e09e9e00 rdf:first Nd7b8565a167a4369b1320e26471f2edc
88 rdf:rest N81c87c19af17492d961da437e22e517e
89 N1d13c08f271d48b2bfdda9ff50d4d1a1 rdf:first Nbec4087f442543708384a344855d8cab
90 rdf:rest Nd4265dedaa71412988cfed5be81ab7a8
91 N26676664a53b407a89c3b94e81d5d588 rdf:first Na63623e34c114aa49fceabbfaa555c7c
92 rdf:rest Nb5dd8834a50948a8a682b045835708da
93 N28d45a0f392f4ce392b73051f9340200 schema:isbn 978-3-030-54993-0
94 978-3-030-54994-7
95 schema:name Formal Methods. FM 2019 International Workshops
96 rdf:type schema:Book
97 N2e032d70f4e04ad382afc8c3f1d01aea schema:name Springer Nature
98 rdf:type schema:Organisation
99 N4478a0e4ea12416e9190a609e57a3d5a rdf:first N82c044051a9e414fa81e68fa6d269c2d
100 rdf:rest Na938fcaeb4504f158d6708a3922c90fa
101 N480cccda13d54175bdd5d6adeb5dcb1c schema:familyName Kutrib
102 schema:givenName Martin
103 rdf:type schema:Person
104 N4af0f523ac8d48dbb99162db853d41fb rdf:first N96c1ed58956948548f1aae94540c4b37
105 rdf:rest Naf55c447e6234e639752dac6d632ef0d
106 N5949d88d8ab74cfdb90acbbdec97f5ed schema:familyName Campos
107 schema:givenName José
108 rdf:type schema:Person
109 N5a372d6b0d6449d98eddeae28a70bea4 schema:name dimensions_id
110 schema:value pub.1130075594
111 rdf:type schema:PropertyValue
112 N6da2b5d56254436d98718468c44082fb schema:name doi
113 schema:value 10.1007/978-3-030-54994-7_4
114 rdf:type schema:PropertyValue
115 N6db796a1b43545fba05bb052bb3e209c rdf:first Nc4f6fd20ca08412bbaa0d4485843e438
116 rdf:rest N26676664a53b407a89c3b94e81d5d588
117 N7988748b9dab45c88e879a0e927516ea schema:familyName Delmas
118 schema:givenName David
119 rdf:type schema:Person
120 N81c87c19af17492d961da437e22e517e rdf:first N7988748b9dab45c88e879a0e927516ea
121 rdf:rest rdf:nil
122 N82c044051a9e414fa81e68fa6d269c2d schema:familyName Couto
123 schema:givenName Luis
124 rdf:type schema:Person
125 N82daf1383af8409590a4285e9bb2fb6c schema:familyName Guidotti
126 schema:givenName Riccardo
127 rdf:type schema:Person
128 N86c77073f5a1456e9023fc4fe360d464 schema:familyName Dongol
129 schema:givenName Brijesh
130 rdf:type schema:Person
131 N8a230c57aa834e64a5dedc83ba6edaf9 schema:familyName Farrell
132 schema:givenName Marie
133 rdf:type schema:Person
134 N91d170998603486eabf17efde75d5134 rdf:first sg:person.015764046444.46
135 rdf:rest N1b8f4e87d87b47f19af43c1738b65e9e
136 N96c1ed58956948548f1aae94540c4b37 schema:familyName Luckcuck
137 schema:givenName Matt
138 rdf:type schema:Person
139 N9d0fac41e48640b08d260b30f2fb6509 schema:familyName Astarte
140 schema:givenName Troy
141 rdf:type schema:Person
142 Na5a1727936174809a1dd9753f5803a31 rdf:first Nb152294fb49c4d5fa72d3f41db7e3906
143 rdf:rest N6db796a1b43545fba05bb052bb3e209c
144 Na63623e34c114aa49fceabbfaa555c7c schema:familyName Ratiu
145 schema:givenName Daniel
146 rdf:type schema:Person
147 Na88dbdca6663455a82e0670d38980da7 schema:familyName Cerone
148 schema:givenName Antonio
149 rdf:type schema:Person
150 Na938fcaeb4504f158d6708a3922c90fa rdf:first N86c77073f5a1456e9023fc4fe360d464
151 rdf:rest Nfa9d723282364ae280749c5ab17870e7
152 Naf55c447e6234e639752dac6d632ef0d rdf:first Nf20f09a5b3b44a5e968d95a3d5bdfd4f
153 rdf:rest Ncb590c42415141129eed33b52459f646
154 Nb152294fb49c4d5fa72d3f41db7e3906 schema:familyName Moreira
155 schema:givenName Nelma
156 rdf:type schema:Person
157 Nb20af89c4c704e18abcf4488b0a7377e rdf:first N9d0fac41e48640b08d260b30f2fb6509
158 rdf:rest N1d13c08f271d48b2bfdda9ff50d4d1a1
159 Nb5dd8834a50948a8a682b045835708da rdf:first N82daf1383af8409590a4285e9bb2fb6c
160 rdf:rest Ne29abc15575d46b797ff9340a64fa881
161 Nbec4087f442543708384a344855d8cab schema:familyName Gonnord
162 schema:givenName Laure
163 rdf:type schema:Person
164 Nc4f6fd20ca08412bbaa0d4485843e438 schema:familyName Oliveira
165 schema:givenName José N.
166 rdf:type schema:Person
167 Ncb590c42415141129eed33b52459f646 rdf:first N5949d88d8ab74cfdb90acbbdec97f5ed
168 rdf:rest Nb20af89c4c704e18abcf4488b0a7377e
169 Nd4265dedaa71412988cfed5be81ab7a8 rdf:first Na88dbdca6663455a82e0670d38980da7
170 rdf:rest N4478a0e4ea12416e9190a609e57a3d5a
171 Nd7b8565a167a4369b1320e26471f2edc schema:familyName Monteiro
172 schema:givenName Pedro
173 rdf:type schema:Person
174 Nda1d98bf3fe741549c133d633670b0cb rdf:first N0ac07e2254be45aa8560569ea6d74dbe
175 rdf:rest Na5a1727936174809a1dd9753f5803a31
176 Ne29abc15575d46b797ff9340a64fa881 rdf:first N8a230c57aa834e64a5dedc83ba6edaf9
177 rdf:rest N4af0f523ac8d48dbb99162db853d41fb
178 Nf20f09a5b3b44a5e968d95a3d5bdfd4f schema:familyName Marmsoler
179 schema:givenName Diego
180 rdf:type schema:Person
181 Nfa9d723282364ae280749c5ab17870e7 rdf:first N480cccda13d54175bdd5d6adeb5dcb1c
182 rdf:rest N1c46e782adb042a5b335f314e09e9e00
183 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
184 schema:name Information and Computing Sciences
185 rdf:type schema:DefinedTerm
186 anzsrc-for:0803 schema:inDefinedTermSet anzsrc-for:
187 schema:name Computer Software
188 rdf:type schema:DefinedTerm
189 sg:person.015764046444.46 schema:affiliation grid-institutes:grid.10267.32
190 schema:familyName Baranová
191 schema:givenName Zuzana
192 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015764046444.46
193 rdf:type schema:Person
194 sg:person.07377571657.86 schema:affiliation grid-institutes:grid.10267.32
195 schema:familyName Ročkai
196 schema:givenName Petr
197 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.07377571657.86
198 rdf:type schema:Person
199 grid-institutes:grid.10267.32 schema:alternateName Faculty of Informatics, Masaryk University, Brno, Czech Republic
200 schema:name Faculty of Informatics, Masaryk University, Brno, Czech Republic
201 rdf:type schema:Organization
 




Preview window. Press ESC to close (or click here)


...