From: Rob Landley <rob@landley.net>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] How do I build mips64-linux-user?
Date: Fri, 26 Mar 2010 18:58:53 -0500 [thread overview]
Message-ID: <201003261858.55017.rob@landley.net> (raw)
In-Reply-To: <201003251904.47784.rob@landley.net>
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
prev parent reply other threads:[~2010-03-26 23:59 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
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 message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201003261858.55017.rob@landley.net \
--to=rob@landley.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.