Tags:
create new tag
view all tags
<meta name="robots" content="noindex" />

MLSA_logo.png Filters and Pipelines

AST file generation
  • Clang-check is used to generate AST files for C and C++ programs
  • The Python AST library is used to generate AST for Python programs
  • SpiderMonkey is used to generate the AST for JavaScript programs
Monolingual procedure call filters
  • cFunCall.py reads a NAMCE.c_ast.txt (or cpp) file and generates a NAME.c_call.csv file containing the function call information in the file, while also adding to a shared file NAME_funcs.csv that collects information about all the functions defined in the program.
  • pyFunCall.py reads a NAME.py_ast.json file and generates a NAME.py_call.csv file containing the function call information in the file, while also adding to a shared file NAME_funcs.csv that collects information about all the functions defined in the program.
  • jsFunCall.py reads a NAME.js_ast.json file and generates a NAME.js_call.csv file containing the function call information in the file, while also adding to a shared file NAME_funcs.csv that collects information about all the functions defined in the program.
Interoperability filters
  • pyViaC.py reads a C function call file NAME.c_call.csv and scans for Python interoperability. Currently it only implements the Python.h PyRun _SimpleFile API. It ouputs a revised csv function call file NAME.c_finalcall.csv.
  • jsViaPy.py reads a Python function call file NAME.py_call.csv and scans for JavaScript interoperability. Currently it only implements the PyV8 eval API. It outputs a revised csv function call file NAME.py_finalcall.csv.
  • pyViaJs.py reads a JavaScript function call file NAME.js_call.csv and scans for Python interoperatbility. Currently it only implements the JQuerry ajax API. It outputs a revised csv function call file NAME.py_finalcall.csv.
Multilingual combination and graphin filters
  • mergeFunCall.py merges the function calls in the XX_finalcall.csv files into a single function call file. When called from mlcg.py, this output is given the name of the first argument to mlcg.py, e.g. if the argument was test0, then the file is called test0_callgraph.csv.
  • generateDOT.py produces a PDF file from a call graph csv file displaying the call graph
Flow Control Filters
  • cFlowControl.py reads an AST file NAME.c_ast.txt (or cpp) and generates a csv file containing the forward flow control information NAME.c_fcfg.csv, and reverse control flow information NAME.c_rcfg.csv.
  • pyFlowControl.py - does not currently exist
  • jsFlowControl.py - does not currently exist
Assignment collectors
  • cAssignmentCollector.py reads the C AST file and locates all variable assignments and their line numbers. This provides an input that can be used in various kinds of assignment analysis. It is currently only used in the RDA analysis. It can currently also implement two simple static evaluation functions:
    • It can report the assignment of a literal to a variable
    • It can detect the use of strcpy in a C program to set a character array to a literal
    • Anything else it marks as an expression or a function call
  • pyAssignmentCollector.py - does not currently exist
  • jsAssignmentCollector.py - does not currently exist
Reaching Definitions
  • RDA (Kill-Gen/Exit-Entry) implements a reaching definitions analysis for each variable in the program. It reads the NAME.c_vars.csv file for the program to identify all variable assignments, and it reads the NAME.c_rcfg.csv file to get the reverse control flow for the program. It generates the file NAME.c_rda.csv with the solutions for the line entry sets. It doesnt record the exit set solutions, but it does derive them.
  • cRDAGroup.py sets up the RDA pipeline of cAssignmentCollector, cFlowControl, and the RDA.
  • pyRDAGroup.py - does not currently exist
  • jsRDAGoup.py - does not currently exist
Pipelines
  • cSA.py sets up the call graph and RDA pipeline for C/C++ sources
  • pySA.py sets up the call graph pipeline for Python sources
  • jsSA.py sets up the call graph pipeline for JavaScript sources
  • mlcg.py processes its argument list of files and folders, calling cSA, pySA, jsSA as necessary to product a combined multilingual call graph.

Permissions

  • Persons/group who can view/change the page:

-- (c) Fordham University Robotics and Computer Vision

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng MLSA_logo.png r1 manage 38.5 K 2017-07-12 - 19:28 AnneMarieBogar  
Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r2 - 2017-07-14 - DamianLyons
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback