M
Michael Schwingen
Guest
On 2015-05-11, Sieghard Schicktanz <Sieghard.Schicktanz@SchS.de> wrote:
Das ist keine Vorbereitung: man übersetzt alles mit diesen Flags, linkt, und
das Ergebnis paßt.
Natürlich - das gilt auch ohne ...-sections: wenn eine Bibliothek mit
unpassenden Compilerflags übersetzt wurde, kann man die überhaupt nicht
benutzen.
Bei --gc-sections ist das weniger schlimm: der Fallback (Bibliothek wird
dann halt wieder objekt-weise dazugelinkt) funktioniert, beim restlichen
Code hat man trotzdem den Vorteil.
Das ELF-File wird größer, der Code nicht. Ich benutze das seit Jahren für
Code, der ins Flash kommt - der schrumpft spürbar.
Ich hatte noch keine Probleme damit. gdb kann es problemlos - und soweit ich
das sehe, ist das vollständig vom ELF-Format abgedeckt, das ja beliebige
sections kann.
Und? das ist kein Grund, warum das prinzipiell immer so sein müßte.
cu
Michael
Beim gcc: -ffunction-sections -fdata-sections -Wl,--gc-sections
Liest sich so, als ob das nicht so ohne weiteres den gewünschten Effekt
brächte, sondern nur die _Vorbereitung_ dafür, das machen zu können.
Das ist keine Vorbereitung: man übersetzt alles mit diesen Flags, linkt, und
das Ergebnis paßt.
D.h. eine Bibliothek oder eine Objekt-Datei muß so kompiliert werden,
damit _später_ die Funktionen selektiv entnommen werden können. Wurde sie
das nicht, geht es nicht.
Natürlich - das gilt auch ohne ...-sections: wenn eine Bibliothek mit
unpassenden Compilerflags übersetzt wurde, kann man die überhaupt nicht
benutzen.
Bei --gc-sections ist das weniger schlimm: der Fallback (Bibliothek wird
dann halt wieder objekt-weise dazugelinkt) funktioniert, beim restlichen
Code hat man trotzdem den Vorteil.
Und als nette Ergänzung gibt's dann noch den Nachsatz, daß damit die
Objekt-Dateien größer würden, was nicht so schlimm wäre - aber daß auch die
so erstellten _Anwendungen_ größer würden, und zudem _langsamer_.
Das ELF-File wird größer, der Code nicht. Ich benutze das seit Jahren für
Code, der ins Flash kommt - der schrumpft spürbar.
vorstellen. Daß das von den gängigen Debuggern auch ungern gesehen werden
kann, dagegen schon...
Ich hatte noch keine Probleme damit. gdb kann es problemlos - und soweit ich
das sehe, ist das vollständig vom ELF-Format abgedeckt, das ja beliebige
sections kann.
Linker, der einfach strunzdumm alle Objekte aus einer statischen Library
mit einbindet, ist immernoch standardkonform.
Eben. Und so war das halt lange Zeit.
Und? das ist kein Grund, warum das prinzipiell immer so sein müßte.
cu
Michael