Skip to content

Commit 956972a

Browse files
author
Martin Mory
committed
Merge branch 'development'
2 parents 9b8810b + 2a941ee commit 956972a

File tree

532 files changed

+12996
-10696
lines changed

Some content is hidden

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

532 files changed

+12996
-10696
lines changed

.clang-format

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
11
BasedOnStyle: LLVM
2+
SortIncludes: true
3+
IncludeBlocks: Regroup
4+
BreakStringLiterals: true
5+
IncludeCategories:
6+
- Regex: '^"phasar/'
7+
Priority: 1
8+
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
9+
Priority: 2
10+
- Regex: '".*"'
11+
Priority: 3
12+
- Regex: '<[[:alnum:]_]+>'
13+
Priority: 4

.clang-tidy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ CheckOptions:
5555
- key: readability-identifier-naming.ParameterIgnoredRegexp
5656
value: (d|d1|d2|d3|d4|d5|eP|f|n)
5757
- key: readability-identifier-naming.FunctionIgnoredRegexp
58-
value: (try_emplace|from_json|to_json|equal_to)
58+
value: (try_emplace|from_json|to_json|equal_to|to_string)
5959
- key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
6060
value: 1
6161
- key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions

.github/CODEOWNERS

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,18 @@
77
/include/phasar/PhasarLLVM/DataflowSolver/IfdsIde/Solver/IDESolver.h @pdschubert
88

99
/include/phasar/PhasarLLVM/DataflowSolver/IfdsIde/FlowEdgeFunctionCache.h @vulder
10+
/include/phasar/PhasarLLVM/DataflowSolver/IfdsIde/EdgeFunctionSingletonFactory.h @vulder
11+
/unittests/PhasarLLVM/DataFlowSolver/IfdsIde/EdgeFunctionSingletonFactoryTest.cpp @vulder
1012

1113
/include/phasar/PhasarLLVM/DataflowSolver/Mono @pdschubert
1214

1315
/img @pdschubert
1416

15-
/include/phasar/PhasarLLVM/DataFlowSolver/IfdsIde/Problems/IDEInstInteractionAnalysis.h @pdschubert @vulder
16-
/include/phasar/PhasarLLVM/DataFlowSolver/IfdsIde/Problems/ExtendedTaintAnalysis/ @fabianbs96
17-
/include/phasar/PhasarLLVM/DataFlowSolver/IfdsIde/Problems/IDEExtendedTaintAnalysis.h @fabianbs96
18-
/lib/PhasarLLVM/DataFlowSolver/IfdsIde/Problems/IDEExtendedTaintAnalysis.cpp @fabianbs96
19-
/lib/PhasarLLVM/DataFlowSolver/IfdsIde/Problems/ExtendedTaintAnalysis/ @fabianbs96
17+
/include/phasar/PhasarLLVM/DataFlow/IfdsIde/Problems/IDEInstInteractionAnalysis.h @pdschubert @vulder
18+
/include/phasar/PhasarLLVM/DataFlow/IfdsIde/Problems/ExtendedTaintAnalysis/ @fabianbs96
19+
/include/phasar/PhasarLLVM/DataFlow/IfdsIde/Problems/IDEExtendedTaintAnalysis.h @fabianbs96
20+
/lib/PhasarLLVM/DataFlow/IfdsIde/Problems/IDEExtendedTaintAnalysis.cpp @fabianbs96
21+
/lib/PhasarLLVM/DataFlow/IfdsIde/Problems/ExtendedTaintAnalysis/ @fabianbs96
2022

2123
/include/phasar/PhasarLLVM/AnalysisStrategy/ @pdschubert
2224

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ jobs:
5151
libclang-common-14-dev \
5252
libclang-14-dev \
5353
libclang-cpp14-dev \
54-
clang-tidy-14
54+
clang-tidy-14 \
55+
libclang-rt-14-dev
5556
57+
- uses: swift-actions/setup-swift@v1
5658
- name: Building Phasar in ${{ matrix.build }} with ${{ matrix.compiler[0] }}
5759
env:
5860
BUILD_TYPE: ${{ matrix.build }}
@@ -65,6 +67,7 @@ jobs:
6567
cmake .. \
6668
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
6769
-DCMAKE_CXX_COMPILER=$CXX \
70+
-DBUILD_SWIFT_TESTS=1 \
6871
-G Ninja
6972
cmake --build .
7073

BreakingChanges.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Breaking Changes
2+
3+
## v0323
4+
5+
- `EdgeFunctionPtrType` is no longer a `std::shared_ptr`. Instead `EdgeFunction<l_t>` should be used directly. `EdgeFunction` is now a *value-type* that encapsulates its memory management by itself.
6+
- Concrete `EdgeFunction` types no longer derive from any base-class. Instead they just need to implement the required API functions. `EdgeFunction` implementations should me move-constructible and can be implicitly cast to `EdgeFunction`. To verify that your type implements the edge function interface use the `IsEdgeFunction` type trait. The API functions have been changed as follows:
7+
- All API functions of `EdgeFunction` must be `const` qualified.
8+
- `EdgeFunctionPtrType composeWith(EdgeFunctionPtrType SecondFunction)` and `EdgeFunctionPtrType joinWith(EdgeFunctionPtrType OtherFunction)` have been changed to `static EdgeFunction<l_t> compose(EdgeFunctionRef<T> This, const EdgeFunction<l_t>& SecondFunction)` and `static EdgeFunction<l_t> join(EdgeFunctionRef<T> This, const EdgeFunction<l_t>& OtherFunction)` respectively. Here, the `This` parameter models the former `shared_from_this()`.
9+
- `bool equal_to(EdgeFunctionPtrType Other)const` has been changed to `bool operator==(const T &Other)const noexcept`, where `T` is your concrete edge function type.
10+
- `void print(llvm::raw_ostream &OS, bool IsForDebug)` has been changed to `friend llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const T& EF)`.
11+
- `EdgeFunction` is tagged with `[[clang::trivial_abi]]`. Hence, you should not rely on any destruction order within a top-level statement that uses temporary `EdgeFunction` objects.
12+
- `EdgeFunctionSingletonFactory` has been removed. Use `EdgeFunctionSingletonCache` instead.
13+
- `TaintConfig` has been renamed to `LLVMTaintConfig`. For generic code you may want to use the LLVM-independent `TaintConfigBase` CRTP interface instead.
14+
- Renamed `phasar/PhasarLLVM/DataFlowSolver/` to either `phasar/DataFlow/` or `phasar/PhasarLLVM/DataFlow/` depending on whether the components need LLVMCore. Analoguous changes in `lib/` and `unittests/`.
15+
An incomplete list of moved/renamed files:
16+
- `phasar/PhasarLLVM/DataFlowSolver/IfdsIde/Solver/*` => `phasar/DataFlow/IfdsIde/Solver/*`
17+
- `phasar/PhasarLLVM/DataFlowSolver/IfdsIde/IDETabulationProblem.h` => `phasar/DataFlow/IfdsIde/IDETabulationProblem.h`
18+
- `phasar/DB/LLVMProjectIRDB.h` => `phasar/PhasarLLVM/DB/LLVMProjectIRDB.h`
19+
- ...
20+
- Renamed and split up some libraries:
21+
- `phasar_phasarllvm_utils` => `phasar_llvm_utils`
22+
- `phasar_typehierarchy` => `phasar_llvm_typehierarchy`
23+
- `phasar_ifdside` => `phasar_llvm_ifdside`
24+
- `phasar_controlflow` has its LLVM dependent stuff moved to `phasar_llvm_controlflow`
25+
- `phasar_db` has its LLVM dependent stuff moved to `phasar_llvm_db`
26+
- `phasar_pointer` has its LLVM dependent stuff moved to `phasar_llvm_pointer`
27+
- Renamed the phasar tool `phasar-llvm` to `phasar-cli`
28+
- `LLVMPointsTo[.*]` has been renamed to `LLVMAlias[.*]`
29+
- The ctor of `LLVMAliasSet` now takes the `LLVMProjectIRDB` as pointer instead of a reference to better document that it may capture the IRDB by reference.
30+
- The `PointsToInfo` interface has been replaced by the CRTP interface `AliasInfoBase`. Introduced two type-erased implementations of that interface: `AliasInfo` and `AliasInfoRef`. In most cases you should replace `PointsToInfo *` and `LLVMPointsToInfo *` by `AliasInfoRef`, bzw. `LLVMAliasInfoRef`.
31+
- Introduced a new interface `PointsToInfoBase` and type-erased implementations `PointstoInfo` and `PointsToInfoRef`. Don't confuse them with the old `PointsToInfo`!!! (However, they have different APIs, so you should encounter compilation errors then)
32+
33+
## v1222
34+
35+
- Removed virtual interfaces `CFG<N,F>` and `ICFG<N,F>` and replaced by CRTP interfaces `CFGBase` and `ICFGBase`. Use the concrete types `LLVMBasedICFG` and `LLVMBasedCFG` instead. In template code you can use the type traits `is_crtp_base_of_v` and `is_icfg_v` to check for conformance to the interfaces.
36+
- The `LLVMBasedICFG` now takes the IRDB as pointer instead of a reference to better document that it may capture the IRDB by reference.
37+
- Renamed `ProjectIRDB` to `LLVMProjectIRDB` and added a generic CRTP interface `ProjectIRDBBase` that does not depend on LLVM
38+
- Changed the API of `LLVMProjectIRDB`: The IRDB does no longer link multiple LLVM modules together, i.e. the ctor that reads a module from a file now takes a single filename instead of a vector. If you still want to link multiple LLVM modules together, use LLVM's Linker functionality instead. `ProjecIRDB::getAllModules()` has been removed and `ProjectIRDB::getWPAModule()` has been renamed to `LLVMProjectIRDB::getModule()`.
39+
- The `LLVMProjectIRDB` ctor that takes a raw-pointer to `llvm::Module` does no longer preprocess the module (i.e. attaching metadata IDs to it). You can still explicitly use the `ValueAnnotationPass` to do so manually.
40+
- The type `WholeProgramAnalysis` has been removed. Use `AnalysisController` instead.
41+
- The IFDS and IDE TabulationProblems no longer take all of `LLVMProjectIRDB*`, `LLVMTypeHierarchy*`, `LLVMPointsToInfo*` and `LLVMBasedICFG*` as an argument. Instead, they only get what they need.
42+
- The `IFDSSolver` and `IDESolver` now take an instance of the `ICFGBase` interface as additional argument to their ctor (because the analysis problems now not necessarily store a reference to it anymore).
43+
- The `IDETabulationProblem` is now a base class of `IFDSTabulationProblem` (and not vice versa as it was previously). In their ctors they only take the bare minimum of arguments: The IRDB, the entrypoints and optionally the special zero-value. If the zero-value is not passed in the ctor (as it was previously), it has to be set from within the client analysis' ctor. You may use the new function `initializeZeroValue(d_t)` for this.

CMakeLists.txt

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ include("phasar_macros")
5353

5454
option(PHASAR_BUILD_UNITTESTS "Build all tests (default is ON)" ON)
5555

56+
option(BUILD_SWIFT_TESTS "Builds the Swift tests (Swift compiler has to be installed manually beforehand!)" OFF)
57+
if (BUILD_SWIFT_TESTS)
58+
set(CMAKE_Swift_FLAGS_RELEASE "-g")
59+
set(CMAKE_Swift_FLAGS_RELWITHDEBINFO "-g")
60+
enable_language(Swift)
61+
endif(BUILD_SWIFT_TESTS)
62+
5663
option(PHASAR_BUILD_OPENSSL_TS_UNITTESTS "Build OPENSSL typestate tests (require OpenSSL, default is OFF)" OFF)
5764

5865
option(PHASAR_BUILD_IR "Build IR test code (default is ON)" ON)
@@ -107,10 +114,14 @@ include_directories(
107114
${PHASAR_SRC_DIR}/include
108115
)
109116

110-
set(PHASAR_INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}/phasar)
111-
112117
if (NOT PHASAR_IN_TREE)
113-
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${PHASAR_INSTALL_LIBDIR})
118+
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
119+
120+
if (NOT "${CMAKE_INSTALL_LIBDIR}" STREQUAL "lib")
121+
message(STATUS "Detected CMAKE_INSTALL_LIBDIR that deviates from 'lib': ${CMAKE_INSTALL_LIBDIR}. Add ${CMAKE_INSTALL_PREFIX}/lib to the RPATH as json-schema-validator needs it")
122+
list(APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
123+
endif()
124+
114125
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
115126
endif()
116127

@@ -120,6 +131,17 @@ else()
120131
set(PHASAR_STD_FILESYSTEM stdc++fs)
121132
endif()
122133

134+
set(PHASAR_CUSTOM_CONFIG_INSTALL_DIR "" CACHE STRING "If set, customizes the directory, where configuration files for PhASAR are installed (default is /usr/local/.phasar-config)")
135+
if ("${PHASAR_CUSTOM_CONFIG_INSTALL_DIR}" STREQUAL "")
136+
set(PHASAR_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/.phasar-config/")
137+
else()
138+
set(PHASAR_CONFIG_INSTALL_DIR "${PHASAR_CUSTOM_CONFIG_INSTALL_DIR}")
139+
endif()
140+
141+
add_compile_definitions(PHASAR_CONFIG_DIR="${PHASAR_CONFIG_INSTALL_DIR}")
142+
add_compile_definitions(PHASAR_DIR="${PHASAR_SRC_DIR}")
143+
144+
123145
### Adding external libraries
124146
# Threads
125147
find_package(Threads)
@@ -144,7 +166,7 @@ set(CMAKE_CXX_CLANG_TIDY "")
144166
set(BUILD_TESTS OFF CACHE BOOL "Build json-schema-validator-tests")
145167

146168
# Make nlohmann_json_schema_validator happy by telling it how to find the single include of nlohmann_json
147-
include_directories(external/json/single_include/)
169+
include_directories(SYSTEM external/json/single_include/)
148170

149171
if (PHASAR_IN_TREE)
150172
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS nlohmann_json_schema_validator)
@@ -301,7 +323,7 @@ endif()
301323

302324
set(INCLUDE_INSTALL_DIR include/ CACHE PATH "Install dir of headers")
303325

304-
# Install targets of phasar-llvm, other executables, and libraries are to be
326+
# Install targets of phasar-cli, other executables, and libraries are to be
305327
# found in the individual subdirectories of tools/
306328

307329
# Install Phasar include directory
@@ -326,15 +348,17 @@ install(DIRECTORY external/googletest/googletest/include/gtest/
326348
# Install Phasar utils helper scripts
327349
install(DIRECTORY utils/
328350
DESTINATION bin
329-
FILES_MATCHING PATTERN "phasar-*"
351+
FILES_MATCHING
352+
PATTERN "CodeGen" EXCLUDE # CodeGen does not contain files to install
353+
PATTERN "phasar-*"
330354
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
331355
GROUP_EXECUTE GROUP_READ
332356
WORLD_EXECUTE WORLD_READ
333357
)
334358

335-
# Install the Phasar config files into ~/.config/phasar/
359+
# Install the Phasar config files into CMAKE_INSTALL_PREFIX/.phasar-config/
336360
install(DIRECTORY config/
337-
DESTINATION $ENV{HOME}/.config/phasar
361+
DESTINATION ${PHASAR_CONFIG_INSTALL_DIR}
338362
PATTERN "config/*"
339363
PERMISSIONS OWNER_WRITE OWNER_READ
340364
GROUP_WRITE GROUP_READ

Config.cmake.in

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,24 @@ find_package(Boost 1.65.1 COMPONENTS program_options graph REQUIRED)
1212

1313
set(PHASAR_COMPONENTS
1414
utils
15-
config
16-
phasarllvm_utils
1715
passes
16+
config
1817
db
1918
pointer
20-
typehierarchy
2119
controlflow
20+
21+
llvm_utils
22+
llvm_db
23+
llvm_pointer
24+
llvm_typehierarchy
25+
llvm_controlflow
26+
2227
taintconfig
23-
ifdside
28+
mono
29+
llvm
30+
llvm_ifdside
31+
analysis_strategy
32+
controller
2433
)
2534

2635
foreach(component ${PHASAR_COMPONENTS})

Dockerfile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,11 @@ RUN apt-key adv --fetch-keys https://apt.llvm.org/llvm-snapshot.gpg.key && \
3333
libclang-common-14-dev \
3434
libclang-14-dev \
3535
libclang-cpp14-dev \
36-
clang-tidy-14
36+
clang-tidy-14 \
37+
libclang-rt-14-dev
3738

3839
RUN pip3 install Pygments pyyaml
3940

40-
# installing boost
41-
RUN apt install libboost-all-dev -y
4241

4342

4443
# installing wllvm
@@ -58,4 +57,4 @@ RUN mkdir -p build && cd build && \
5857
-G Ninja && \
5958
cmake --build .
6059

61-
ENTRYPOINT [ "./build/tools/phasar-llvm/phasar-llvm" ]
60+
ENTRYPOINT [ "./build/tools/phasar-cli/phasar-cli" ]

README.md

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ PhASAR a LLVM-based Static Analysis Framework
66
[![C++ Standard](https://img.shields.io/badge/C++_Standard-C%2B%2B17-blue.svg?style=flat&logo=c%2B%2B)](https://isocpp.org/)
77
[![GitHub license](https://img.shields.io/badge/license-MIT-blueviolet.svg)](https://raw.githubusercontent.com/secure-software-engineering/phasar/master/LICENSE.txt)
88

9-
Version 1222
9+
Version 0323
1010

1111
Secure Software Engineering Group
1212
---------------------------------
1313

14-
+ Philipp Dominik Schubert (philipp.schubert@upb.de) and others
14+
+ Fabian Schiebel (fabian.schiebel@iem.fraunhofer.de), Martin Mory (martin.mory@upb.de), Philipp Dominik Schubert (philipp.schubert@upb.de) and others
1515
+ Please also refer to https://phasar.org/
1616

1717
Required version of the C++ standard
@@ -30,9 +30,13 @@ fully-automated manner on the specified LLVM IR target code. Computing points-to
3030
information, call-graph(s), etc. is done by the framework, thus you can focus on
3131
what matters.
3232

33+
Breaking Changes
34+
----------------
35+
To keep PhASAR in a state that it is well suited for state-of-the-art research in static analysis, as well as for productive use, we have to make breaking changes. Please refer to [Breaking Changes](./BreakingChanges.md) for detailed information on what was broken recently and how to migrate.
36+
3337
How do I get started with PhASAR?
3438
---------------------------------
35-
We have some documentation on PhASAR in our [_**wiki**_](https://github.com/secure-software-engineering/phasar/wiki). You probably would like to read
39+
We have some documentation on PhASAR in our [_**Wiki**_](https://github.com/secure-software-engineering/phasar/wiki). You probably would like to read
3640
this README first and then have a look on the material provided on https://phasar.org/
3741
as well. Please also have a look on PhASAR's project directory and notice the project directory
3842
examples/ as well as the custom tool tools/myphasartool.cpp.
@@ -45,6 +49,21 @@ prerequisites and compilation. It is recommended to compile PhASAR yourself in
4549
order to get the full C++ experience and to have full control over the build
4650
mode.
4751

52+
As a shortcut for the very first PhASAR build on your system, you can use our [bootstrap](./bootstrap.sh) script:
53+
54+
```bash
55+
$ ./bootstrap.sh
56+
```
57+
58+
Note: If you want to do changes within PhASAR, it is recommended to build it in Debug mode:
59+
```bash
60+
$ ./bootstrap.sh -DCMAKE_BUILD_TYPE=Debug
61+
```
62+
63+
The bootstrap script may ask for superuser permissions (to install the dependencies); however it is not recommended to start the whole script with `sudo`.
64+
65+
For subsequent builds, see [Compiling PhASAR](#compiling-phasar-if-not-already-done-using-the-installation-scripts).
66+
4867
Please help us to improve PhASAR
4968
--------------------------------
5069
You are using PhASAR and would like to help us in the future? Then please
@@ -65,10 +84,12 @@ PhASAR using an Ubuntu or Unix-like system.
6584

6685
Therefore, we provide an installation script. To install PhASAR, just navigate to the top-level
6786
directory of PhASAR and use the following command:
68-
```
69-
$ sudo ./bootstrap.sh
87+
```bash
88+
$ ./bootstrap.sh --install
7089
```
7190

91+
The bootstrap script may ask for superuser permissions.
92+
7293
Done!
7394

7495

@@ -86,8 +107,7 @@ $ export CXX=/usr/local/bin/clang++
86107
You may need to adjust the paths according to your system. When you cloned PhASAR from Github you need to initialize PhASAR's submodules before building it:
87108

88109
```
89-
$ git submodule init
90-
$ git submodule update
110+
$ git submodule update --init
91111
```
92112

93113
If you downloaded PhASAR as a compressed release (e.g. .zip or .tar.gz) you can use the `init-submodules-release.sh` script that manually clones the required submodules:
@@ -101,27 +121,25 @@ Navigate into the PhASAR directory. The following commands will do the job and c
101121
```
102122
$ mkdir build
103123
$ cd build/
104-
$ cmake -DCMAKE_BUILD_TYPE=Release ..
105-
$ make -j $(nproc) # or use a different number of cores to compile it
106-
$ sudo make install # if you wish to install PhASAR system wide
124+
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
125+
$ ninja -j $(nproc) # or use a different number of cores to compile it
126+
$ sudo ninja install # only if you wish to install PhASAR system wide
107127
```
108128

109129
When you have used the `bootstrap.sh` script to install PhASAR, the above steps are already done.
110130
Use them as a reference if you wish to modify PhASAR and recompile it.
111131

112132
After compilation using cmake the following two binaries can be found in the build/ directory:
113133

114-
+ phasar-llvm - the actual PhASAR command-line tool
134+
+ phasar-cli - the actual PhASAR command-line tool (previously called `phasar-llvm`)
115135
+ myphasartool - an example tool that shows how tools can be build on top of PhASAR
116136

117137
Use the command:
118138

119-
`$ ./phasar-llvm --help`
139+
`$ ./phasar-cli --help`
120140

121141
in order to display the manual and help message.
122142

123-
`$ sudo make install`
124-
125143
Please be careful and check if errors occur during the compilation.
126144

127145
When using CMake to compile PhASAR the following optional parameters can be used:
@@ -130,7 +148,8 @@ When using CMake to compile PhASAR the following optional parameters can be used
130148
|-----------|--------|
131149
| <b>BUILD_SHARED_LIBS</b> : BOOL | Build shared libraries (default is ON) |
132150
| <b>CMAKE_BUILD_TYPE</b> : STRING | Build PhASAR in 'Debug' or 'Release' mode <br> (default is 'Debug') |
133-
| <b>CMAKE_INSTALL_PREFIX</b> : PATH | Path where PhASAR will be installed if <br> “make install” is invoked or the “install” <br> target is built (default is /usr/local/phasar) |
151+
| <b>CMAKE_INSTALL_PREFIX</b> : PATH | Path where PhASAR will be installed if <br> "ninja install” is invoked or the “install” <br> target is built (default is /usr/local/phasar) |
152+
| <b>PHASAR_CONFIG_INSTALL_PREFIX</b> : PATH | Path where PhASAR's configuration files will be installed if <br> ninja install” is invoked or the “install” <br> target is built. Expression will be evaluated within CMAKE_INSTALL_PREFIX, so prefer absolute paths (default is $(HOME)/.config/) |
134153
| <b>PHASAR_BUILD_DOC</b> : BOOL | Build PhASAR documentation (default is OFF) |
135154
| <b>PHASAR_BUILD_UNITTESTS</b> : BOOL | Build PhASAR unit tests (default is ON) |
136155
| <b>PHASAR_BUILD_IR</b> : BOOL | Build PhASAR IR (required for running the unit tests) (default is ON) |
@@ -148,7 +167,7 @@ C++'s long compile times are always a pain. As shown in the above, when using cm
148167
### Running a test solver
149168
To test if everything works as expected please run the following command:
150169

151-
`$ phasar-llvm --module test/build_systems_tests/installation_tests/module.ll -D ifds-solvertest`
170+
`$ phasar-cli -m test/build_systems_tests/installation_tests/module.ll -D ifds-solvertest`
152171

153172
If you obtain output other than a segmentation fault or an exception terminating the program abnormally everything works as expected.
154173

0 commit comments

Comments
 (0)