Date: Sat, 5 Apr 2014 20:59:06 -0600 From: Warner Losh <imp@bsdimp.com> To: sbruno@freebsd.org Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: qemu-mips illegal instruction Message-ID: <C9D8D10B-4CC5-476D-9009-73E52B221962@gmail.com> In-Reply-To: <1396651226.1475.41.camel@powernoodle.corp.yahoo.com> References: <1395337352.7757.11.camel@powernoodle.corp.yahoo.com> <1395599440.67694.13.camel@powernoodle.corp.yahoo.com> <1396029630.1466.21.camel@powernoodle.corp.yahoo.com> <1396635066.1475.25.camel@powernoodle.corp.yahoo.com> <1396651226.1475.41.camel@powernoodle.corp.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Apr 4, 2014, at 4:40 PM, Sean Bruno <sbruno@ignoranthack.me> wrote: > On Fri, 2014-04-04 at 11:11 -0700, Sean Bruno wrote: >> On Fri, 2014-03-28 at 11:00 -0700, Sean Bruno wrote: >>>> This problem seems to be caused by a endian issue in qemu-mips. Ed >>>> Maste found the culprit and I've applied it here: >>>> >>>> https://github.com/seanbruno/qemu/commit/05ee8495804599b52a88eb36b13ea9c06b3207cd >>>> >>>> Which is my combined tracking branch for qemu and sson's bsd-user >>>> branch. >>>> >>>> I'm currently tracking an "illegal instruction" on exit issue that seems >>>> to happen on application exit causing a crash. >>>> >>>> sean >>> >>> >>> I've been tracking qemu upstream with sson's patches and massaging >>> things here and there with the bsd-user mode qemu. >>> >>> https://github.com/seanbruno/qemu/tree/bsd-user >>> >>> That in combination with sson's kernelmod/userland tool allows me to >>> "chroot" into a mips environment suitable for building packages. >>> http://people.freebsd.org/~sson/imgact_binmisc/imgact_binmisc.diff >>> >>> Currently, if I explicitly pass a shell into the chroot command, I have >>> no issues and all is well. e.g. chroot /mipsbuild /bin/sh >>> >>> If I do not explicitly pass a shell, I get an illegal instruction core >>> dump from qemu-mips on exit from any command I run in the chroot: >>> >>> chroot /mipsbuild >>> uname -a >>> <uname output> >>> (Illegal Instruction)[coredump] >>> >>> This breaks poudriere right now. >>> >>> >>> More or less this is my recipe: >>> - built a mips32 world for "chroot" purposes: >>> - use sson's binmisc ELF interceptor thing: >>> - run binmiscctl: >>> binmiscctl add mips32 --interpreter "/bin/qemu-mips" --magic "\x7f\x45 >>> \x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00 >>> \x08" --mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff >>> \xff\xff\xff\xfe\xff\xff" --size 20 --set-enabled >>> >>> >>> - chroot /mipsbuild >>> - uname -a (Illegal Instruction and coredump ON EXIT) >>> >>> - chroot /mipsbuild /bin/sh >>> - uname -a (works everytime) >>> >>> >>> sean >> >> I've narrowed this down with some help from #bsdmips: >> >> env SHELL=/bin/sh chroot /mipsbuild --> no issues running commands >> >> env SHELL=/bin/csh chroot /mipsbuild >> env SHELL=/bin/tcsh chroot /mipsbuild --> both of these cause illegal >> instructions in qemu-mips >> >> Juregen came up with a patch that makes the amd64 version of qemu-mips >> work, so there's no need to xbuild the i386 version now, so thanks for >> that! >> >> sean >> >> ref https://github.com/seanbruno/qemu/tree/bsd-user >> >> > > > And finally, thanks to peter, we have a 1bit change for 32bit mips that > seems to work. > > https://github.com/seanbruno/qemu/commit/d62553b108aa27c0c020dbb771d29f8673807a3b > > > Doing a test run now. this might mean that 32bit mips packages might > exist this weekend in some form. Doesn’t that daddu turn into a simple addu with that bit change? Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C9D8D10B-4CC5-476D-9009-73E52B221962>
