Changes made during rehearsal w/ Francesco
This commit is contained in:
parent
cfd73303e6
commit
d95da5ab8c
1 changed files with 20 additions and 17 deletions
37
slides.tex
37
slides.tex
|
@ -176,7 +176,7 @@ Segmentation fault.
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\pause{}
|
\pause{}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\textbf{\Large How does it work?!}
|
\textbf{\Large How does it work?}
|
||||||
\end{center}
|
\end{center}
|
||||||
\end{column}
|
\end{column}
|
||||||
\begin{column}{0.35\textwidth}
|
\begin{column}{0.35\textwidth}
|
||||||
|
@ -194,7 +194,8 @@ Segmentation fault.
|
||||||
\begin{column}{0.65\textwidth}
|
\begin{column}{0.65\textwidth}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\large\bf
|
\large\bf
|
||||||
How do we get the RA\@?
|
How do we get\\
|
||||||
|
the return address?
|
||||||
|
|
||||||
\vspace{2em}
|
\vspace{2em}
|
||||||
|
|
||||||
|
@ -393,7 +394,7 @@ Segmentation fault.
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{Correct by construction unwinding tables: synthesis}
|
\section{Correctness by construction:\\*\textbf{synthesis of unwinding tables}}
|
||||||
\sectiontitleframe{}
|
\sectiontitleframe{}
|
||||||
|
|
||||||
\newcommand{\tblrowval}[4]{#1 & #2 & \only<2->{#3} & \only<2->{#4} \\}
|
\newcommand{\tblrowval}[4]{#1 & #2 & \only<2->{#3} & \only<2->{#4} \\}
|
||||||
|
@ -424,15 +425,16 @@ Segmentation fault.
|
||||||
|
|
||||||
|
|
||||||
{\only<3>{
|
{\only<3>{
|
||||||
\begin{textblock*}{0.90\textwidth}[0.5,0.5](0.5\paperwidth,0.5\paperheight)%
|
\begin{textblock*}{\textwidth}[0.5,0.5](0.5\paperwidth,0.5\paperheight)%
|
||||||
\begin{tcolorbox}[halign=center, colframe=red, colback=Lavender]
|
\begin{tcolorbox}[halign=center, colframe=red, colback=Lavender]
|
||||||
\large
|
\large
|
||||||
\alert{\bf Assumptions:}
|
\alert{\bf Assumptions}
|
||||||
|
\vspace{0.6em}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item the assembly is was generated by a compiler
|
\item the compiler generated the unwinding data
|
||||||
\item which also generated unwinding data
|
\item we have a reliable DWARF interpreter
|
||||||
\item and I have a reliable DWARF interpreter
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\end{tcolorbox}
|
\end{tcolorbox}
|
||||||
\end{textblock*}
|
\end{textblock*}
|
||||||
}}
|
}}
|
||||||
|
@ -482,7 +484,8 @@ Segmentation fault.
|
||||||
\item Heuristic to decide whether we index with \reg{rbp} or
|
\item Heuristic to decide whether we index with \reg{rbp} or
|
||||||
\reg{rsp}
|
\reg{rsp}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\item By performing symbolic execution, we can \alert{synthesize the
|
\item By performing \alert{symbolic execution} with an abstract
|
||||||
|
semantics, we can \alert{synthesize the
|
||||||
unwinding table} line by line.
|
unwinding table} line by line.
|
||||||
\item Control flow: forward data-flow analysis
|
\item Control flow: forward data-flow analysis
|
||||||
\item The fixpoints are immediate, cf article
|
\item The fixpoints are immediate, cf article
|
||||||
|
@ -579,12 +582,12 @@ Segmentation fault.
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \alert{libunwind}: \textit{de facto} standard library for
|
\item \alert{libunwind}: most common library for
|
||||||
unwinding
|
unwinding
|
||||||
|
|
||||||
\bigskip{}
|
\bigskip{}
|
||||||
|
|
||||||
\item \texttt{libunwind-eh\_elf}: alternative implementation using
|
\item \alert{\texttt{libunwind-eh\_elf}}: modified version to support
|
||||||
\ehelfs{}
|
\ehelfs{}
|
||||||
|
|
||||||
\item[$\leadsto$] Same API, almost \alert{``relink-and-play''} for existing projects!
|
\item[$\leadsto$] Same API, almost \alert{``relink-and-play''} for existing projects!
|
||||||
|
@ -597,7 +600,7 @@ Segmentation fault.
|
||||||
|
|
||||||
\begin{frame}{Performances}
|
\begin{frame}{Performances}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\Large\bf Speedup vs. libunwind:
|
\Large\bf Unwinding speedup vs.\ libunwind:
|
||||||
\begin{columns}
|
\begin{columns}
|
||||||
\begin{column}{0.5\textwidth}
|
\begin{column}{0.5\textwidth}
|
||||||
\alert{x15} on gzip
|
\alert{x15} on gzip
|
||||||
|
@ -635,8 +638,8 @@ Segmentation fault.
|
||||||
\item{} Synthesis + compare = verification of unwinding data!
|
\item{} Synthesis + compare = verification of unwinding data!
|
||||||
\item{} Integrate synthesis into compilers \& debuggers\\
|
\item{} Integrate synthesis into compilers \& debuggers\\
|
||||||
$\rightarrow$ support for inline assembly, fallback method, \ldots
|
$\rightarrow$ support for inline assembly, fallback method, \ldots
|
||||||
\item{} Integrate into \prog{perf} for a faster analysis
|
\item{} Integrate into \prog{perf} for online unwinding
|
||||||
\item{} Probably many more cool things to do!
|
\item{} Probably many more cool projects!
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\vspace{1em}
|
\vspace{1em}
|
||||||
|
@ -715,15 +718,15 @@ Segmentation fault.
|
||||||
|
|
||||||
\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
We cannot hope for an invariant\dots\\
|
We cannot hope for a simple invariant\dots\\
|
||||||
but the compiler cannot
|
but the compiler cannot
|
||||||
either.
|
either.
|
||||||
|
|
||||||
\vspace{1em}
|
\vspace{1em}
|
||||||
|
|
||||||
{
|
{
|
||||||
\large\alert{$\implies$} the compiler will \alert{fallback to
|
\large\alert{$\implies$} the compiler will\\
|
||||||
\reg{rbp}}\\
|
\alert{fallback to \reg{rbp}}\\
|
||||||
}
|
}
|
||||||
even with \lstbash{--fomit-frame-pointer}
|
even with \lstbash{--fomit-frame-pointer}
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
Loading…
Reference in a new issue