2011-03-19 03:18:08 +03:00
|
|
|
\section{Dynamic Linker/Loader for ELF Binaries}
|
|
|
|
\subsection{Overview}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\subsubsection{Goal}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\index{dynamic linker}
|
2011-03-18 05:45:26 +03:00
|
|
|
To develop a stable, simplistic dynamic linker for ELF binaries and
|
|
|
|
shared libraries.
|
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\subsubsection{Purpose}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
|
|
|
The purpose of this project is to facilitate understanding of the ELF
|
|
|
|
binary format and its use in dynamic libraries and executables. Work
|
|
|
|
from this project will be used to give the とあるOS kernel a working
|
|
|
|
implementation of dynamic libraries.
|
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\subsubsection{Scope}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
|
|
|
This project will be developed for the とあるOS kernel and/or in
|
|
|
|
user-space under Linux.
|
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\subsubsection{Description}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
|
|
|
The linker/loader will be built to handle 32-bit ELF binaries
|
|
|
|
compiled for use with shared libraries. It will load the dynamic
|
|
|
|
binaries and it associated chain of library dependencies and link
|
|
|
|
the symbol tables of the binary and libraries to create an
|
|
|
|
executable process image.
|
|
|
|
|
2011-03-30 06:08:56 +04:00
|
|
|
\subsubsection{Testing}
|
|
|
|
|
|
|
|
Various sample binaries are provided in \texttt{loader/tests/}.
|
|
|
|
|
|
|
|
\subsubsection{Documentation}
|
|
|
|
|
|
|
|
As with all other parts of the kernel, the linker/loader will eventually
|
|
|
|
be documented with Doxygen, as well as with additional documentation in this
|
|
|
|
chapter.
|
|
|
|
|
2011-03-19 03:18:08 +03:00
|
|
|
\subsubsection{Schedule}
|
2011-03-18 05:45:26 +03:00
|
|
|
|
|
|
|
The four week schedule for this project will be broken up as follows:
|
|
|
|
|
|
|
|
\begin{enumerate}
|
|
|
|
\item \texttt{readelf} implementation to facilitate learning the ELF binary format.
|
|
|
|
\item Kernel-mode static ELF binary loading and execution.
|
|
|
|
\item Loading and execuation of binaries through the linker.
|
|
|
|
\item Dynamic linking and execution of binaries and libraries.
|
|
|
|
\end{enumerate}
|