Skip to content
Open
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
40 changes: 36 additions & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
"name": "(debug) Launch",
"type": "cppdbg",
"request": "launch",
// Please change to the executable of your current lab or assignment
"program": "${workspaceFolder}/bin/ass1",
"args": ["/home/SVF-tools/Software-Analysis-Studio/Assignment-1/test-exes/test1.graph.txt"], // may input the test llvm bc file or other options and flags the program may use
"args": [
"/home/SVF-tools/Software-Analysis-Studio/Assignment-1/test-exes/test4.graph.txt"
],
"cwd": "${workspaceFolder}",
"preLaunchTask": "C/C++: cpp build active file",
"MIMode": "gdb",
Expand All @@ -17,7 +18,38 @@
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
]
},
{
"name": "C/C++: g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"existing": false,
"preLaunchTask": "C/C++: g++ build active file",
"detail": "preLaunchTask: C/C++: g++ build active file",
"taskDetail": "Task generated by Debugger.",
"taskStatus": "Configured Task",
"isDefault": true,
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
}
24 changes: 23 additions & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,33 @@
{
"label": "C/C++: cpp build active file",
"type": "shell",
// if you run SVF-Teaching not in docker container, you need to change the LLVM_DIR and SVF_DIR
"command": "cmake -DCMAKE_BUILD_TYPE=Debug -DSVF_DIR=../SVF -DLLVM_DIR=../SVF/llvm-16.0.0.obj -DZ3_DIR=../SVF/z3.obj . && make",
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "build",
"isDefault": false
},
"detail": "Task generated by Debugger."
},
{
"type": "cppbuild",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
Expand Down
26 changes: 24 additions & 2 deletions Assignment-1/Assignment-1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,33 @@ using namespace std;
/// Print the path in the format "START: 1->2->4->5->END", where -> indicate an edge connecting two node IDs
void GraphTraversal::printPath(std::vector<const Node *> &path)
{

if (path.empty()) return;
string pathStr = "START: ";
for (const Node* node : path) {
pathStr += "" + to_string(node->getNodeID()) + "->";
}
pathStr.erase(pathStr.end() - 2, pathStr.end());
pathStr += "->END";
paths.insert(pathStr);
};

/// TODO: Implement your depth first search here to traverse each program path (once for any loop) from src to dst
void GraphTraversal::DFS(set<const Node *> &visited, vector<const Node *> &path, const Node *src, const Node *dst)
{

visited.insert(src);
path.push_back(src);

if (src == dst) {
printPath(path);
} else {
for (const Edge* edge : src->getOutEdges()) {
const Node* nextNode = edge->getDst();
if (visited.find(nextNode) == visited.end()) {
DFS(visited, path, nextNode, dst);
}
}
}

visited.erase(src);
path.pop_back();
}
16 changes: 16 additions & 0 deletions Assignment-1/CMakeFiles/CMakeDirectoryInformation.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.28

# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/SVF-tools/Software-Analysis-Studio")
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/SVF-tools/Software-Analysis-Studio")

# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)


# The C and CXX include file regular expressions for this directory.
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
Binary file not shown.
163 changes: 163 additions & 0 deletions Assignment-1/CMakeFiles/ass1.dir/Assignment-1.cpp.o.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
Assignment-1/CMakeFiles/ass1.dir/Assignment-1.cpp.o: \
/home/SVF-tools/Software-Analysis-Studio/Assignment-1/Assignment-1.cpp \
/usr/include/stdc-predef.h \
/home/SVF-tools/Software-Analysis-Studio/Assignment-1/Assignment-1.h \
/usr/include/c++/13/iostream /usr/include/c++/13/bits/requires_hosted.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/timesize.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \
/usr/include/c++/13/pstl/pstl_config.h /usr/include/c++/13/ostream \
/usr/include/c++/13/ios /usr/include/c++/13/iosfwd \
/usr/include/c++/13/bits/stringfwd.h \
/usr/include/c++/13/bits/memoryfwd.h /usr/include/c++/13/bits/postypes.h \
/usr/include/c++/13/cwchar /usr/include/wchar.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/c++/13/exception /usr/include/c++/13/bits/exception.h \
/usr/include/c++/13/bits/exception_ptr.h \
/usr/include/c++/13/bits/exception_defines.h \
/usr/include/c++/13/bits/cxxabi_init_exception.h \
/usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \
/usr/include/c++/13/new /usr/include/c++/13/bits/move.h \
/usr/include/c++/13/type_traits \
/usr/include/c++/13/bits/nested_exception.h \
/usr/include/c++/13/bits/char_traits.h \
/usr/include/c++/13/bits/localefwd.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \
/usr/include/c++/13/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \
/usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/time64.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/endianness.h \
/usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \
/usr/include/x86_64-linux-gnu/sys/single_threaded.h \
/usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \
/usr/include/c++/13/bits/allocator.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \
/usr/include/c++/13/bits/new_allocator.h \
/usr/include/c++/13/bits/functexcept.h \
/usr/include/c++/13/bits/cpp_type_traits.h \
/usr/include/c++/13/bits/ostream_insert.h \
/usr/include/c++/13/bits/cxxabi_forced.h \
/usr/include/c++/13/bits/stl_iterator_base_funcs.h \
/usr/include/c++/13/bits/concept_check.h \
/usr/include/c++/13/debug/assertions.h \
/usr/include/c++/13/bits/stl_iterator_base_types.h \
/usr/include/c++/13/bits/stl_iterator.h \
/usr/include/c++/13/ext/type_traits.h \
/usr/include/c++/13/bits/ptr_traits.h \
/usr/include/c++/13/bits/stl_function.h \
/usr/include/c++/13/backward/binders.h \
/usr/include/c++/13/ext/numeric_traits.h \
/usr/include/c++/13/bits/stl_algobase.h \
/usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \
/usr/include/c++/13/debug/debug.h \
/usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \
/usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \
/usr/include/c++/13/bits/range_access.h \
/usr/include/c++/13/initializer_list \
/usr/include/c++/13/bits/basic_string.h \
/usr/include/c++/13/ext/alloc_traits.h \
/usr/include/c++/13/bits/alloc_traits.h \
/usr/include/c++/13/bits/stl_construct.h /usr/include/c++/13/string_view \
/usr/include/c++/13/bits/functional_hash.h \
/usr/include/c++/13/bits/string_view.tcc \
/usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/alloca.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \
/usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/c++/13/cerrno /usr/include/errno.h \
/usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \
/usr/include/x86_64-linux-gnu/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
/usr/include/c++/13/bits/charconv.h \
/usr/include/c++/13/bits/basic_string.tcc \
/usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \
/usr/include/c++/13/bits/uses_allocator.h \
/usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \
/usr/include/c++/13/bits/locale_classes.tcc \
/usr/include/c++/13/system_error \
/usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \
/usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \
/usr/include/c++/13/bits/streambuf.tcc \
/usr/include/c++/13/bits/basic_ios.h \
/usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \
/usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \
/usr/include/c++/13/bits/streambuf_iterator.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \
/usr/include/c++/13/bits/locale_facets.tcc \
/usr/include/c++/13/bits/basic_ios.tcc \
/usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/istream \
/usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/set \
/usr/include/c++/13/bits/stl_tree.h \
/usr/include/c++/13/ext/aligned_buffer.h \
/usr/include/c++/13/bits/node_handle.h \
/usr/include/c++/13/bits/stl_set.h \
/usr/include/c++/13/bits/stl_multiset.h \
/usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/vector \
/usr/include/c++/13/bits/stl_uninitialized.h \
/usr/include/c++/13/bits/stl_vector.h \
/usr/include/c++/13/bits/stl_bvector.h \
/usr/include/c++/13/bits/vector.tcc
24 changes: 24 additions & 0 deletions Assignment-1/CMakeFiles/ass1.dir/DependInfo.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

# Consider dependencies only in project.
set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)

# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
)

# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
"/home/SVF-tools/Software-Analysis-Studio/Assignment-1/Assignment-1.cpp" "Assignment-1/CMakeFiles/ass1.dir/Assignment-1.cpp.o" "gcc" "Assignment-1/CMakeFiles/ass1.dir/Assignment-1.cpp.o.d"
"/home/SVF-tools/Software-Analysis-Studio/Assignment-1/test-exes/Test.cpp" "Assignment-1/CMakeFiles/ass1.dir/test-exes/Test.cpp.o" "gcc" "Assignment-1/CMakeFiles/ass1.dir/test-exes/Test.cpp.o.d"
)

# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)

# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
)

# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
Loading