GNOME Bugzilla – Bug 100184
Doesn't like x86_64
Last modified: 2009-08-15 18:40:50 UTC
gstreamer is unhappy about compiling on x86_64. After hacking configure to pretend it's an x86, I get these errors: gstcpuid_i386.s: Assembler messages: gstcpuid_i386.s:5: Error: suffix or operands invalid for `push' gstcpuid_i386.s:7: Error: suffix or operands invalid for `push' gstcpuid_i386.s:8: Error: suffix or operands invalid for `push' gstcpuid_i386.s:9: Error: suffix or operands invalid for `push' gstcpuid_i386.s:10: Error: suffix or operands invalid for `push' gstcpuid_i386.s:11: Error: `8(%ebp)' is not a valid 64 bit base/index expressiongstcpuid_i386.s:13: Error: `12(%ebp)' is not a valid 64 bit base/index expression gstcpuid_i386.s:16: Error: `(%edi)' is not a valid 64 bit base/index expression gstcpuid_i386.s:17: Error: `16(%ebp)' is not a valid 64 bit base/index expression gstcpuid_i386.s:20: Error: `(%edi)' is not a valid 64 bit base/index expression gstcpuid_i386.s:21: Error: `20(%ebp)' is not a valid 64 bit base/index expression gstcpuid_i386.s:24: Error: `(%edi)' is not a valid 64 bit base/index expression gstcpuid_i386.s:25: Error: `24(%ebp)' is not a valid 64 bit base/index expression gstcpuid_i386.s:28: Error: `(%edi)' is not a valid 64 bit base/index expression gstcpuid_i386.s:29: Error: suffix or operands invalid for `pop' gstcpuid_i386.s:30: Error: suffix or operands invalid for `pop' gstcpuid_i386.s:31: Error: suffix or operands invalid for `pop' gstcpuid_i386.s:32: Error: suffix or operands invalid for `pop' gstcpuid_i386.s:34: Error: suffix or operands invalid for `pop' Peanut gallery says: <foo> drop the asm stuff, use setcontext or pthreads <arjan> hp: if you know x86 asm it's the same <arjan> just the 64 bit registers are called rax etc As a separate bug, I think configure should fail if it can't identify the arch.
Also IA-64 apparently, and perhaps others.
<jakub> hp: there are some arches where glibc still doesn't support makecontext, but most of them do, including i386, ia64, etc.
I added makecontext support in gst/cothreads.c, which should allow us to do cothreads on any architecture that has a decent makecontext() implementation. However, I might add, this has nothing to do with the actual compile failure listed.
I see, the failure there is on other x86 code after lying and claiming to be an x86. Old cothreads.c would still fail though in that case, if we got to it, I assume. Looking at the code in CVS, it looks like the #error in gstarch.h will still be hit, even if HAVE_MAKECONTEXT.
I fixed gstarch.h for the case where HAVE_MAKECONTEXT is true.
Havoc, can you verify if it is ok now or not ? Thanks.
cc'ing people who will know better than me
> gstcpuid_i386.s:5: Error: suffix or operands invalid for `push' Nothing was changed in gstarch_x86.s, so I highly doubt this is fixed. Also, we need to detect x86-64. Using makecontext() is a separate issue that is fixed. If that is broken on x86-64, it's not a gstreamer bug. :)
Ok, I finally added a CPU check for x86_64. As long as config.guess is updated by a recent version of automake that supports x86_64, everything _should_ be fine now, and gstreamer won't recognize the system as an i386. Please try compiling either HEAD or BRANCH-GSTREAMER-0_6 CVS.
havoc, ping
reping
I'll take a look when I next rebuild this.
I'm going to assume this is fixed, because by now, someone else would have complained about it. Marking as NEEDINFO.
I'd like to get this resolved. Jonathan, any news ?
jonathan, ping, or close
looks like its' building. I'll close