Changes made during rehearsal w/ Francesco

This commit is contained in:
Théophile Bastian 2019-10-19 07:14:07 +02:00
parent cfd73303e6
commit d95da5ab8c

View file

@ -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}