SLO Documentation

SLO code overview

  • High level explaination - http://escher.elis.ugent.be/publ/Edocs/DOC/P106_138.pdf
  • All the code can be svn from source forge
  • This code includes four directories within the svn trunk:
    • documentation - eighty percent pictures, there is helpful information on how to get the code running, but nothing about the code structure
    • gcc-slo - this is the modified gcc (version 4.1.1) that runs the analysis
    • slo - includes some code from Beyls' earlier tool RDVIS (http://trappist.elis.ugent.be/~kbeyls/rdvis/ ) and SLO. This directory handles the Java back end which displays results.
    • testsuite - python scripts to test the validity of the gcc-slo and SLO code

gcc-slo

  • Most of the interesting code from this project is found within this gcc-slo-src directory.
  • The gcc structure is somewhat stripped. For example, there is no ADA support, etc.
  • Overall, this is heavily modified. The slo gcc was built on top of rdvis gcc (another tool developed by Beyls).
  • The directory "gcc" has the changes to the original gcc code which use the librd library.
  • The makefiles and several of the scripts have been modified to account for the librd library. Most of the other files have not been changed from the original gcc 4.1.1.a

librd

  • The directory "librd" has most of the real SLO code. File names should be helpful. More about this directory will be added later.
    • rd = reuse distance
    • nosl = no sampling
    • bb = basic blocks
    • log2 = log based 2?
    • nr = number
    • sri = single reuse information
    • RDTSC = reuse distance time stamp ?collection?
  • measure_log2_rd.c - General Util file ( initialize hash map, alloc table, alloc node, find node, add node, etc )
  • basic_block_histograms.cpp - Stores most information on basic blocks, spits out histograms information.
  • call_stack.cpp - function utilities, stack analyzer, keeper of the modified tree.
  • sampled_reuses.cpp - implements Vitters' reservoir sampling ( "Reservoir-Sampling Algorithms of Time Complexity O(n(1+log(N/n)))", By Kim-Hung Li )

gcc

  • Most of the actual instrumentation is done within tree-mudflap.c
  • A some of this is explained in original documentation explained above.
  • The method build_instrument_memaccess_for actually creates the code to be injected.

-- IanChristopher - 29 May 2008

Edit | Attach | Watch | Print version | History: r7 | r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 2008-05-30 - IanChristopher
 
  • Edit
  • Attach
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 URCS? Send feedback