Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master
Commits on Aug 13, 2014
  1. Retire Project

Commits on Aug 8, 2014
Commits on Aug 7, 2014
  1. Add Test Which Shows How Implicit Calls Are Missed

    It is looking more and more practical to change this tool to operate on
    the IR by the hour
  2. More cleanup

  3. More Build System Fixes

  4. Fix Compile for llvm 3.5

Commits on Jun 26, 2014
  1. Fix README extension

  2. Update README

Commits on Jan 20, 2014
  1. Misc Updates For LLVM 3.5

    I really wish that there was a more sane way to get the clang linker flags
    setup, but they seem to change with every release and due to single pass
    linkers, the ordering is a PITA to get right.
    None the less, it should work with llvm 3.5 as compiled from scratch.
Commits on May 26, 2013
Commits on Jan 31, 2013
  1. Fixes compile issues with clang 3.2

    Apparently the old API is no longer valid and some memory management has changed
    in the bowels of libclang.
    Thus to stop the fires from some refcounting gone wrong in TargetOptions or an
    associated class cleanup is simply not done.
    All the memory is reclaimed by the OS, but is still quite annoying that this
    commit had to be made.
Commits on Jan 18, 2013
  1. Adds man page

Commits on Dec 5, 2012
  1. Valgrind: Fixes memory leaks

    - Calls and Callees were never deallocated before
      This commit fixes that without appearing to introduce any issues
Commits on Nov 24, 2012
  1. sfpf: it builds once again

    - Updated all rotting sfpf files
    - Tested by hand and it appears to work
  2. Tests: fixed compile bug

Commits on Jul 31, 2012
  1. Removes debugging code

  2. Fixes Unpredictable Test

    The test now passes with different orders of output errors, which appear
    to vary based upon clang version
Commits on Jul 4, 2012
  1. Adds tracking of function pointers through calls

    Now if a function pointer is passed into a function, it is tracked.
    The current implementation is rather simplistic and it will fail when names
    conflict, but the basic behavior is now there. In order to test this
    functionality function pointers now have their attributes checked (ie. they can
    be marked realtime or non-realtime). This support should be able to
    pessimistically track functions through callbacks.
    - Adds tracking of function pointers through function calls
    - Adds annotation checking for function pointer
    - Adds test for annotated function pointers
Commits on Jul 3, 2012
  1. Adds basic support for function pointer tracking

    Function pointers are now analyzed, making this project track direct, indirect,
    and virtual calls. In order to do this some of the hacks to allow the lookup of
    particular callees were undone and the underlying system was made to be a bit
    more general. This amounted to useing a large number of pointers to Callee
    objects rather than accessing them based upon their fully qualified names.
    Unfortuantly this does introduce the possiblilty of unexpected segfaults, though
    the test suite appears to work properly and deallocation is not handled in the
    current revision (aka non of the objects are deleted after being newed).
    - Function pointers are now recorded and the possible calls that they contain
      are stored
    - sfpf was broken in this rework, though it should not be difficult to fix in
      another commit
    - Test added to check that function pointers are added to the callgraph
Commits on Jun 24, 2012
  1. Adds verbose flag and defaults to non-verbose mode

    - Also moves the version flag from -v to -V
Commits on Jun 18, 2012
  1. Adds basic blacklist files

    This commit adds simple blacklisting with reasons. This should be later enhanced
    with specific blacklists for operators (ie new/delete/delete[]) with an @new
    style syntax. A basic blacklist file can be found in data/ and it is run through
    one test.
    - Adds blacklist parsing
    - Adds blacklist file
    - Adds blacklist test
    - Adds blacklist reasons
    - Removes blacklist file from TODO list
Commits on Jun 5, 2012
  1. Adds basic sfpf binary

    sfpf is the Static Function Property Finder and it utilizes a modified deduction
    engine, which propigates information from library functions through defined
    functions. This is the reverse direction compared to the deductions used in
    sfpv, thus the ReverseDedutions class. The ideal use of sfpf would be to quickly
    obtain whitelists and blacklists from a library.
    - Adds basic sfpf binary
    - Moves main.cpp to sfpv.cpp
    - Adds simple internal blacklist in sfpf
Commits on Jun 3, 2012
  1. Adds Operator Delete Support

    - Mostly a copy/paste of operator new support
    - Updates test to verify delete is detected
  2. Adds Support for operator new calls

    Operator new is now detected using CXXNewExpr. All instances of operator new are
    registered under a single instance of the FunctionDecl generated from the first
    expression encountered. In order to let the function call registry support this
    its storage was generalized from clang::CallExpr to clang::Expr.
    - Adds Operator new to valid function calls
    - Adds test to verify operator new is detected
    - Modifies test to avoid warnings from this new feature
Commits on May 29, 2012
  1. Whitelists fmod/jack_get_port_get_buffer functions

    - Just adds functions to the whitelist.txt
Commits on May 28, 2012
  1. Refactors Codebase

    Most of the cruft of earlier designs should be eliminated by this commit.
    - Moves deduction system out of main
    - Splits Types.h/cpp into FuncCalls and FuncEntries
    - Removes Debugging printfs, such that in quiet mode no debugging
      information should be seen
    - Removes unneeded header includes; As a side effect the header-include test is
      now only subjected to stl headers and not llvm headers, making it run
      considerably faster (though it may miss some edge cases)
  2. Fixes broken clang_complete file

    The clang_complete file operates on arguments to be passed to clang, NOT code to
    be prepended. This commit changes any #define to a -D option.
Commits on May 27, 2012
  1. Adds basic manual for program and adds GPLv3+

    In order for this software to make sense to others, some basic documentation is
    needed. This has been started in the doc directory with a basic user manual
    written in asciidoc.
    - Removes detail from README
    - Adds somewhat detailed description to the user manual
    - Adds basic GPLv3+ documents
Something went wrong with that request. Please try again.