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 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).