qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).