\section{Dynamic Linker/Loader for ELF Binaries} \subsection{Overview} \subsubsection{Goal} \index{dynamic linker} To develop a stable, simplistic dynamic linker for ELF binaries and shared libraries. \subsubsection{Purpose} 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. \subsubsection{Scope} This project will be developed for the とあるOS kernel and/or in user-space under Linux. \subsubsection{Description} 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. \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. \subsubsection{Schedule} 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}