-
Notifications
You must be signed in to change notification settings - Fork 0
/
abstract.tex
37 lines (33 loc) · 2.2 KB
/
abstract.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
% abstract.tex
%% Create a abstract page, as specified by the Course-VI M.Eng. Thesis Guide.
%% Careful to use the special "abstractpage" environment here, rather than the
%% usual "abstract" environment.
\begin{abstractpage}
\pdfbookmark[0]{Abstract}{abstract} % Sets a PDF bookmark for the abstract
The proliferation of dynamic program analysis tools has done much to ease the
burden of developing complex software. However, creating such tools remains a
challenge. Dynamic binary instrumentation frameworks such as DyanamoRIO and
Pin provide support for such tools by taking responsibility for application
transparency and machine code manipulation. However, tool writers must still
make a tough choice when writing instrumentation: should they inject custom
inline assembly into the application code, or should they use the framework
facilities for inserting callbacks into regular C code? Custom assembly can be
more performant and more flexible, but it forces the tool to take some
responsibility for maintaining application transparency. Callbacks into C, or
``clean calls,'' allow the tool writer to ignore the details of maintaining
transparency. Generally speaking, a clean call entails switching to a safe
stack, saving all registers, materializing the arguments, and jumping to the
callback.
This thesis presents a suite of optimizations for DynamoRIO that improves the
performance of ``na\"ive tools,'' or tools which rely primarily on clean calls
for instrumentation. Most importantly, we present a novel {\em partial
inlining} optimization for instrumentation routines with conditional analysis.
For simpler instrumentation routines, we present a novel {\em call coalescing}
optimization that batches calls into fewer context switches. In addition to
these two novel techniques, we provide a suite of machine code optimizations
designed to leverage the opportunities created by the aforementioned techniques.
With this additional functionality built on DynamoRIO, we have shown
improvements of up to 54.8x for a na\"ive instruction counting tool as well as a
3.7x performance improvement for a memory alignment checking tool on average for
many of the benchmarks from the SPEC 2006 CPU benchmark suite.
\end{abstractpage}