TARGET_LDFLAGS

Lior
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 17. Oktober 2002, 13:42

TARGET_LDFLAGS

Beitrag von Lior »

kann jemand mit cvs access in configure.ac TARGET_LDFLAGS="-Wl,-O1" hinzufügen?
man ld

-O level
If level is a numeric values greater than zero ld optimizes the output. This might take significantly longer and therefore probably should only be enabled for the final binary.
ich hab sehr gute erfahrungen damit. hat absolut keinen negativen nebeneffekt (die binaries werden nicht grösser, usw.) , ist 100% safe, wird von ulrich drepper persönlich empfohlen, und optimiert wirklich merklich! wer's nicht glaubt, kann einige time experimente machen.
__Ghost__
Developer
Beiträge: 245
Registriert: Mittwoch 13. März 2002, 21:19

Beitrag von __Ghost__ »

Hi,

ich hab mir mal nen neues CDK damit aufgesetzt... das Image läuft auch auf der DM7000 damit.. aber der erhoffte mega performance Schub ist dadurch nicht zu spüren..

Mal schauen.. ich würde das gerne erstmal ne weile verwenden.. und mal schauen, dass es dadurch nicht irgendwie Probleme mit Programmen gibt die nicht mit diesem -Wl,-O1 kompiliert wurden...

cu
Lior
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 17. Oktober 2002, 13:42

Beitrag von Lior »

ok. will dich nicht abfucken, aber schau dir ma das an:

es gibt noch ne ld option namens --as-needed. ist ne option um depencies von libraries zu verringern.
hier ein beispiel:
powerpc-tuxbox-linux-gnu-g++ -Wall -mcpu=405 -msoft-float -mmultiple -mstring -meabi -pipe -Os -DHAVE_DREAMBOX_HARDWARE -pthread -o enigma -Wl,--export-dynamic enigma.o enigma_dyn.o enigma_event.o enigma_lcd.o parentallock.o enigma_main.o enigma_plugins.o enigma_setup.o enigma_xmlrpc.o scan.o setupnetwork.o setupvideo.o sselect.o streaminfo.o enigma_dyn_rotor.o enigma_mainmenu.o satconfig.o epgwindow.o setup_timezone.o enigma_info.o enigma_scan.o setupskin.o setup_osd.o timer.o setup_lcd.o enigma_vcr.o channelinfo.o setup_harddisk.o enigma_ci.o upgrade.o satfind.o setup_rc.o setup_extra.o rotorconfig.o setup_rfmod.o wizard_language.o wizard_scan.o engrab.o setupengrab.o helpwindow.o tpeditwindow.o enigma_web.o enigma_epg.o wizard_timezone.o elirc.o hotplug.o enigma_bouquet.o setup_window.o system_settings.o time_settings.o software_update.o enigma_standby.o enigma_mmisocket.o enigma_mmi.o flashtool.o time_correction.o enigma_dyn_epg.o setup_keyboard.o wizard_fpupdate.o enigma_mount.o enigma_dyn_mount.o enigma_dyn_utils.o enigma_dyn_wap.o enigma_dyn_conf.o enigma_dyn_flash.o enigma_dyn_xml.o enigma_streamer.o enigma_dyn_timer.o enigma_processutils.o enigma_picmanager.o enigma_dyn_misc.o enigma_dyn_pda.o enigma_dyn_movieplayer.o enigma_dyn_dreamflash.o rds_text.o -Wl,--whole-archive ../lib/driver/libenigma_driver.a ../lib/base/libenigma_base.a ../lib/codecs/libenigma_codecs.a ../lib/dvb/libenigma_dvb.a ../lib/dvb/lowlevel/libenigma_dvb_lowlevel.a ../lib/gui/libenigma_gui.a ../lib/gdi/libenigma_gdi.a ../lib/socket/libenigma_socket.a ../lib/system/libenigma_system.a ../lib/picviewer/libenigma_picviewer.a ../lib/movieplayer/libenigma_movieplayer.a -Wl,--no-whole-archive -L/home/lior/dreambox/root/cdkroot/lib -lfreetype -L/home/lior/dreambox/root/cdkroot/lib -lid3tag -lz -L/home/lior/dreambox/root/cdkroot/lib -lmad -lm -L/home/lior/dreambox/root/cdkroot/lib -lmd5sum -L/home/lior/dreambox/root/cdkroot/lib -lpng12 -lz -lm -L/home/lior/dreambox/root/cdkroot/lib -lsigc-1.2 -L/home/lior/dreambox/root/cdkroot/lib -lxmltree -L/home/lior/dreambox/root/cdkroot/lib -ltuxtxt -ldl -lpthread -lcrypt -lresolv -ljpeg -lungif
lior@BeerSheva ~/dreambox/apps/tuxbox/enigma/src $ powerpc-tuxbox-linux-gnu-readelf -d ./enigma | grep NEEDED | wc -l
19
powerpc-tuxbox-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wall -mcpu=405 -msoft-float -mmultiple -mstring -meabi -pipe -Os -DHAVE_DREAMBOX_HARDWARE -pthread -o enigma -Wl,--export-dynamic enigma.o enigma_dyn.o enigma_event.o enigma_lcd.o parentallock.o enigma_main.o enigma_plugins.o enigma_setup.o enigma_xmlrpc.o scan.o setupnetwork.o setupvideo.o sselect.o streaminfo.o enigma_dyn_rotor.o enigma_mainmenu.o satconfig.o epgwindow.o setup_timezone.o enigma_info.o enigma_scan.o setupskin.o setup_osd.o timer.o setup_lcd.o enigma_vcr.o channelinfo.o setup_harddisk.o enigma_ci.o upgrade.o satfind.o setup_rc.o setup_extra.o rotorconfig.o setup_rfmod.o wizard_language.o wizard_scan.o engrab.o setupengrab.o helpwindow.o tpeditwindow.o enigma_web.o enigma_epg.o wizard_timezone.o elirc.o hotplug.o enigma_bouquet.o setup_window.o system_settings.o time_settings.o software_update.o enigma_standby.o enigma_mmisocket.o enigma_mmi.o flashtool.o time_correction.o enigma_dyn_epg.o setup_keyboard.o wizard_fpupdate.o enigma_mount.o enigma_dyn_mount.o enigma_dyn_utils.o enigma_dyn_wap.o enigma_dyn_conf.o enigma_dyn_flash.o enigma_dyn_xml.o enigma_streamer.o enigma_dyn_timer.o enigma_processutils.o enigma_picmanager.o enigma_dyn_misc.o enigma_dyn_pda.o enigma_dyn_movieplayer.o enigma_dyn_dreamflash.o rds_text.o -Wl,--whole-archive ../lib/driver/libenigma_driver.a ../lib/base/libenigma_base.a ../lib/codecs/libenigma_codecs.a ../lib/dvb/libenigma_dvb.a ../lib/dvb/lowlevel/libenigma_dvb_lowlevel.a ../lib/gui/libenigma_gui.a ../lib/gdi/libenigma_gdi.a ../lib/socket/libenigma_socket.a ../lib/system/libenigma_system.a ../lib/picviewer/libenigma_picviewer.a ../lib/movieplayer/libenigma_movieplayer.a -Wl,--no-whole-archive -L/home/lior/dreambox/root/cdkroot/lib -lfreetype -L/home/lior/dreambox/root/cdkroot/lib -lid3tag -lz -L/home/lior/dreambox/root/cdkroot/lib -lmad -lm -L/home/lior/dreambox/root/cdkroot/lib -lmd5sum -L/home/lior/dreambox/root/cdkroot/lib -lpng12 -lz -lm -L/home/lior/dreambox/root/cdkroot/lib -lsigc-1.2 -L/home/lior/dreambox/root/cdkroot/lib -lxmltree -L/home/lior/dreambox/root/cdkroot/lib -ltuxtxt -ldl -lpthread -lcrypt -lresolv -ljpeg -lungif
lior@BeerSheva ~/dreambox/apps/tuxbox/enigma/src $ powerpc-tuxbox-linux-gnu-readelf -d ./enigma | grep NEEDED | wc -l
17
bei manchen binaries ist es sogar von 63 auf 5 reduziert! natürlich ist ne applikation schneller und bedarft weniger speicher, die beim ausführen nur 5 anstatt 63 libraries zu öffnen versucht!

ansonsten kannst du gerne nur bei -Wl,-O1 bleiben. ist absolut harmlos. aber -Wl,--as-needed muss auch harmlos sein, denn bei KDE ist es seit 3.4 ein default flag.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.

Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
Lior
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 17. Oktober 2002, 13:42

Beitrag von Lior »

Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.
Mach das nicht! Deine binutils-2.15.x ist buggy. Du brauchst wenigstens binutils-2.16.91.0.5 dafür.
Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
Ist in der letzten Version (2.16.91.0.7) gefixt:
http://sources.redhat.com/ml/libc-alpha ... 00134.html
Changes from binutils 2.16.91.0.6:

1. Update from binutils 2006 0317.
2. Support Intel Merom New Instructions in assembler/disassembler.
3. Support Intel new instructions in Montecito.
4. Fix linker "--as-needed" (PR 2434).
5. Fix linker "-s" regression (PR 2462).
6. Fix REP prefix for string instructions in x86 disassembler
(PR 2428).
7. Fix the weak undefined symbols in PIE (PR 2218).
8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
9. Improve ELF linker error message (PR 2322).
10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
11. Handle mismatched symbol types for executables (PR 2404).
12. Avoid a linker linkonce regression (PR 2342).
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Lior hat geschrieben:
Das "-Wl,-O1" scheint keine negative Nebenwirkungen zu haben, und ich habe es in newmake übernommen.
Mach das nicht! Deine binutils-2.15.x ist buggy. Du brauchst wenigstens binutils-2.16.91.0.5 dafür.
Kannst du es weiter erläutern? "Alle" software ist "buggy". Ich habe keine Probleme feststellen können -- was natürlich nicht bedeutet das es keine gibt.
Dagegen führt --as-needed zu fehlerhaftive Ergebnisse: Falls ein shared library Symbole von einem anderen shared Library benötigt, werden diese "sekundäre Abhängigheiten" durch --as-needed verworfen. Tuxbox baut nicht mit --as-needed. Letztendlich ist es die Aufgabe des Makefileauthors die notwendige Libraries aufzulisten.
Ist in der letzten Version (2.16.91.0.7) gefixt:
http://sources.redhat.com/ml/libc-alpha ... 00134.html
Changes from binutils 2.16.91.0.6:

1. Update from binutils 2006 0317.
2. Support Intel Merom New Instructions in assembler/disassembler.
3. Support Intel new instructions in Montecito.
4. Fix linker "--as-needed" (PR 2434).
5. Fix linker "-s" regression (PR 2462).
6. Fix REP prefix for string instructions in x86 disassembler
(PR 2428).
7. Fix the weak undefined symbols in PIE (PR 2218).
8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
9. Improve ELF linker error message (PR 2322).
10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
11. Handle mismatched symbol types for executables (PR 2404).
12. Avoid a linker linkonce regression (PR 2342).
PR2434 scheint ein ganz anderes Problem zu sein.
Lior
Interessierter
Interessierter
Beiträge: 69
Registriert: Donnerstag 17. Oktober 2002, 13:42

Beitrag von Lior »

PR2434 scheint ein ganz anderes Problem zu sein.
Wenn du hier http://sourceware.org/ml/binutils/2006-03/msg00340.html und hier http://sourceware.org/ml/binutils/2006-03/msg00344.html guckst, siehst du dass es doch gefixt ist.
Not reporting the undefined symbol at link time was simply a bug.
ld reports now undefined symbols at link time.

das heisst, Tuxbox baute nicht mit --as-needed. besser gesagt, es baute, aber es gab unresolved symbols at runtime. ich denke es ist jetzt eine gute gelegenheit, das ganze mit --as-needed zu builden und Makefiles, configure scripts zu fixen. das erwarte ich natürlich nicht von dir, du hast bestimmt genug zu tun. ich werde es ma versuchen, wenn ich mehr zeit habe.

Danke für deine review.