Hier ist mal ein kleiner Anfang, der mit einfacheren Mitteln zustande gekommen ist: Ich habe mittels des Werkzeugs
strings in die beiden OpenSSL-Blbliotheken (
libssl, libcrypto) sowohl von AVM (29.04.27) als auch von uns (ds26-15.2) hinein geschaut, d.h. die entsprechenden Strings extrahiert. Danach habe ich noch etwas übrig gebliebenen Müll mit dem Editor entfernt und ein
diff -u0 (Uni-Diff ohne Kontext) darüber laufen lassen. Um das Ganze noch kompakter zu bekommen und unnötige Unterschiede aufgrund textueller Verschiebungen zu vermeiden, habe ich in einem zweiten Durchgang die Diffs dann noch einmal mit den sortierten (
sort) und von doppelten Textzeilen (
uniq) befreiten Textdateien gemacht. Sämtliche Ergebnisse befinden sich im Anhang. Aus den Dateinamen sollte man erkennen, worum es sich jeweils handelt.
Es fällt zunächst beim Überfliegen auf, daß die Unterschiede hauptsächlich, aber eben nicht ausschließlich aus Sachen bestehen, die wir zusätzlich zu AVM in den Libs haben. Das sollte nicht stören, kann aber Hinweise darauf geben, wie wir noch etwas mehr sparen können. Andererseits benötigen wir evtl. die zusätzlichen Funktionen für OpenVPN u.a. Pakete, das habe ich nicht geprüft. Es ist in diesem Zusammenhang auch nicht so wichtig.
Interessanter sind meiner Meinung nach die Sektionen, wo AVM Dinge drin hat, die uns fehlen. Da gibt es schon viel weniger. Auf die Schnelle sehe ich
- MD2 (zusätzlich zu MD4/5)
- SHA (zusätzlich zu SHA1/224/256/...)
- ossl_HMAC statt bei uns HMAC (Versionsunterschied 0.9.8 zu unserem 0.9.8e? Keine Ahnung.)
- EXP1024* (z.B. EXP1024-DES-CBC-SHA)
- SSLv2/3 compatibility part
Außerdem findet sich in AVMs
libcrypto folgende Compiler-Zeile:
Code:
mipsel-linux-uclibc-gcc \
-fPIC \
-DOPENSSL_PIC \
-DOPENSSL_NO_ERR \
-DL_ENDIAN \
-DTERMIO \
-march=4kc \
-mtune=4kc \
-Os \
-fomit-frame-pointer \
-Wall
Wir verwenden das hier (nicht viel anders):
Code:
mipsel-linux-uclibc-gcc \
-fPIC \
-DOPENSSL_PIC \
-DZLIB_SHARED \
-DZLIB \
-DDSO_DLFCN \
-DHAVE_DLFCN_H \
-I/home/kriegaex/ds/trunk/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/include \
-DOPENSSL_SMALL_FOOTPRINT \
-DOPENSSL_NO_ERR \
-DTERMIO \
-Os \
-pipe \
-march=4kc \
-Wa,--trap \
-D_LARGEFILE_SOURCE \
-D_LARGEFILE64_SOURCE \
-D_FILE_OFFSET_BITS=64 \
-fomit-frame-pointer \
-Wall
Ob das jemandem etwas nützt, weiß ich nicht. Aber es könnte ein Anfang sein.
Update: Ich habe mal noch schnell mit einem Kommandozeilen-Werkzeug für ELF-Dateien nur die Symboltabellen der Bibliotheken exportiert und verglichen. Diese Diffs sind etwas übersichtlicher, wenn man speziell an den Symboltabellen interessiert ist. Siehe Anhang #2.