From 3a924a3deaa5266482ef2f95002a44983dbfa3ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Wed, 29 Aug 2018 22:14:26 +0200 Subject: [PATCH] Add a few slides --- shared/imgs/call_stack.png | 1 + shared/todo.sty | 2 +- slides/img/dwarf_logo.png | Bin 0 -> 9711 bytes slides/slides.tex | 127 ++++++++++++++++++++++++++++++++++++- 4 files changed, 128 insertions(+), 2 deletions(-) create mode 120000 shared/imgs/call_stack.png create mode 100644 slides/img/dwarf_logo.png diff --git a/shared/imgs/call_stack.png b/shared/imgs/call_stack.png new file mode 120000 index 0000000..1b89081 --- /dev/null +++ b/shared/imgs/call_stack.png @@ -0,0 +1 @@ +../../report/imgs/call_stack/call_stack.png \ No newline at end of file diff --git a/shared/todo.sty b/shared/todo.sty index 86ae375..05076cb 100644 --- a/shared/todo.sty +++ b/shared/todo.sty @@ -8,4 +8,4 @@ \newcommand{\qtodo}[1]{\colorbox{todobg}{\textcolor{todofg}{#1}}} \newcommand{\todo}[1]{\qtodo{\textbf{TODO:}\,#1}} \newcommand{\qnote}[1]{\colorbox{notebg}{\textcolor{notefg}{#1}}} -\newcommand{\note}[1]{\qnote{\textbf{NOTE:}\,#1}} +\newcommand{\tnote}[1]{\qnote{\textbf{NOTE:}\,#1}} diff --git a/slides/img/dwarf_logo.png b/slides/img/dwarf_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..88e10fd449ab9ce7a7ed5e870f107cbfddf578c6 GIT binary patch literal 9711 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 literal 0 HcmV?d00001 diff --git a/slides/slides.tex b/slides/slides.tex index 7cd9893..dcfd8dd 100644 --- a/slides/slides.tex +++ b/slides/slides.tex @@ -8,7 +8,13 @@ \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} -\usepackage{my_listings} + +\usepackage{../shared/my_listings} +%\usepackage{../shared/my_hyperref} +\usepackage{../shared/specific} +\usepackage{../shared/common} +\usepackage{../shared/todo} + \setbeamertemplate{navigation symbols}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -38,4 +44,123 @@ \tableofcontents \end{frame} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Stack unwinding data} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Introduction} + +\begin{frame}[fragile]{We often use stack unwinding!} + \begin{lstlisting}[language=, numbers=none, escapechar=|] +Program received signal SIGSEGV, Segmentation fault. +0x0000555555554625 in fct_b (m=0x5c) at segfault.c:5 +5 printf("%l\n", *m); +|\pause| +(gdb) backtrace +#0 0x0000555555554625 in fct_b (m=0x5c) at segfault.c:5 +#1 0x0000555555554663 in fct_a (n=42) at segfault.c:10 +#2 0x0000555555554674 in main () at segfault.c:14 +|\pause| +(gdb) frame 1 +#1 0x0000555555554663 in fct_a (n=42) at segfault.c:10 +10 fct_b((int*)(some_fct_a_var + 8)); +|\pause| +(gdb) print some_fct_a_var +$1 = 84 + \end{lstlisting} + + \pause{} + \begin{center} + \textbf{\Large How does it work?!} + \end{center} + \vspace{1em} +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Stack frames and unwinding} + +\begin{frame}{Call stack and registers} + \begin{columns}[c] + \begin{column}{0.65\textwidth} + \begin{itemize} + \item Programs use a \alert{call stack} + \item Organized in \alert{stack frames} + \begin{itemize} + \item Local variables + \item Function parameters + \item Keep track of nesting, registers and ``return + point'' + \end{itemize} + \end{itemize} + + Common registers: + \begin{itemize} + \item \reg{rip}: program counter (PC) + + \item \reg{rsp}: stack pointer + + \item \reg{rbp}: base pointer + \begin{itemize} + \item Saves \reg{rsp} + \item Easy access + \item Wastes a register + \item Not often used (x86\_64) + \end{itemize} + \end{itemize} + \end{column} + \begin{column}{0.35\textwidth} + \includegraphics[width=0.95\linewidth]{../shared/imgs/call_stack} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{Isn't it as trivial as \texttt{pop()}?} + \begin{itemize} + \item This is only a \alert{blob of binary data} without mandatory + structure + \item We ignore \alert{which registers were saved} + \item We ignore \alert{whether \reg{rbp} was used} + \item We ignore \alert{where the return address is stored} + \item We ignore \alert{where the previous frame begins} + \end{itemize} + + \medskip + + But\ldots{} if we know how to \alert{unwind one}, we can \alert{recurse}! +\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{DWARF tables} + +\begin{frame}[fragile]{DWARF unwinding data} + + \begin{lstlisting}[numbers=none, language=] +00009b30 48 009b34 FDE cie=0000 pc=0084950..0084b37 + LOC CFA rbx rbp r12 r13 r14 r15 ra +0084950 rsp+8 u u u u u u c-8 +0084952 rsp+16 u u u u u c-16 c-8 +0084954 rsp+24 u u u u c-24 c-16 c-8 +0084956 rsp+32 u u u c-32 c-24 c-16 c-8 +0084958 rsp+40 u u c-40 c-32 c-24 c-16 c-8 +0084959 rsp+48 u c-48 c-40 c-32 c-24 c-16 c-8 +008495a rsp+56 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084962 rsp+64 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a19 rsp+56 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a1d rsp+48 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a1e rsp+40 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a20 rsp+32 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a22 rsp+24 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a24 rsp+16 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a26 rsp+8 c-56 c-48 c-40 c-32 c-24 c-16 c-8 +0084a30 rsp+64 c-56 c-48 c-40 c-32 c-24 c-16 c-8 + \end{lstlisting} + + \pause{} + + \vspace{-4cm} + \hfill\includegraphics[height=3cm, angle=45, origin=c]{img/dwarf_logo} + \hspace{-1cm} + +\end{frame} + \end{document}