Skip site navigation (1)Skip section navigation (2)
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:
>>>>=20
>>>> =
https://github.com/seanbruno/qemu/commit/05ee8495804599b52a88eb36b13ea9c06=
b3207cd
>>>>=20
>>>> Which is my combined tracking branch for qemu and sson's bsd-user
>>>> branch.
>>>>=20
>>>> I'm currently tracking an "illegal instruction" on exit issue that =
seems
>>>> to happen on application exit causing a crash.
>>>>=20
>>>> sean
>>>=20
>>>=20
>>> I've been tracking qemu upstream with sson's patches and massaging
>>> things here and there with the bsd-user mode qemu.
>>>=20
>>> https://github.com/seanbruno/qemu/tree/bsd-user
>>>=20
>>> 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
>>>=20
>>> 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
>>>=20
>>> 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:
>>>=20
>>> chroot /mipsbuild
>>> uname -a
>>> <uname output>
>>> (Illegal Instruction)[coredump]
>>>=20
>>> This breaks poudriere right now.
>>>=20
>>>=20
>>> 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
>>>=20
>>>=20
>>>      - chroot /mipsbuild
>>>      - uname -a (Illegal Instruction and coredump ON EXIT)
>>>=20
>>>      - chroot /mipsbuild /bin/sh
>>>      - uname -a (works everytime)
>>>=20
>>>=20
>>> sean
>>=20
>> I've narrowed this down with some help from #bsdmips:
>>=20
>> env SHELL=3D/bin/sh chroot /mipsbuild  --> no issues running commands
>>=20
>> env SHELL=3D/bin/csh chroot /mipsbuild
>> env SHELL=3D/bin/tcsh chroot /mipsbuild --> both of these cause =
illegal
>> instructions in qemu-mips
>>=20
>> 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!
>>=20
>> sean
>>=20
>> ref https://github.com/seanbruno/qemu/tree/bsd-user
>>=20
>>=20
>=20
>=20
> And finally, thanks to peter, we have a 1bit change for 32bit mips =
that
> seems to work.
>=20
> =
https://github.com/seanbruno/qemu/commit/d62553b108aa27c0c020dbb771d29f867=
3807a3b
>=20
>=20
> Doing a test run now.  this might mean that 32bit mips packages might
> exist this weekend in some form.

Doesn=92t 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>