* [Qemu-devel] How do I build mips64-linux-user?
@ 2010-03-26 0:04 Rob Landley
2010-03-26 0:16 ` Nathan Froyd
2010-03-26 23:58 ` Rob Landley
0 siblings, 2 replies; 3+ messages in thread
From: Rob Landley @ 2010-03-26 0:04 UTC (permalink / raw)
To: qemu-devel
If I do the standard "./configure --disable-werror", it builds qemu-mips and
qemu-system-mips64, but no qemu-mips64. If I tell it "./configure --disable-
werror --target-list-mips64-linux-user", configure completes but the build
breaks because it can't set up the dependencies for that directory.
How do I beat a qemu-mips64 out of the qemu source? Apparently, gentoo
manages to build one, but I'm not sure how....
Rob
--
Latency is more important than throughput. It's that simple. - Linus Torvalds
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] How do I build mips64-linux-user?
2010-03-26 0:04 [Qemu-devel] How do I build mips64-linux-user? Rob Landley
@ 2010-03-26 0:16 ` Nathan Froyd
2010-03-26 23:58 ` Rob Landley
1 sibling, 0 replies; 3+ messages in thread
From: Nathan Froyd @ 2010-03-26 0:16 UTC (permalink / raw)
To: Rob Landley; +Cc: qemu-devel
On Thu, Mar 25, 2010 at 07:04:46PM -0500, Rob Landley wrote:
> If I do the standard "./configure --disable-werror", it builds qemu-mips and
> qemu-system-mips64, but no qemu-mips64. If I tell it "./configure --disable-
> werror --target-list-mips64-linux-user", configure completes but the build
> breaks because it can't set up the dependencies for that directory.
>
> How do I beat a qemu-mips64 out of the qemu source? Apparently, gentoo
> manages to build one, but I'm not sure how....
qemu-mips64 isn't supported because N32 and N64 system call support
hasn't been written. You might look at gentoo's source packages to how
they make it build. If they've written the syscalls support, perhaps
you could encourage them to submit it upstream.
-Nathan
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] How do I build mips64-linux-user?
2010-03-26 0:04 [Qemu-devel] How do I build mips64-linux-user? Rob Landley
2010-03-26 0:16 ` Nathan Froyd
@ 2010-03-26 23:58 ` Rob Landley
1 sibling, 0 replies; 3+ messages in thread
From: Rob Landley @ 2010-03-26 23:58 UTC (permalink / raw)
To: qemu-devel
On Thursday 25 March 2010 19:04:46 Rob Landley wrote:
> If I do the standard "./configure --disable-werror", it builds qemu-mips
> and qemu-system-mips64, but no qemu-mips64. If I tell it "./configure
> --disable- werror --target-list-mips64-linux-user", configure completes but
> the build breaks because it can't set up the dependencies for that
> directory.
>
> How do I beat a qemu-mips64 out of the qemu source? Apparently, gentoo
> manages to build one, but I'm not sure how....
Answer:
Gentoo's qemu ebuild file is here:
http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-
emulation/qemu/qemu-0.11.1.ebuild?rev=1.2&view=log
Which has these bits:
IUSE_SOFTMMU_TARGETS="${COMMON_TARGETS} ppcemb"
IUSE_USER_TARGETS="${COMMON_TARGETS} alpha armeb ppc64abi32 sparc64
sparc32plus"
src_prepare() {
# avoid fdt till an updated release appears
sed -i -e 's:fdt="yes":fdt="no":' configure
# prevent docs to get automatically installed
sed -i '/$(DESTDIR)$(docdir)/d' Makefile
# Alter target makefiles to accept CFLAGS set via flag-o
sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \
Makefile Makefile.target tests/Makefile
[[ -x /sbin/paxctl ]] && \
sed -i 's/^VL_LDFLAGS=$/VL_LDFLAGS=-Wl,-z,execheap/' \
Makefile.target
# Append CFLAGS while linking
sed -i 's/$(LDFLAGS)/$(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS)/' rules.mak
epatch "${FILESDIR}/qemu-0.11.0-mips64-user-fix.patch"
}
Most of which isn't very interesting. Presumably they're getting mips64 from
"COMMON_TARGETS", which looks like some kind of ebuild standard plumbing.
Gentoo also has a patch directory for qemu:
http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-emulation/qemu/files/
And their mips64 patch is here:
http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-
emulation/qemu/files/qemu-0.11.0-mips64-user-fix.patch?rev=1.1&view=markup
Which isn't much:
--- qemu-0.11.0.orig/linux-user/main.c 2009-10-23 02:19:57.000000000 +0200
+++ qemu-0.11.0/linux-user/main.c 2009-10-23 02:47:09.000000000 +0200
@@ -1469,6 +1469,8 @@
#ifdef TARGET_MIPS
+#define TARGET_QEMU_ESIGRETURN 255
+
#define MIPS_SYS(name, args) args,
static const uint8_t mips_syscall_args[] = {
And that's it. Ok, let's try that out...
./configure --target-list=mips64-linux-user --disable-werror
make -j 2
And it died:
> GEN config-host.h
> Makefile:7: config-devices.mak: No such file or directory
> make[1]: *** No rule to make target `config-devices.mak'. Stop.
> make: *** [subdir-mips64-linux-user] Error 2
But since the 32 bit version of that file is just a comment, I'm pretty happy
doing this:
touch mips64-linux-user/config-devices.mak
(Dunno where the makefile thinks it should get this from...)
So with that, it compiles, with this warning:
CC mips64-linux-user/signal.o
/home/landley/qemu/git/linux-user/signal.c:2262:3: warning: #warning signal
handling not implemented
But it's not complaining about system calls. And it gives me a qemu-mips64.
Right.
Which segfaults immediately running a statically linked "hello world".
Running a dynamically linked version it does indeed complain that /lib/ld-
uClibc.so.0 isn't there (correct), but the statically linked one segfaults
with no output.
Huh. Ok, let's scp that to gentoo and try it there...
qemu-mips64 ./mips64-hello
qemu: uncaught target signal 4 (Illegal instruction) - exiting
And running that same hello world binary under system-image-mips64... Works
fine.
Right, Gentoo includes a qemu-mips64 that _doesn't_work_. (At least not for
me.) They fixed the build break, but that's it. False alarm, my bad...
Rob
--
Latency is more important than throughput. It's that simple. - Linus Torvalds
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-03-26 23:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-26 0:04 [Qemu-devel] How do I build mips64-linux-user? Rob Landley
2010-03-26 0:16 ` Nathan Froyd
2010-03-26 23:58 ` Rob Landley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).