Erstellt vor 7 Jahren

Zuletzt geändert vor 11 Monaten

#1160 assigned enhancement

Strip binaries und libs

Erstellt von: oliver Verantwortlicher:
Priorität: normal Meilenstein: freetz-future
Komponente: tools Version: devel
Stichworte: Beobachter: er13
Product Id: Firmware Version:

Beschreibung (zuletzt geändert von oliver)

Aufgrund der Probleme mit einem statischen strip in fakeroot wurde in #1089 sstrip als Alternative (host-tools) hinzugefügt. Nachdem durch die dynamische Download-Toolchain das Problem behoben ist, stellt sich die Frage was wir mit sstrip machen.

Möglichkeiten:

1) Menuconfig-Option für strip (Entweder strip oder sstrip oder gar keins)

2) Dateien direkt nach dem Build des jeweiligen Pakets schon mit sstrip bearbeiten oder erst später wie in Option 3).

3) sstrip am Ende von fwmod (vor dem mksquashfs) über alle Binärdateien laufen lassen.

Ich favorisiere derzeit die Lösung die Dateien nicht mehr wie bisher direkt zu strippen. Sondern zentral am Ende von fwmod. Das hätte den Vorteil, dass man mit der in 1) angesprochenen Menuconfig-Option quasi eine "Debug-Firmware" bauen könnte.

Problem an sstrip ist, dass Programme evtl. keine Crash-Dumps mehr erstellen können. Welches Programm macht das derzeit?

Anhänge (9)

sstrip.patch (3.6 KB) - hinzugefügt von oliver vor 7 Jahren.
Update: eval hinzugefügt
FREETZ_STRIP_BINARIES.diff (1.8 KB) - hinzugefügt von dileks vor 6 Jahren.
Introduce FREETZ_STRIP_BINARIES (patch was 1st attached to #1310)
0001-Introduce-Strip-binaries-and-libs-menu.patch (3.5 KB) - hinzugefügt von dileks vor 6 Jahren.
[PATCH] Introduce "Strip binaries and libs" menu
0001-Fixup-to-r7257-and-move-FREETZ_REPLACE_SSL_LIBS.patch (2.5 KB) - hinzugefügt von dileks vor 6 Jahren.
[PATCH] Fixup to r7257 and move FREETZ_REPLACE_SSL_LIBS
0001-Move-FREETZ_REPLACE_SSL_LIBS-to-Crypto-SSL-menu.patch (2.5 KB) - hinzugefügt von dileks vor 6 Jahren.
[PATCH] Move FREETZ_REPLACE_SSL_LIBS to "Crypto & SSL" menu
0001-Move-FREETZ_REPLACE_SSL_LIBS-to-Patches-menu.patch (2.7 KB) - hinzugefügt von dileks vor 6 Jahren.
[PATCH 1/2] Move FREETZ_REPLACE_SSL_LIBS to "Patches" menu
0002-Cleanup-section-names-in-patches-Config.in.patch (2.0 KB) - hinzugefügt von dileks vor 6 Jahren.
[PATCH 2/2] Cleanup section-names in patches/Config.in
strip_sstrip.patch (107.5 KB) - hinzugefügt von oliver vor 6 Jahren.
strip_early_vs_later__idea_only.patch (1.8 KB) - hinzugefügt von er13 vor 6 Jahren.

Alle Anhänge herunterladen als: .zip

Änderungshistorie (42)

comment:1 Geändert vor 7 Jahren durch oliver

  • Beschreibung geändert (Diff)

comment:2 Geändert vor 7 Jahren durch ralf

Ich bin für eine Kombination aus 3 und 1, sstrip sollte optional am Ende von fwmod laufen, und zwar erst nach der external Verarbeitung. Für Fälle, wo auch der external-Platz knapp ist, könnte man getrennt anbieten, sstrip auch auf external anzuwenden. Normalerweise kommt es auf einem USB-Stick aber nicht auf einige kB mehr oder weniger an.

Die Variante 2, sofort beim Erstellen, funktioniert für Libraries sowieso nicht, der Linker kann die so veränderten Dateien nicht mehr nutzen.

Crash-Dumps werden z.B. von den AVM-Programmen erstellt. Samba könnte es theoretisch auch, es funktioniert auf der Box aber nicht richtig oder ist deaktiviert. Da ein Crash-Dump sowieso nur zu Debug-Zwecken nützlich ist, ist das normalerweise kein Problem, und bei Bedarf kann man das sstrip ja weglassen.

Also beim Kopieren nach packages kein strip mehr, und für Flash und external jeweils eine Option unverändert/strip/sstrip. Wenn es keine Probleme gibt, würde ich die Voreinstellung für das interne Flash auf sstrip setzen und die für external auf strip.

comment:3 Geändert vor 7 Jahren durch oliver

Ich hab mal ein ersten Vorschlag angehängt. Die Hilfe fürs menuconfig ist noch nicht fertig und ich bin nicht ganz mit der Namensgebung der choice-Option zufrieden.

comment:4 Geändert vor 7 Jahren durch ralf

Das Ausführen von $STRIP geht so nicht korrekt.

$STRIP $i

Statt dessen muß es heißen:

eval $STRIP $i

oder wenn Sonderzeichen im Namen erwartet werden, was aber im Moment nicht der Fall ist

eval $STRIP \"\$i\"

Grund dafür sind die geschweiften Klammern in --remove-section={.comment,.note,.pdr}, die sonst nicht expandiert werden.

Geändert vor 7 Jahren durch oliver

Update: eval hinzugefügt

comment:5 Geändert vor 7 Jahren durch oliver

Ich schieb das mal auf 1.3, da es sich um eine Erweiterung und nicht um ein akutes Problem handelt. Falls sich jemand der Sache annehmen möchte kann er das Ticket auch gerne wieder nach 1.2 verschieben…

comment:6 Geändert vor 7 Jahren durch oliver

  • Meilenstein von freetz-1.2 nach freetz-1.3 geändert

Geändert vor 6 Jahren durch dileks

Introduce FREETZ_STRIP_BINARIES (patch was 1st attached to #1310)

comment:7 Geändert vor 6 Jahren durch dileks

Später kann man noch Unterscheidung cross-target-strip/sstrip einbauen.

Wichtig wäre zu schauen, wo überall noch strip in den *.mk benutzt wird.
Z.B. benutzten wir bei iptables-1.4.11.1 $(TARGET_STRIP) in iptables.mk.

Geändert vor 6 Jahren durch dileks

[PATCH] Introduce "Strip binaries and libs" menu

comment:8 Geändert vor 6 Jahren durch dileks

  • Status von new nach assigned geändert
  • Verantwortlicher auf dileks gesetzt

Anmerkung Oliver im IRC:

[16:01:49] <olistudent> dileks: Ich favorisiere die Lösung, dass wir alle Binaries erst in diesem letzten Schritt strippen. Das würde einen Debug-Build ermöglichen. Momentan ist eine Untersuchung der uClibc mit gdb sehr kompliziert...
[16:02:24] <olistudent> Mal sehen, ob wir das irgendwie hinbekommen. Wobei man dann wieder bei external usw. aufpassen muss.

comment:9 Geändert vor 6 Jahren durch oliver

In [7257]:

Introduce "Strip binaries and libs" menu (refs #1160)

  • Create a new menu especially for stripping options.
  • Introduce FREETZ_STRIP_BINARIES option to en-/disable stripping binaries via fwmod script.
  • Move existing FREETZ_STRIP_LIBRARIES option for mklibs usage to new menu.

Signed-off-by: Sedat Dilek <sedat.dilek@…>

comment:10 Geändert vor 6 Jahren durch ralf

Was ist eigentlich mit dem sstrip.patch von Oliver? Da war doch soweit alles drin, einschließlich der Möglichkeit, zwischen strip und sstrip auszuwählen.

comment:11 Geändert vor 6 Jahren durch oliver

Der Patch ist noch nicht ganz fertig. Sollte sich aber ohne Probleme einbauen lassen.

Geändert vor 6 Jahren durch dileks

[PATCH] Fixup to r7257 and move FREETZ_REPLACE_SSL_LIBS

comment:12 Geändert vor 6 Jahren durch dileks

Vergiss den obigen Patch - kein FixUp!

Geändert vor 6 Jahren durch dileks

[PATCH] Move FREETZ_REPLACE_SSL_LIBS to "Crypto & SSL" menu

comment:13 Geändert vor 6 Jahren durch dileks

Der letzte Patch ist ein CleanUp nicht FixUp Patch.

comment:14 Geändert vor 6 Jahren durch er13

Aus meiner Sicht gehört das Ersetzen der AVM-SSL-Libs unter Patches - zusätzliches Submenu: Replace AVM-Libraries. Später könnten weitere Libraries dazu kommen (z.B. libz, liblua könnte glaube ich ersetzt werden).

Zuletzt geändert vor 6 Jahren von er13 (vorher) (Diff)

Geändert vor 6 Jahren durch dileks

[PATCH 1/2] Move FREETZ_REPLACE_SSL_LIBS to "Patches" menu

Geändert vor 6 Jahren durch dileks

[PATCH 2/2] Cleanup section-names in patches/Config.in

comment:15 Geändert vor 6 Jahren durch dileks

Ich hab den Patch gesplitted wie gewünscht im IRC.

comment:16 Geändert vor 6 Jahren durch oliver

In [7261]:

patches:

  • Move remaining FREETZ_REPLACE_SSL_LIBS to "Patches" menu where it should belong.
  • Create a new section-name "Replacement patches" in "Patches" menu.
  • Remove a recursive dependency from FREETZ_LIB_libcrypto as FREETZ_REPLACE_SSL_LIBS already depends on FREETZ_HAS_LIBSSL.
  • refs #1160

Signed-off-by: Sedat Dilek <sedat.dilek@…>

comment:17 Geändert vor 6 Jahren durch oliver

In [7262]:

patches: (refs #1160)

  • Cleanup section-names in patches/Config.in
  • Give section-names a more meaningful name and limit all comment lines to 50 chars consistently.

Signed-off-by: Sedat Dilek <sedat.dilek@…>

comment:18 Geändert vor 6 Jahren durch oliver

In [7263]:

comment:19 Geändert vor 6 Jahren durch ralf

Zu diesen ganzen Patches mit refs #1160:

Wenn man es genau nimmt, hat alles seit 7 nichts mehr mit sstrip zu tun. Der Patch von Oliver ermöglichte noch eine Auswahl von sstrip. Ich war davon ausgegangen, dass dieser längst mit aufgenommen sei. Statt dessen ist jetzt plötzlich eine Änderung im Trunk, die kein sstrip ermöglicht, aber den Eindruck erweckt, es sei die Lösung zu diesem Ticket.

comment:20 Geändert vor 6 Jahren durch dileks

Wir wollten erst die einfache Lösung… der Rest ist CleanUp nachdem man mklibs + einfaches strip in ein eigenes Menü verfrachtet hat… Ja, man hätte ein neues Ticket aufmachen können. Was wir machen & gemacht haben kann man hier nachlesen. Diskutiert wird nicht im Ticket (wurde mir gesagt)… Join IRC?

comment:21 Geändert vor 6 Jahren durch dileks

  • Zusammenfassung von Verwendung von sstrip nach Strip binaries und libs geändert

comment:22 Geändert vor 6 Jahren durch oliver

In [7503]:

  • uclibc: Don't strip libraries (refs #1160, #842)

Geändert vor 6 Jahren durch oliver

comment:23 Geändert vor 6 Jahren durch oliver

  • Beobachter er13 hinzugefügt
  • Verantwortlicher dileks gelöscht

@er13
Kannst du bitte über die Änderungen drüber schauen? Evtl. wäre es sinnvoll Regeln (INSTALL_BINARY könnte man auch ganz weglassen) noch umzubenennen oder die Belegung von STRIP in fwmod anders zu machen… Danke.

edit: dileks hat mich gerade darauf hingewiesen, dass ich die TARGET_STRIP Befehle vergessen habe.

Zuletzt geändert vor 6 Jahren von oliver (vorher) (Diff)

Geändert vor 6 Jahren durch er13

comment:24 Geändert vor 6 Jahren durch er13

Ich würde das Thema etwas anders angehen (s. Patch).

Mit dem Patch kann man sowohl das aktuelle Verhalten als auch das neue abbilden.

Das aktuelle Verhalten hat folgende Vorteile:

  • braucht weniger Platz
  • die Phase "build Verzeichnis löschen, original Image entpacken, … Image packen" braucht weniger Zeit, da die meisten Files unter packages bereits gestripped sind.

In der Regel möchte man ja nur ein Package debuggen. Man schaltet die Option um und baut gezielt das eine Package neu (eventuell samt der Libraries, von denen dieses abhängt). Möchte man aus irgendwelchen Gründen das "ungestippte" Image auch noch flashen, so könnte man durch "Umschalten der Option zum richtigen Zeitpunkt" auch noch Platz im Image sparen (mit dem Patch von Oliver wäre dieser Trick nicht möglich).

Das aktuelle Verhalten wäre aus meiner Sicht weiterhin als default zu setzen, denn es entspricht dem, wie die meisten User freetz nutzen. Diejenigen, die etwas auf der Box debuggen möchten, sind klar in der Minderheit.

In der download-Toolchain soll natürlich ungestrippte Version von uClibc enthalten sein.

p.s. TARGET_STRIP einfach zu entfernen reicht in jedem Fall nicht aus. Die meisten CONFIGURED_CONFIGURE-Pakete erkennen automatisch (aus dem host-triplet), welches Strip-Programm zu nutzen ist (s. ac_cv_prog_STRIP-Eintrag in der config.cache). D.h. da, wo wir make install zum Installieren verwenden, müssen wir die Strip Variable überladen analog dem wie wir es jetzt bei einigen CONFIGURED_NOP-Paketen machen (STRIP="$(TARGET_STRIP)"). Wollen wir, dass die Files nicht gestripped werden, dann müssen wir es mit true überladen, aber Überladen müssen wir dennoch.

p.p.s. Bin mir nicht sicher, aber ich meine es soll auch irgendetwas für die CFLAGS geben, denn wenn ich debugge, schalte ich in der Regel Optimierungen aus (i.e. keine -Os Option und kein -DNDEBUG). Die Flags werden blöderweise in der config.cache gecached, d.h. Umschalten ohne config.cache zu löschen wird nicht ganz trivial sein.

comment:25 Geändert vor 6 Jahren durch oliver

Dass das aktuelle Verhalten weniger Platz benötigt ist für mich kein Argument. Dem Rest stimme ich zu.

Die Idee alles am Ende zu strippen kam hauptsächlich daher, dass ja 2 Varianten (strip und sstrip) unterstützt werden sollen.

comment:26 Geändert vor 6 Jahren durch er13

Es spricht ja nichts dagegen, es zunächst mit strip und dann auch noch mit sstrip zu strippen.

comment:27 Antwort: Geändert vor 6 Jahren durch oliver

@er13
War der Patch von dir nur eine Idee oder wollen/können wir das so verwenden?

comment:28 Geändert vor 6 Jahren durch cuma

@er13: ping

comment:29 als Antwort auf: ↑ 27 Geändert vor 6 Jahren durch er13

Replying to oliver:

@er13
War der Patch von dir nur eine Idee oder wollen/können wir das so verwenden?

Das ist nur der erste Schritt. Der Patch allein genügt nicht. Bei einigen Paketen (bei denen wir install-target aufrufen) müssen wir noch dafür sorgen, dass diese kein strip aufrufen.

comment:30 Geändert vor 5 Jahren durch cuma

gibt es hier akut was zu tun oder ist das mehr ein "enhancement"? Das müsste nach der Ticketbeschreibung "wurde sstrip als Alternative hinzugefügt" eigentlich so sein

comment:31 Geändert vor 5 Jahren durch oliver

Nichts akutes.

comment:32 Geändert vor 5 Jahren durch cuma

  • Meilenstein von freetz-1.3 nach freetz-future geändert
  • Typ von defect nach enhancement geändert

comment:33 Geändert vor 11 Monaten durch er13

In 14012:

sstrip:

Hinweis: Hilfe zur Verwendung von Tickets finden Sie in TracTickets.