Skip to content

Commit 257da44

Browse files
committed
v. 1.4.0 release
(INFORMS JOC 2023 -- "A Set Covering Approach to Customized Coverage Instrumentation")
1 parent 08d103f commit 257da44

File tree

99 files changed

+2107
-300
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+2107
-300
lines changed

AUTHORS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Peter Ohmann <ohmann@cs.wisc.edu>
1+
Peter Ohmann <pohmann001@csbsju.edu>
22
Ben Liblit <liblit@cs.wisc.edu>

COPYING

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ CSI Release License
33
-------------------
44
Apache License, Version 2.0
55

6-
Copyright (c) 2017 Peter J. Ohmann and Benjamin R. Liblit
6+
Copyright (c) 2023 Peter J. Ohmann and Benjamin R. Liblit
77

88
Licensed under the Apache License, Version 2.0 (the "License");
99
you may not use this file except in compliance with the License.

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
* csi-1.4.0
2+
3+
** Build used for 2023 INFORMS JOC paper on optimal coverage optimization.
4+
15
* csi-1.3.0
26

37
** Build used for PLDI 2017 conference paper on program analysis.

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,27 @@ Preprint: http://pages.cs.wisc.edu/~liblit/ase-journal-2016/ase-journal-2016.pdf
1111

1212
## Current Release
1313

14-
[`csi-cc` v1.3.0](../../releases/tag/v1.3.0)
14+
[`csi-cc` v1.4.0](../../releases/tag/v1.4.0)
1515

1616
## Documentation
1717

1818
Documentation is included in the source download, or you can view the
19-
[online documentation](https://rawgit.com/pohmann/csi-cc/master/doc/index.html).
19+
[online documentation](https://pohmann.github.io/csi-cc).
2020

2121
## Changelog
2222

23+
### [v. 1.4.0](../../releases/tag/v1.4.0)
24+
25+
Release associated with the 2023 INFORMS JOC paper
26+
"A Set Covering Approach to Customized Coverage Instrumentation."
27+
Major changes include:
28+
29+
- Support for more LLVM releases (through 7.0)
30+
- A new, more efficient optimal coverage solver ("LEMON"), as proposed in
31+
the paper
32+
- Support for the GNU Indirect Function attribute for run-time selection
33+
among tracing schemes, as referenced in Peter Ohmann's PhD dissertation
34+
2335
### [v. 1.3.0](../../releases/tag/v1.3.0)
2436

2537
Release associated with the PLDI 2017 paper "Control-Flow Recovery from

SConstruct

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ opts.AddVariables(
2727
help='path to GAMS installation directory',
2828
default=None,
2929
validator=PathVariable.PathIsDir),
30+
PathVariable(key='LEMONDIR',
31+
help='path to LEMON installation directory. Requires GUROBIDIR',
32+
default=None,
33+
validator=PathVariable.PathIsDir),
34+
PathVariable(key='GUROBIDIR',
35+
help='path to GUROBI installation directory',
36+
default=None,
37+
validator=PathVariable.PathIsDir),
3038
BoolVariable(key='DEBUG',
3139
help='Compile with extra information for debugging',
3240
default=False),
@@ -41,6 +49,10 @@ env = Environment(
4149
)
4250
opts.Save('.scons-config', env)
4351

52+
if env.get('LEMONDIR', None) and not env.get('GUROBIDIR', None):
53+
print 'Must specify both LEMONDIR and GUROBIDIR'
54+
Exit(1)
55+
4456
########################################################################
4557
#
4658
# performance boosters

Tools/.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
extract-cfg
2-
extract_section.py
1+
/extract-cfg
2+
/extract_section.py

docs/.nojekyll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@ <h3>Build Command</h3>
3838

3939
<p>CSI is capable of aggressive optimization for some instrumentation schemes.
4040
See the <a href="building_comments.html">detailed build comments</a> for
41-
how to hook up with your installation of the
42-
<a href="https://www.gams.com/">GAMS</a> optimization framework. For full
43-
optimization, the following non-standard packages are required:</p>
44-
<ul><li><a href="https://www.gams.com/">GAMS</a> 24.2.1+</li></ul>
41+
how to hook up with your installation of either the
42+
<a href="https://www.gams.com/">GAMS</a> optimization framework
43+
or <a href="https://www.gurobi.com">GUROBI</a> optimizer.
4544

4645
<p>Having problems? See some <a href="building_comments.html">additional
4746
comments</a>.</p>
Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ <h3>Optional Build Configuration, Additional Comments, and Suggestions</h3>
2626
places) for Clang and GCC versions 4.6+. It is unlikely to build for
2727
GCC versions before 4.2.</p>
2828

29+
<hr class="minorsep"/>
30+
2931
<p>As noted, LLVM version 3.1 or newer is required. If LLVM is not installed
3032
in a standard location, you will probably have to tell scons where to find the
3133
LLVM configuration helper for your installation. You can do this by a command
@@ -39,13 +41,26 @@ <h3>Optional Build Configuration, Additional Comments, and Suggestions</h3>
3941
when building LLVM should look something like<br/>
4042
<kbd class="indent">configure --enable-shared</kbd></p>
4143

44+
<p>If you intend to use aggressive optimization (see below), you should
45+
also consider building LLVM with assertions enabled. The flags for this will
46+
vary with LLVM version, but, as an example, a standard build to use CSI with
47+
LLVM 4.0 would be:<br/>
48+
<kbd class="indent">cmake srcdir -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
49+
-DLLVM_ENABLE_RTTI=ON -DLLVM_LINK_LLVM_DYLIB=ON</kbd></p>
50+
51+
<hr class="minorsep"/>
52+
4253
<p>CSI is capable of aggressive optimization for program coverage
4354
instrumentation schemes. Specifically, if you are hoping to use fully-optimal
4455
instrumentation for program coverage (see the
4556
<a href="running_optimization.html">coverage optimization</a> page), you will
46-
need to build CSI with support for connecting to the
47-
<a href="https://www.gams.com/">GAMS</a> optimization framework. Naturally,
48-
you first need to have <a href="https://www.gams.com/">GAMS</a> installed.
57+
need to build CSI with support for connecting to one of the following:</p>
58+
<ul>
59+
<li>the <a href="https://www.gams.com/">GAMS</a> optimization framework</li>
60+
<li>the <a href="https://www.gurobi.com">GUROBI</a> optimizer AND the
61+
<a href="https://lemon.cs.elte.hu/trac/lemon">LEMON</a> graph library</li>
62+
</ul>
63+
<p>For the first option, you first need to have <a href="https://www.gams.com/">GAMS</a> installed.
4964
Then, you can tell CSI where to find your
5065
<a href="https://www.gams.com/">GAMS</a> installation by a command like<br/>
5166
<kbd class="indent">scons GAMSDIR=/path/to/GAMS</kbd><br/>
@@ -54,6 +69,16 @@ <h3>Optional Build Configuration, Additional Comments, and Suggestions</h3>
5469
the <kbd>gams</kbd> executable, as well as a subdirectory called
5570
<kbd>apifiles/</kbd>.</p>
5671

72+
<p>For the second option, you, again, need to up-to-date installations of
73+
<a href="https://www.gams.com/">GAMS</a> and
74+
<a href="https://lemon.cs.elte.hu/trac/lemon">LEMON</a>.
75+
Then, you can tell CSI where to find your installations by a command like<br/>
76+
<kbd class="indent">scons LEMONDIR=/path/to/lemon GUROBIDIR=/path/to/gurobi</kbd><br/>
77+
Again, these paths should point to the top-level directories of the installed
78+
tools, containing subdirectories like <kbd>bin</kbd> and <kbd>include</kbd>.
79+
80+
<hr class="minorsep"/>
81+
5782
<p>If building on OSX, note that many pre-packaged distributions of LLVM do not
5883
include a full LLVM shared object for linking with CSI. If you see linker
5984
errors when building with pre-installed LLVM, please try building LLVM from
File renamed without changes.

0 commit comments

Comments
 (0)