|
|
|
@ -87,7 +87,7 @@
@@ -87,7 +87,7 @@
|
|
|
|
|
\vspace{-2em} |
|
|
|
|
\begin{center} |
|
|
|
|
\begin{align*} |
|
|
|
|
\text{Slides: } &\text{\url{https://tobast.fr/files/sweden18.pdf}} \\ |
|
|
|
|
\text{Slides: } &\text{\url{https://tobast.fr/files/oracle18.pdf}} \\ |
|
|
|
|
\end{align*} |
|
|
|
|
\end{center} |
|
|
|
|
\end{frame} |
|
|
|
@ -279,8 +279,7 @@ $1 = 84
@@ -279,8 +279,7 @@ $1 = 84
|
|
|
|
|
Yields to |
|
|
|
|
\begin{itemize} |
|
|
|
|
\item{} unreliable DWARF\@: can cause headaches when debugging |
|
|
|
|
\item{} or not generated at all (eg. OCaml until recently) \todo{Check |
|
|
|
|
this} |
|
|
|
|
\item{} or not generated at all (eg. OCaml until recently) |
|
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
|
|
\vspace{1em} |
|
|
|
@ -524,12 +523,32 @@ $1 = 84
@@ -524,12 +523,32 @@ $1 = 84
|
|
|
|
|
\item We can \alert{validate DWARF tables}! |
|
|
|
|
\item \ldots{}well, only along \alert{one execution path}\ldots |
|
|
|
|
\item but mostly we are close to a working \alert{algorithm} to |
|
|
|
|
\alert{synthesize unwinding data from assembly}! |
|
|
|
|
\alert{synthesize unwinding data from binaries}! |
|
|
|
|
\end{itemize} |
|
|
|
|
\end{frame} |
|
|
|
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
|
|
|
\section{Unwinding data synthesis from assembly} |
|
|
|
|
\section{Unwinding data synthesis from binaries} |
|
|
|
|
|
|
|
|
|
\begin{frame}{Why would synthesis be useful?} |
|
|
|
|
\pause{} |
|
|
|
|
\begin{itemize} |
|
|
|
|
\item As said earlier, \alert{DWARF is complex} |
|
|
|
|
\pause{} |
|
|
|
|
\item Some compilers \alert{do not generate it}: hard to \alert{debug} |
|
|
|
|
\& \alert{profile}. |
|
|
|
|
\pause{} |
|
|
|
|
\item Think of \alert{JIT-compiled assembly} (eg. JVM) |
|
|
|
|
\pause{} |
|
|
|
|
\item \ldots{}or even \alert{hand-written inlined assembly}! |
|
|
|
|
\pause{} |
|
|
|
|
\begin{itemize} |
|
|
|
|
\item Painful enough to write for not bothering with DWARF |
|
|
|
|
\item May not even be known by the programmer, breaks gdb |
|
|
|
|
\item May be wrong (remember Linus!) |
|
|
|
|
\end{itemize} |
|
|
|
|
\end{itemize} |
|
|
|
|
\end{frame} |
|
|
|
|
|
|
|
|
|
\begin{frame}{What have we got so far?} |
|
|
|
|
We now want to \alert{synthesize unwinding data}. \pause{}That means |
|
|
|
@ -869,7 +888,7 @@ $1 = 84
@@ -869,7 +888,7 @@ $1 = 84
|
|
|
|
|
\LinusMailOne{} |
|
|
|
|
|
|
|
|
|
\only<1>{\LinusSource{}} |
|
|
|
|
\only<2->\vspace{1em} |
|
|
|
|
\only<2->{\vspace{1em}} |
|
|
|
|
\pause{} |
|
|
|
|
|
|
|
|
|
\LinusMailTwo{} |
|
|
|
@ -881,7 +900,7 @@ $1 = 84
@@ -881,7 +900,7 @@ $1 = 84
|
|
|
|
|
|
|
|
|
|
\begin{center} |
|
|
|
|
\bf |
|
|
|
|
Give us a few months to make Linus reconsider \texttt{;)} |
|
|
|
|
Give us a few months: we will make Linus reconsider \texttt{;)} |
|
|
|
|
\end{center} |
|
|
|
|
|
|
|
|
|
\end{frame} |
|
|
|
@ -895,7 +914,7 @@ $1 = 84
@@ -895,7 +914,7 @@ $1 = 84
|
|
|
|
|
\begin{center} |
|
|
|
|
\large |
|
|
|
|
\begin{align*} |
|
|
|
|
\textbf{Slides: } &\text{\url{https://tobast.fr/files/sweden18.pdf}} \\ |
|
|
|
|
\textbf{Slides: } &\text{\url{https://tobast.fr/files/oracle18.pdf}} \\ |
|
|
|
|
\end{align*} |
|
|
|
|
\end{center} |
|
|
|
|
|
|
|
|
|