%*
%* Copyright (c) 2007 by Lukas Ruf (lukas.ruf@lpr.ch)
%*
%* Create: 2007-01-30:1703G
%* Modify: 2007-01-30:1704
%* Commit: $Id: originalproblem.tex 272 2007-03-06 21:45:29Z ruf $
%*

\chapter{Binary Patcher}
\label{binarypatcher}
Zur Erleichterung der Aufgabe des Loader-Moduls des Memory Managements enthalten die Image-Files in einem vorbereiteten Header 
die Adressen der .text-, .data-, .bss- und .optional-Segmente \cite{topsyv3}. Diese Adressen werden für die Initialisierung der Protection Domains benötigt, die der Loader beim Laden der Images anlegt.\\
Aufgrund der von uns verwendeten, aktuelleren Compiler-Version traten beim Einsatz des ursprünglichen Binary Patchers Kompatibilitätsprobleme auf, die die folgenden Anpassungen erforderlich machten: 
\begin{itemize}
	\item Die von uns eingesetzte Compilerversion verwendete neue Bezeichnungen für die Segmente des Kompilats. Diese Änderung machte auch eine Anpassung des Parsers im Binary Patcher notwendig.
	\item Während die ursprüngliche Compilerversion nur ein .data-Segment anlegte, unterteilte ihre Nachfolgerin das .data-Segment in zwei einzelne Teile. Der Parsing-Mechanismus konnte diee nicht verarbeiten und musste erst dafür vorbereitet werden, diese beiden Teile zu einem einzelnen zusammenfassen zu können.
	\item Da die von uns eingesetzte Karte ihren Speicher bei einem Reset nicht löschte, der Compiler jedoch aus Performancegründen einen mit Nullen initialisierten Speicher voraussetzt, war es nötig, an die erzeugten Images einen mit Nullen gefüllten Speicherbereich mit der Grösse des .bss-Segments anzuhängen. So konnte sichergestellt werden, dass alte Daten in den .bss-Bereichen nach einem Reset der Karte zuverlässig initialisiert wurden. Der ursprüngliche Binary Patcher verfügte über keine solche Funktionalität.
\end{itemize}
