uclibc patch
-
- Einsteiger
- Beiträge: 238
- Registriert: Sonntag 14. November 2004, 23:44
Re: uclibc patch
Okay,
uclibc2.diff und uclibc3.diff getestet. Baut durch. Aber das Problem mit libdl.so.0 besteht noch *heul* *jammer*
uclibc2.diff und uclibc3.diff getestet. Baut durch. Aber das Problem mit libdl.so.0 besteht noch *heul* *jammer*
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Darum werde ich mich noch kümmernamiga23 hat geschrieben:Aber das Problem mit libdl.so.0 besteht noch *heul* *jammer*
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
libdl.so sollte nun im Flashimage funktionieren.rhabarber1848 hat geschrieben:Eigentlicher uClibc-Patch, uclibc2.diff muss vorher eingespielt werden: EDIT: Patch ist im CVS
Zuletzt geändert von rhabarber1848 am Mittwoch 3. Dezember 2008, 14:02, insgesamt 1-mal geändert.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Patch aktualisiert: automount, uClibc und -fPIE mögen einander nicht.rhabarber1848 hat geschrieben:Eigentlicher uClibc-Patch, uclibc2.diff muss vorher eingespielt werden: EDIT: Patch ist im CVS
Bitte mit glibc gegentesten, ob automount dort noch funktioniert.
Zuletzt geändert von rhabarber1848 am Mittwoch 3. Dezember 2008, 14:02, insgesamt 1-mal geändert.
-
- Developer
- Beiträge: 1475
- Registriert: Dienstag 4. Februar 2003, 22:02
Re: uclibc patch
Zum Problem mit libdl: Wo wird noch libdl benutzt? libdl wurde in den frühe 90 Jahren(?) geschrieben, und seitdem hat alle "Unix-ähnliche" Systeme diese Funktioinalität in dlopen(). Irgendwo (kann den Link nicht mehr finden) habe ich gelesen, dass die offizielle Standpunkt von GNU/FSF aus diesem Grund obsolet ist.
Wäre es nicht besser, anstatt diese Altlast zu entsorgen?
Ich habe den Thread nicht verfolgt; liege ich daneben lasse ich mich gerne belehren.
Wäre es nicht besser, anstatt diese Altlast zu entsorgen?
Ich habe den Thread nicht verfolgt; liege ich daneben lasse ich mich gerne belehren.
-
- Einsteiger
- Beiträge: 238
- Registriert: Sonntag 14. November 2004, 23:44
Re: uclibc patch
Moin,
neutrino tut wieder, also libdl ist gefixed. Danke rhabarber1848
Allerdings ist mir jetzt aufgefallen, das links im Grafikmodus nicht mehr geht. Hab nochmal ältere Images probiert, geht schon länger nicht mehr, also auch nicht mit uclibc28. Leider spuckt es keine Fehlermeldung aus sondern beendet sich einfach wieder. Scheint was mit libdirectfb zu tun haben. Bin grad' am rumprobieren...
neutrino tut wieder, also libdl ist gefixed. Danke rhabarber1848
Allerdings ist mir jetzt aufgefallen, das links im Grafikmodus nicht mehr geht. Hab nochmal ältere Images probiert, geht schon länger nicht mehr, also auch nicht mit uclibc28. Leider spuckt es keine Fehlermeldung aus sondern beendet sich einfach wieder. Scheint was mit libdirectfb zu tun haben. Bin grad' am rumprobieren...
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
uClibc braucht das scheinbar, warum? Das weiß ich nicht.Barf hat geschrieben:Zum Problem mit libdl: Wo wird noch libdl benutzt?
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
uclibc2.diff ist im CVS, danke seife!
Es wird jetzt nur noch uclibc3.diff benötigt.
Es wird jetzt nur noch uclibc3.diff benötigt.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Funktioniert hier einwandfrei:amiga23 hat geschrieben:Allerdings ist mir jetzt aufgefallen, das links im Grafikmodus nicht mehr geht.
und auf dem Fernseher ist die Wikipedia-Seite zu sehen.# links -g de.wikipedia.org
=======================| DirectFB 1.0.0 |=======================
(c) 2001-2007 The DirectFB Organization (directfb.org)
(c) 2000-2004 Convergence (integrated media) GmbH
------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2008-11-22 14:19)
(*) Direct/Memcpy: Using ppcasm_memcpy()
(*) Direct/Thread: Running 'VT Switcher' (CRITICAL, 183)...
(*) Direct/Thread: Running 'Linux Input' (INPUT, 184)...
(*) DirectFB/Input: DBOX-2 FP IR 0.1 (directfb.org)
(!) Direct/Modules: Could not open module directory `/lib/directfb-1.0-0/gfxdrivers'!
--> No such file or directory
(*) DirectFB/Graphics: Generic Software Rasterizer 0.6 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
Ich habe allerdings yadd-none gestartet, es war also noch keine Grafikapplikation
vor dem Start von Links aktiv.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Patch-Update: EDIT: Patch ist im CVS
- Enigma configure sucht nur dann nach gettext, wenn libc dieses nicht beinhaltet. Glibc hat gettext-Support, uClibc nicht.
- GCC wird mit Patches/gcc-uclibc.diff nur im uClibc-Modus gepatcht
- neue Datei hostapps/mklibs/mklibs_uclibc.py
Anstatt mklibs.py zu patchen, wird nun eine gesonderte Version für uClibc mitgeliefert.
Beim CVS-commit ist darauf zu achten, dass die Datei im CVS ausführbar ist.
Damit wird einerseits Problemen im glibc-Modus vorgebeugt, andererseits bin ich mit
den mklibs-Patches noch unzufrieden, da ich nicht genau verstehe, warum es so viele
Probleme mit mklibs@uClibc gibt. Eigentlich müssten die uClibc-libs sich auch verkleinern
lassen, allerdings zerstört dies z.Zt. die Dateien. Zaphot, der sich als erster mit uClibc
hier beschäftigte, war mit diesem Problem allerdings auch schon konfrontiert...
Mein Vorschlag: Der Patch ist jetzt CVS-ready, stört den glibc-Betrieb nicht und erzeugt
voll funktionsfähige Neutrino-Yadd und Neutrino-Flashimages. Enigma-Yadd/Flash funktioniert
auch, mit Ausnahme der beschriebenen Probleme beim ersten Start und beim Runterfahren
der Box. Diese Bugs sollten IMHO das Einchecken des uClibc-Patches nicht behindern,
sondern eher als Ansporn für pthread-Experten dienen
In einem weiteren Schritt werde ich mir mklibs_uclibc.py genauer anschauen und versuchen,
wieder eine gemeinsame Version für glibc und uClibc zu liefern. Auch dieser Zustand spricht
IMHO nicht gegen den CVS-commit des aktuellen Patches.
- Enigma configure sucht nur dann nach gettext, wenn libc dieses nicht beinhaltet. Glibc hat gettext-Support, uClibc nicht.
- GCC wird mit Patches/gcc-uclibc.diff nur im uClibc-Modus gepatcht
- neue Datei hostapps/mklibs/mklibs_uclibc.py
Anstatt mklibs.py zu patchen, wird nun eine gesonderte Version für uClibc mitgeliefert.
Beim CVS-commit ist darauf zu achten, dass die Datei im CVS ausführbar ist.
Damit wird einerseits Problemen im glibc-Modus vorgebeugt, andererseits bin ich mit
den mklibs-Patches noch unzufrieden, da ich nicht genau verstehe, warum es so viele
Probleme mit mklibs@uClibc gibt. Eigentlich müssten die uClibc-libs sich auch verkleinern
lassen, allerdings zerstört dies z.Zt. die Dateien. Zaphot, der sich als erster mit uClibc
hier beschäftigte, war mit diesem Problem allerdings auch schon konfrontiert...
Mein Vorschlag: Der Patch ist jetzt CVS-ready, stört den glibc-Betrieb nicht und erzeugt
voll funktionsfähige Neutrino-Yadd und Neutrino-Flashimages. Enigma-Yadd/Flash funktioniert
auch, mit Ausnahme der beschriebenen Probleme beim ersten Start und beim Runterfahren
der Box. Diese Bugs sollten IMHO das Einchecken des uClibc-Patches nicht behindern,
sondern eher als Ansporn für pthread-Experten dienen
In einem weiteren Schritt werde ich mir mklibs_uclibc.py genauer anschauen und versuchen,
wieder eine gemeinsame Version für glibc und uClibc zu liefern. Auch dieser Zustand spricht
IMHO nicht gegen den CVS-commit des aktuellen Patches.
Zuletzt geändert von rhabarber1848 am Mittwoch 3. Dezember 2008, 14:02, insgesamt 1-mal geändert.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Das Problem ist in der neuen Patch-Version durch Code in cdk/configure.ac behoben.rhabarber1848 hat geschrieben:Patch-Update: EDIT: Patch ist im CVS
- neue Datei hostapps/mklibs/mklibs_uclibc.py
[...]
Beim CVS-commit ist darauf zu achten, dass die Datei im CVS ausführbar ist.
Zuletzt geändert von rhabarber1848 am Mittwoch 3. Dezember 2008, 14:03, insgesamt 2-mal geändert.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Die aktuelle Version des Patches behebt das Problem: EDIT: Patch ist im CVSrhabarber1848 hat geschrieben:[1] sectionsd, zapit u.a. erzeugen einen Segfault, wenn deren Konfigurationsdateien nicht existieren,
touch behebt das Problem, es tritt nicht im Yadd auf...
Verantwortlich war die von mklibs_uclibc.py zerstörte Datei libtuxbox-configfile.so.0,
die nun als 7kb größeres Original ins Flash kopiert wird.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Der uClibc-Patch ist nun vollständig im CVS Viel Spass damit.
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Re: uclibc patch
mit
kommt man wenigstens durchs configure durch.
den header braucht xfsprogs wohl nicht.
bei der librt bin ich mir nicht so sicher,
beim Bauen von xfs_repair gibts folgenden Fehler.
Vielleicht muß man auch im uClibc noch was (Highres timer?) nachaktivieren
Code: Alles auswählen
ac_cv_header_aio_h=yes \
ac_cv_lib_rt_lio_listio=yes \
den header braucht xfsprogs wohl nicht.
bei der librt bin ich mir nicht so sicher,
beim Bauen von xfs_repair gibts folgenden Fehler.
Code: Alles auswählen
/home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:186: undefined refere to `timer_create'
/home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:189: undefined refere to `timer_settime'
/home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:277: undefined refere to `timer_delete'
collect2: ld returned 1 exit status
make[2]: *** [xfs_repair] Fehler 1
-
- Contributor
- Beiträge: 1623
- Registriert: Donnerstag 10. Januar 2002, 20:03
Re: uclibc patch
Jo, da dürfte die entsprechende Funktionalität in uclibc nicht aktiviert sein.
An den entsprechenden Funktionen ist nämlich nicht besonders viel gearbeitet worden.
http://uclibc.org/cgi-bin/viewcvs.cgi/t ... 4&view=log
An den entsprechenden Funktionen ist nämlich nicht besonders viel gearbeitet worden.
http://uclibc.org/cgi-bin/viewcvs.cgi/t ... 4&view=log
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: uclibc patch
Code: Alles auswählen
config UCLIBC_HAS_REALTIME
bool "Realtime-related family of SUSv functions"
default y
help
These functions are part of the Timers option and need not
be available on all implementations.
Includes AIO, message-queue, scheduler, semaphore functions:
Schaut doch mal im config.log, warum die header nicht gefunden werden, evtl. wird ja nur an der falschen Stelle gesucht oder so...
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Soweit bin ich mittlerweile auch, uClibc dürfte diese Funktionen haben,Houdini hat geschrieben:Code: Alles auswählen
/home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:186: undefined refere to `timer_create' /home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:189: undefined refere to `timer_settime' /home/harald/tuxbox-cvs/head-uclibc-new/cdk/xfsprogs-2.9.4/repair/progress.c:277: undefined refere to `timer_delete' collect2: ld returned 1 exit status make[2]: *** [xfs_repair] Fehler 1
in uClibc-0.9.30/librt/timer*.c, dort ist z.B. zu finden:
Code: Alles auswählen
#ifdef __NR_timer_create
linux-2.4.36.6/include/asm-ppc/unistd.h
Code: Alles auswählen
#if 0
[...]
#define __NR_timer_create 240
#define __NR_timer_settime 241
#define __NR_timer_gettime 242
#define __NR_timer_getoverrun 243
#define __NR_timer_delete 244
[...]
#endif
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
uClibc, Kernel 2.6 und xfsprogs kompilieren durch.
Was mit Kernel 2.4 ist, kann ich leider nicht sagen.
In uClibc müssen folgende Optionen zusätzlich aktiviert werden:
EDIT: diff entfernt
PS: Hier der Patch dazu: EDIT: Patch ist jetzt hier integriert:
http://forum.tuxbox-cvs.sourceforge.net ... 73#p362773
PPS: Ob xfsprogs überhaupt funktioniert, kann ich mangels IDE-Interface nicht testen.
Was mit Kernel 2.4 ist, kann ich leider nicht sagen.
In uClibc müssen folgende Optionen zusätzlich aktiviert werden:
EDIT: diff entfernt
PS: Hier der Patch dazu: EDIT: Patch ist jetzt hier integriert:
http://forum.tuxbox-cvs.sourceforge.net ... 73#p362773
PPS: Ob xfsprogs überhaupt funktioniert, kann ich mangels IDE-Interface nicht testen.
Zuletzt geändert von rhabarber1848 am Freitag 12. Dezember 2008, 23:03, insgesamt 1-mal geändert.
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Re: uclibc patch
glibc hat eine eigene user space implementierung falls der system call nicht existiert, deswegen geht es mit glibc
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Das zu portieren, dürfte dann nicht schwierig sein, oder? Freiwillige vor!Houdini hat geschrieben:glibc hat eine eigene user space implementierung falls der system call nicht existiert, deswegen geht es mit glibc
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
uClibc hat folgende Option, die z.Zt. aktiviert ist:
http://sources.busybox.net/index.py/tru ... ortby=file
legacy-Funktionen durch aktuellen Code ersetzen.
Hier ein Beispiel (bzero/memset): http://const.tltsu.ru/susv3/functions/bzero.html
http://mailman.uclinux.org/pipermail/uc ... 44788.html
http://sources.busybox.net/index.py/tru ... ortby=file
http://osdir.com/ml/lib.uclibc.buildroo ... 00008.htmlconfig UCLIBC_SUSV3_LEGACY
bool "Enable SuSv3 LEGACY functions"
Enable this option if you want to have SuSv3 LEGACY functions
in the library, else they are replaced by SuSv3 proposed macros.
Currently applies to:
bcmp, bcopy, bzero, index, rindex, ftime,
bsd_signal, (ecvt), (fcvt), gcvt, (getcontext),
(getwd), (makecontext),
mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr),
scalb, (setcontext), (swapcontext), ualarm, usleep,
wcswcs.
WARNING! ABI incompatibility.
Deshalb habe ich mal drangesetzt und Patches geschrieben, welche dieYou don't want UCLIBC_SUSV3_LEGACY_MACROS nor UCLIBC_SUSV3_LEGACY, as a
general rule of thumb.
legacy-Funktionen durch aktuellen Code ersetzen.
Hier ein Beispiel (bzero/memset): http://const.tltsu.ru/susv3/functions/bzero.html
In uClinux wurden bereits solche Patches eingepflegt:The memset() function is preferred over this function.
For maximum portability, it is recommended to replace the function call to bzero() as follows:
#define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
http://mailman.uclinux.org/pipermail/uc ... 44788.html
Hier der Patch für Tuxbox: EDIT: Patch ist im CVSbcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
They are replaced as proposed by SuSv3.Code: Alles auswählen
- bzero(&addr, sizeof(addr)); + memset(&addr, 0, sizeof(addr));
Zuletzt geändert von rhabarber1848 am Mittwoch 11. März 2009, 21:44, insgesamt 1-mal geändert.
-
- Einsteiger
- Beiträge: 238
- Registriert: Sonntag 14. November 2004, 23:44
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
@Leute, die C können:
In uClibc 0.9.30 gibt es folgenden Code:
Diese Zeile ist im SVN HEAD entfernt worden.
Dies hat Auswirkungen auf cdk/Patches/gcc-uclibc.diff
Ist diese Zeile ein adäquater Ersatz?
In uClibc 0.9.30 gibt es folgenden Code:
Code: Alles auswählen
#define _ISbit(bit) (1 << (bit))
Dies hat Auswirkungen auf cdk/Patches/gcc-uclibc.diff
Code: Alles auswählen
_M_bit[__k] = static_cast<mask>(_ISbit(__k));
Code: Alles auswählen
_M_bit[__k] = static_cast<mask>(1 << __k);
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: uclibc patch
Ja, sollte gehen, da ja #define vom Präprozessor ausgewertet wird, und der ja nur Textersetzung macht.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: uclibc patch
Mit der aktuellen uClibc-Version ist dieser Patch in Ordnung, allerdingsrhabarber1848 hat geschrieben:Hier der Patch für Tuxbox: EDIT: Patch ist im CVS
möchte ich nicht, dass er im Moment ins CVS kommt. Im uClibc SVN
wurde u.a. usleep() in die Option UCLIBC_SUSV3_LEGACY aufgenommen,
leider steckt diese Funktion in allerlei Programmen (u.a. busybox, kbd,
zapit) drin und der Ersatz, afaics mit nanosleep(), scheint nicht ganz
trivial zu sein.
Zuletzt geändert von rhabarber1848 am Mittwoch 11. März 2009, 21:44, insgesamt 1-mal geändert.