Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
- name: Run Unittests
shell: bash
run: |
cmake --build ./build --target check-phasar-unittests
cmake --build ./build --target check-phasar-unittests check-phasar-cli
- name: Install PhASAR and Build Examples
if: matrix.build == 'DebugLibdeps' # Circumvent conflicting ASAn flags
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,6 @@ unittests/PhasarLLVM/ifdside/Problems/IFDSTaintAnalysisTest
unittests/PhasarLLVM/Pointer/LLVMTypeHierarchyTest
unittests/Utils/LLVMShorthandsTest
unittests/Utils/PAMMTest

# LLVM lit test times files
*.lit_test_times.txt
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ if(PHASAR_ALLOW_LTO_IN_RELEASE_BUILD)
endif()

option(PHASAR_BUILD_UNITTESTS "Build all tests (default is ON)" ${PHASAR_BUILD_OPTIONAL_TARGETS_DEFAULT})
option(PHASAR_ENABLE_INTEGRATIONTESTS "Enable LIT integration tests (default is ON)" ${PHASAR_BUILD_OPTIONAL_TARGETS_DEFAULT})

option(PHASAR_BUILD_OPENSSL_TS_UNITTESTS "Build OPENSSL typestate tests (require OpenSSL, default is OFF)" OFF)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ struct IDEExtendedTaintAnalysisDomain : public LLVMAnalysisDomainDefault {
/// sanitizer on the current path, Bottom means sanitized on all paths.
using l_t = XTaint::EdgeDomain;
};

template <>
struct DefaultAnalysisPrinterSelector<IDEExtendedTaintAnalysisDomain>
: type_identity<
DefaultLLVMAnalysisPrinter<IDEExtendedTaintAnalysisDomain>> {};

namespace XTaint {

/// \brief An IDE-based taint analysis that uses k-limited field-access paths to
Expand Down
5 changes: 5 additions & 0 deletions include/phasar/PhasarLLVM/Utils/LLVMAnalysisPrinter.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ class DefaultLLVMAnalysisPrinter
}

void doOnFinalize(llvm::raw_ostream &OS) override {
if (DbgResultsEntries.empty() && NonDbgResultsEntries.empty()) {
OS << "No leaks found!\n";
return;
}

size_t Ctr = 0;
for (const auto &[DbgLoc, Results] : DbgResultsEntries) {
OS << '#' << ++Ctr << ": ";
Expand Down
1 change: 1 addition & 0 deletions test/.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DisableFormat: true
2 changes: 2 additions & 0 deletions test/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Run lit tests with the following command from the phasar source directory:
lit build/test/llvm_test_code/[FOLDER_OF_INTEREST]/
41 changes: 41 additions & 0 deletions test/llvm_test_code/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,44 @@ subdirlist(subdirs ${CMAKE_CURRENT_SOURCE_DIR})
foreach(subdir ${subdirs})
add_subdirectory(${subdir})
endforeach(subdir)


if (PHASAR_ENABLE_INTEGRATIONTESTS)
include(AddLLVM)

find_program(LLVM_EXTERNAL_LIT_DEFAULT
NAMES lit-22 lit-21 lit-20 lit-16 llvm-lit lit
HINTS "${LLVM_TOOLS_BINARY_DIR}"
REQUIRED
)

set(LLVM_EXTERNAL_LIT "${LLVM_EXTERNAL_LIT_DEFAULT}"
CACHE STRING "Command used to spawn lit"
FORCE
)

get_filename_component(PSR_LIT_REALPATH ${LLVM_EXTERNAL_LIT} REALPATH)
get_filename_component(PSR_LIT_DIR ${PSR_LIT_REALPATH} DIRECTORY)
find_program(PSR_FILECHECK
NAMES FileCheck-22 FileCheck-21 FileCheck-20 FileCheck
HINTS "${PSR_LIT_DIR}"
REQUIRED
)

# Note: PSR_FILECHECK_DIR configured into lit.site.cfg.py
get_filename_component(PSR_FILECHECK_REALPATH ${PSR_FILECHECK} REALPATH)
get_filename_component(PSR_FILECHECK_DIR ${PSR_FILECHECK_REALPATH} DIRECTORY)

configure_lit_site_cfg(
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
MAIN_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
)

add_lit_testsuite(check-phasar-cli "Running the phasar-cli lit test suite"
# Note: Currently, we only have LIT-tests for taint_analysis and xtaint
${CMAKE_CURRENT_BINARY_DIR}/taint_analysis
${CMAKE_CURRENT_BINARY_DIR}/xtaint
DEPENDS phasar-cli LLFileGeneration
)
endif(PHASAR_ENABLE_INTEGRATIONTESTS)
31 changes: 31 additions & 0 deletions test/llvm_test_code/lit.cfg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import lit.formats
import os

config.name = "phasar-cli"
config.test_format = lit.formats.ShTest(True)
config.suffixes = ['.c', '.cpp']

config.test_source_root = os.path.dirname(__file__)

# Only files with a RUN: line are actual lit tests; everything else under
# taint_analysis/ and xtaint/ is not converted yet and would otherwise show
# up as "Unresolved".
config.excludes = ['Output']
for root, _, files in os.walk(config.test_source_root):
for f in files:
if not f.endswith(tuple(config.suffixes)):
continue
with open(os.path.join(root, f)) as handle:
if 'RUN:' not in handle.read():
config.excludes.append(f)

config.test_exec_root = config.phasar_obj_root

config.substitutions.append(
('%phasar-cli', os.path.join(config.phasar_cli_dir, 'phasar-cli')))
config.substitutions.append(
('%llvm_test_code', config.phasar_ll_dir))

config.environment["PATH"] = os.pathsep.join(
[config.phasar_filecheck_dir, config.environment["PATH"]]
)
10 changes: 10 additions & 0 deletions test/llvm_test_code/lit.site.cfg.py.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import lit.llvm

config.phasar_obj_root = "@CMAKE_CURRENT_BINARY_DIR@"
config.phasar_cli_dir = "@PHASAR_BINARY_DIR@/tools/phasar-cli/"
config.phasar_ll_dir = "@PHASAR_BINARY_DIR@/test/llvm_test_code/"
config.phasar_filecheck_dir = "@PSR_FILECHECK_DIR@"

lit.llvm.initialize(lit_config, config)

lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py")
1 change: 1 addition & 0 deletions test/llvm_test_code/taint_analysis/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@ foreach(TEST_SRC ${NoMem2regSources})
generate_ll_file(FILE ${TEST_SRC} DEBUG)
endforeach(TEST_SRC)

add_subdirectory(double_free)
add_subdirectory(dummy_source_sink)
33 changes: 33 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
set(NoMem2regSources
df_01.c
df_02.c
df_03.c
df_04_1.c
df_04.c
df_05.c
df_06.c
df_07_1.c
df_07.c
df_08.c
df_09.c
df_10.c
df_11.c
df_12.c
df_13.c
df_14.c
df_15.c
df_16.c
df_17.c
df_18.c
df_19.c
df_20.c
df_21.c
df_22.c
df_ctx_01.c
df_ctx_02.c
df_ctx_03.c
)

foreach(TEST_SRC ${NoMem2regSources})
generate_ll_file(FILE ${TEST_SRC} DEBUG)
endforeach(TEST_SRC)
22 changes: 22 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_01.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#include <stdlib.h>
int main() {
int *foo = (int *)malloc(32);
free(foo);
free(foo); // vulnerability
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_01_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_01.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_01_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_01.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_01_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_01.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_01_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_01.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_01_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_01.c:5:3:
25 changes: 25 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_02.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdlib.h>
void v() {
int *foo = (int *)malloc(32);
free(foo);
free(foo); // vulnerability
}
int main() {
v();
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_02_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_02.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_02_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_02.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_02_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_02.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_02_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_02.c:5:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_02_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_02.c:5:3:
25 changes: 25 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_03.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdlib.h>
void v(int *foo) {
free(foo);
free(foo); // vulnerability
}
int main() {
int *foo = (int *)malloc(32);
v(foo);
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_03_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_03.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_03_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_03.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_03_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_03.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_03_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_03.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_03_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_03.c:4:3:
25 changes: 25 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_04.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include <stdlib.h>
void v(int *foo) {
free(foo); // vulnerability
}
int main() {
int *foo = (int *)malloc(32);
free(foo);
v(foo);
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_04.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_04.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_04.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// monoifds-taint: /taint_analysis/double_free/df_04.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_04.c:3:3:
26 changes: 26 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_04_1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include <stdlib.h>
void v(int *foo) {
free(&foo); // no vulnerability
free(foo); // vulnerability
}
int main() {
int *foo = (int *)malloc(32);
free(foo);
v(foo);
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_1_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_04_1.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_1_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_04_1.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_1_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_04_1.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_1_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_04_1.c:4:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_04_1_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_04_1.c:4:3:
26 changes: 26 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_05.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include <stdlib.h>
void v(int *foo) {
free(foo); // vulnerability
}
void f(int *foo) { v(foo); }
int main() {
int *foo = (int *)malloc(32);
free(foo);
f(foo);
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_05_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: /taint_analysis/double_free/df_05.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_05_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_05.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_05_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_05.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_05_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_05.c:3:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_05_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_05.c:3:3:
38 changes: 38 additions & 0 deletions test/llvm_test_code/taint_analysis/double_free/df_06.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

/// TODO: Fields

#include <stdlib.h>

typedef struct _S {
int *X;
int *Y;
} S;

void v(S *foo) {
free(foo->Y); // foo->X is free'd, but foo->Y is not, so this is fine
}
void f(S *foo) { v(foo); }
int main() {
S foo = {};
foo.X = (int *)malloc(32);
foo.Y = (int *)malloc(32);

free(foo.X);
f(&foo);
return 0;
}

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ide-xtaint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_06_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=xtaint
// xtaint: No leaks found!

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_06_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-taint
// ifds-taint: /taint_analysis/double_free/df_06.c:12:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=ifds-fieldsens-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_06_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=ifds-fieldsens-taint
// ifds-fieldsens-taint: /taint_analysis/double_free/df_06.c:12:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=monoifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_06_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=monoifds-taint
// monoifds-taint: /taint_analysis/double_free/df_06.c:12:3:

// RUN: %S/../../../../build/tools/phasar-cli/phasar-cli --data-flow-analysis=sparse-ifds-taint --module %S/../../../../build/test/llvm_test_code/taint_analysis/double_free/df_06_c_dbg.ll --analysis-config %S/../../../../config/double-free-config.json | FileCheck %s -check-prefix=sparse-ifds-taint
// sparse-ifds-taint: /taint_analysis/double_free/df_06.c:12:3:
Loading
Loading