Skip to content

Commit

Permalink
Refine the blog post and the figure
Browse files Browse the repository at this point in the history
  • Loading branch information
liuml07 committed May 9, 2014
1 parent 40c9fa2 commit cd73e89
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 5 deletions.
Binary file modified docs/blog/giri-flow.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/blog/giri-flow.vsd
Binary file not shown.
9 changes: 4 additions & 5 deletions docs/blog/llvm-blog.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div id="content">
<h2>Giri: Dynamic Program Slicing in LLVM</h2>
<h2>[GSoC 2013] Giri: Dynamic Program Slicing in LLVM</h2>

<p><a href="http://en.wikipedia.org/wiki/Program_slicing">Program slicing</a> computes all statements in a program that directly or indirectly affect the value of a variable or instruction.
Static program slicing computes all statements that <i>may</i> affect the value of a variable at a program point for <i>any</i> arbitrary execution of the program.
Expand Down Expand Up @@ -92,7 +92,6 @@ <h3>The Design of Giri</h3>
First, the basic block (BB) exit is recorded in the trace to provide branch taken information (execution path) for the second pass.
Second, Giri instruments the program to record the memory locations accessed by all <tt>loads</tt>, <tt>stores</tt>, and <tt>select</tt> C library functions.
This information is used in the second phase to find all the <tt>store</tt> instructions that created the value read by a <tt>load</tt> instruction.
<!Giri can then continue backtracking from the store to find more instructions affecting the loaded value.>
Since most instructions operate on SSA scalar values, we only refer to trace file whenever needed.
For example, we can get all the operands of an <tt>add</tt> instruction from the program SSA form without accessing the trace file.
However, when we try to find all the <tt>store</tt> instructions which feed value to a <tt>load</tt> instruction, we need to scan the trace file since the data read by the <tt>load</tt> instruction may be written by many possible <tt>store</tt> instructions, which can only be determined accurately at runtime.
Expand All @@ -116,10 +115,10 @@ <h3>Project Status</h3>
There is a simple test framework which runs all the test cases and report the results.
We shall make sure all unit tests pass locally before submitting a new patch to the code repository.
Giri was able to handle few large real programs like Squid, Apache, MySQL.
To slicing multi-threading programs, we made the Giri run-time library thread safe and the slicing pass thread aware.</p>
To slice multi-threading programs, we made the Giri run-time library thread safe and the slicing pass thread aware.</p>

<p>Giri is still under active development and pull requests are heavily welcome.
The following is the list of future work we are going to address in the next weeks.</p>
<p>Giri is still under development and pull requests are heavily welcome.
The following is the list of future work we are going to address in the next months.</p>
<ul>
<li> Improve the performance of locking mechanism of the Giri runtime.
<li> Try more real world programs and add them to the <tt>test/</tt> directory.</li>
Expand Down

0 comments on commit cd73e89

Please sign in to comment.