14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4 Basisschicht e<strong>in</strong>es Verwalters<br />

Das Speichern von Debug<strong>in</strong>formationen ist <strong>in</strong> Mach-O Dateien nicht vorgesehen. Üblicherweise<br />

werden stabs-Debugstr<strong>in</strong>gs <strong>in</strong> der Symboltabelle abgelegt.<br />

Vergleich und Bewertung der Formate<br />

Die meisten heute gebräuchlichen B<strong>in</strong>ärformate eignen sich, um Module zu def<strong>in</strong>ieren. Ältere Formate<br />

wie beispielsweise das a.out s<strong>in</strong>d weniger geeignet, da durch die E<strong>in</strong>schränkung auf sieben Sektionen<br />

die Struktur der Software nicht immer ausreichend beschrieben werden kann.<br />

Das COFF-Format, <strong>in</strong> der ursprünglichen Fassung, ist ebenfalls weniger geeignet. Die Längenbeschränkung<br />

der Sektionsnamen auf acht Zeichen erschwert e<strong>in</strong>e nachvollziehbare Aufteilung der<br />

Struktur unnötig. Die <strong>in</strong> COFF zusätzlich <strong>in</strong>tegrierten Debug<strong>in</strong>formationen s<strong>in</strong>d für unser Ziel ebenfalls<br />

nicht ausreichend, da sich die Typ<strong>in</strong>formationen auf e<strong>in</strong>fache Standardtypen beschränken.<br />

Besser geeignet s<strong>in</strong>d die Erweiterungen des COFF-Formats. Hier ist im Speziellen Microsofts PE-<br />

COFF zu nennen. Durch die weite Verbreitung von W<strong>in</strong>dows ist auch dieses Format gut unterstützt und<br />

auch im Bereich der e<strong>in</strong>gebetteten Systeme verbreitet. Die extern gespeicherten Debug<strong>in</strong>formationen<br />

enthalten umfangreiche Typ<strong>in</strong>formationen, jedoch ist das Format nicht offiziell beschrieben. Die angebotene<br />

Bibliothek zum E<strong>in</strong>lesen und Verarbeiten der Informationen ist nur für W<strong>in</strong>dows-Betriebssysteme<br />

verfügbar.<br />

Daher werden wir im Weiteren dieser Arbeit das ELF-Format e<strong>in</strong>setzen. Es bietet ebenfalls die<br />

Möglichkeit, beliebig viele Sektionen zu def<strong>in</strong>ieren und damit die Struktur der Software auszudrücken.<br />

Die Erstellung und Verarbeitung wird durch die frei verfügbare B<strong>in</strong>ary Format Description Bibliothek<br />

(BFD) unterstützt. Auf dieser Bibliothek basieren viele andere Softwarewerkzeuge wie beispielsweise<br />

die GNU Compiler Collection (GCC). Die GCC ist weit verbreitet und bietet verschiedene Compiler<br />

für e<strong>in</strong>e Vielzahl von Architekturen an. Zudem ist die e<strong>in</strong>fache und automatische Integration von<br />

standardisierten und umfangreichen Debug<strong>in</strong>formationen (im DWARF-Format) möglich.<br />

Mach-O wäre pr<strong>in</strong>zipiell auch geeignet, da auch hier Möglichkeiten bestehen, die Struktur der Software<br />

fe<strong>in</strong>granular darzustellen. Besonders <strong>in</strong>teressant ist hier außerdem die Möglichkeit, b<strong>in</strong>ären Code<br />

für verschiedene Architekturen <strong>in</strong> e<strong>in</strong>er e<strong>in</strong>zigen Datei abzulegen. Das Mach-O Format wird jedoch<br />

kaum bei der Entwicklung von e<strong>in</strong>gebetteten Systemen e<strong>in</strong>gesetzt, daher ist die Werkzeugunterstützung<br />

auf wenige Architekturen beschränkt.<br />

4.2.5 Erstellung der Module<br />

Nachdem der grundsätzliche Aufbau und verschiedene Formate von B<strong>in</strong>ärdateien betrachtet wurden,<br />

soll nun gezeigt werden, wie man daraus Module def<strong>in</strong>ieren kann. Als Ausgangsbasis werden<br />

Objektdateien im ELF-Format zugrunde gelegt.<br />

Grober Aufbau e<strong>in</strong>er ELF-Datei<br />

Zunächst soll der Aufbau e<strong>in</strong>er ELF-Objektdatei im Detail betrachtet werden. Abbildung 4.4 zeigt den<br />

Aufbau schematisch. Alle enthaltenen Daten werden <strong>in</strong> e<strong>in</strong>zelnen ELF-Sektionen gespeichert. E<strong>in</strong>e<br />

Tabelle gibt Aufschluss über die Position und den Typ der e<strong>in</strong>zelnen ELF-Sektionen. Der Compiler legt<br />

normalerweise m<strong>in</strong>destens zwei oder drei Sektionen mit b<strong>in</strong>ären Daten an. E<strong>in</strong>e für den Code, e<strong>in</strong>e für<br />

die Daten und e<strong>in</strong>e, welche den Platzbedarf der nicht <strong>in</strong>itialisierten Daten beschreibt (.bss-Sektion).<br />

Zu jeder Sektion kann e<strong>in</strong>e Relokationstabelle gespeichert se<strong>in</strong>, die auf Positionen <strong>in</strong>nerhalb dieser<br />

Sektion wirkt. Relokationstabellen werden jeweils <strong>in</strong> eigenen ELF-Sektionen gespeichert. Daneben<br />

gibt es noch m<strong>in</strong>destens e<strong>in</strong>e ELF-Sektion, die e<strong>in</strong>e Symboltabelle enthält. Diese beschreibt die<br />

48

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!