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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

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

nicht feststeht oder das Ziel <strong>in</strong> e<strong>in</strong>er anderen Datei gespeichert ist. In e<strong>in</strong>er Objektdatei gibt<br />

es daher auch undef<strong>in</strong>ierte Symbole, die zwar e<strong>in</strong>en Namen, jedoch ke<strong>in</strong>e Position haben. Sie<br />

beschreiben e<strong>in</strong>e Position im späteren Programm, die durch e<strong>in</strong>e andere Objektdatei def<strong>in</strong>iert<br />

wird.<br />

Str<strong>in</strong>gtabellen E<strong>in</strong>e Str<strong>in</strong>gtabelle ist lediglich e<strong>in</strong>e Optimierung beim Speichern der Namen von<br />

Symbolen und Sektionen. Statt die Namen direkt <strong>in</strong> die entsprechende Struktur zu schreiben,<br />

wird dort auf e<strong>in</strong>en E<strong>in</strong>trag <strong>in</strong> e<strong>in</strong>er Str<strong>in</strong>gtabelle verwiesen. Doppelt vorkommende Namen<br />

müssen so nur e<strong>in</strong>mal abgespeichert werden.<br />

Relokationstabellen Enthält die Objektdatei verschiebbaren B<strong>in</strong>ärcode, so können ke<strong>in</strong>e absoluten<br />

Zieladressen von Sprungbefehlen im B<strong>in</strong>ärcode enthalten se<strong>in</strong>. Die Zieladressen werden erst<br />

während des B<strong>in</strong>dens durch den L<strong>in</strong>ker bestimmt, der festlegt, wo die e<strong>in</strong>zelnen B<strong>in</strong>ärdaten im<br />

endgültigen Programm liegen werden. Damit der L<strong>in</strong>ker weiß, an welchen Stellen er Adressen<br />

e<strong>in</strong>fügen muss, enthalten verschiebbare Objektdateien e<strong>in</strong>e Relokationstabelle. In dieser Tabelle<br />

werden Verweise auf Symbole gespeichert. Jeder Verweis, auch Relokation genannt, enthält das<br />

Zielsymbol, die Position, an der die Adresse des Zielsymbols <strong>in</strong> den Code e<strong>in</strong>gefügt werden<br />

muss und die Art und Weise, wie sie e<strong>in</strong>gefügt werden soll.<br />

Debug<strong>in</strong>formationen Um Fehler schneller f<strong>in</strong>den und leichter elim<strong>in</strong>ieren zu können, besteht die<br />

Möglichkeit e<strong>in</strong>er Objektdatei Debug<strong>in</strong>formationen beizufügen. Diese enthalten im Allgeme<strong>in</strong>en<br />

e<strong>in</strong>e Rückabbildung von dem erzeugten B<strong>in</strong>ärcode auf den ursprünglichen Quellcode. So kann<br />

im Falle e<strong>in</strong>es Fehlers aus der Position im B<strong>in</strong>ärcode die Stelle im Quellcode bestimmt werden.<br />

Dem Programmierer kann dann die Zeile des Quellcodes angezeigt werden, die vermutlich den<br />

Fehler verursacht hat.<br />

Daneben können aber noch zahlreiche weitere Informationen enthalten se<strong>in</strong>, wie beispielsweise<br />

Informationen über den Aufbau der verwendeten Typen. Hierdurch kann e<strong>in</strong> Programmierer<br />

mithilfe e<strong>in</strong>es geeigneten Debuggers die Datenstrukturen <strong>in</strong> e<strong>in</strong>em Programmabbild untersuchen,<br />

ohne den Quellcode vorliegen zu haben. In Abschnitt 4.2.6 werden Debug<strong>in</strong>formationen genauer<br />

betrachtet und verschiedene Formate vorgestellt. Für uns s<strong>in</strong>d <strong>in</strong>sbesondere die Typ<strong>in</strong>formationen<br />

<strong>in</strong>teressant, da sie zur Def<strong>in</strong>ition der Schnittstelle e<strong>in</strong>es Moduls genutzt werden können.<br />

In Abbildung 4.3 werden die angesprochenen Informationen anhand e<strong>in</strong>es realen Beispiels gezeigt.<br />

Dargestellt ist der Inhalt der Objektdatei e<strong>in</strong>es e<strong>in</strong>fachen Beispiels im ELF-Format. Anhand der<br />

Relokationstabelle kann man erkennen, welche Stellen im B<strong>in</strong>ärcode positionsabhängig s<strong>in</strong>d. Außerdem<br />

s<strong>in</strong>d die Verweise auf die Symboltabelle zu sehen, mit deren Hilfe die endgültige Adresse bestimmt<br />

wird.<br />

4.2.4.3 Objektdateiformate<br />

Im Folgenden sollen kurz die wichtigsten Formate für Objektdateien vorgestellt werden. In e<strong>in</strong>er<br />

Zusammenfassung werden sie abschließend kurz mite<strong>in</strong>ander verglichen.<br />

a.out<br />

Das assembler output Format (kurz: a.out) ist e<strong>in</strong> Format für ausführbare Dateien, e<strong>in</strong>geführt mit<br />

dem ersten UNIX-System. In der ursprünglichen Form [TR71] nur für Programme und Objektdateien<br />

gedacht, wurde es später auch für Programmbibliotheken verwendet [Ber95]. Das Format wurde lange<br />

44

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!