[linux-l] Frage an Compilerspezialisten
Juergen Rienaecker
j.rienaecker at arcor.de
So Dez 5 15:01:12 CET 2004
Was bedeutet error: PIC register `ebx' clobbered in `asm'
Ich habe mich für den gcc-3.4.3 begeistert und habe damit auf meiner
Suse-9.1 schon etliches übersetzt (mozilla-1.6-72, gimp usw.)
Es lohnt sich. Es läuft deutlich weniger behäbig.
Ich habe es gelernt rpm-Pakete, zu bauen und hatte nun den Ehrgeiz,
mit den Quellpacketen Gnome-2.6.1 (linuxuser 07/2004)
meine Suse-9.1 auf gnome-2.6.1 aufzurüsten.
Mit den üblichen Problemen, die der gcc-3.4.3 mit schlampig
geschriebenen Quellen hat, komme ich klar.
Aber was bedeutet Folgendes:
Bei rpmbuild -bb SPECS/gstreamer.spec
"gstcpu.c: In function `gst_cpuid_i386':
gstcpu.c:72: error: PIC register `ebx' clobbered in `asm'
make[4]: *** [libgstreamer_0.8_la-gstcpu.lo] Error 1 "
in gstreamer-0.8.1/gst/gstcpu.c steht
#ifdef HAVE_CPU_I386
static void
gst_cpuid_i386 (int x, unsigned long *eax, unsigned long *ebx,
unsigned long *ecx, unsigned long *edx)
{
unsigned long regs[4];
asm (
/* GCC-3.2 (and possibly others) don't clobber ebx properly,
* so we save/restore it directly. */
" pushl %%ebx\n" " cpuid\n" " movl %%eax, %0\n" " movl %%ebx, %1\n"
" movl %%ecx, %2\n" " movl %%edx, %3\n" " popl %%ebx\n":"=o"
(regs[0]),
"=o" (regs[1]),
"=o" (regs[2]), "=o" (regs[3])
: "a" (x)
: "ebx", "ecx", "edx");
*eax = regs[0];
*ebx = regs[1];
*ecx = regs[2];
*edx = regs[3];
}
(ich habe die lange Codezeile umbrechen müssen)
Damit kommt der Compiler so nicht klar.
Was bedeutet das ?
Zu C habe ich immer meinen Kernighan/Ritchie konsultiert
zu C++ habe ich auch ein "schlaues" Buch,
aber bei Assembler muß ich passen.
Was heißt don't clobber ebx properly
Warum wird das Register ebx "verprügelt" ?
Kann mir da jemand weiterhelfen ?
Meine CPU ist ein Athlon (1 GHz).
Ich wär das sehr dankbar.
Denn ohne gstreamer geht es nicht weiter und muß man
die Suse-9.2 nur wegen gnome-2.6 kaufen, wenn man die
Quellen dazu von der Heft-CD des linux-users hat und die
Suse-9.2 auch noch nichts von dem gcc-3.4 wissen will.
Es grüßt Jürgen Rienäcker
---
Ein Rentner, der als Hobby Linux hat aber sich nicht mit
KDE anfreunden kann, den fvwm2 benutzt und zusehends
an Gnome gefallen findet.
Mehr Informationen über die Mailingliste linux-l