Re: [PATCH v9] MIPS: force use FR=0 for FPXX binaries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx> 于2021年3月29日周一 下午5:30写道:
>
> On Mon, Mar 29, 2021 at 01:09:18PM +0800, YunQiang Su wrote:
> > YunQiang Su <yunqiang.su@xxxxxxxxxxxxx> 于2021年3月22日周一 上午10:00写道:
> > >
> > > The MIPS FPU may have 3 mode:
> > >   FR=0: MIPS I style, all of the FPR are single.
> > >   FR=1: all 32 FPR can be double.
> > >   FRE: redirecting the rw of odd-FPR to the upper 32bit of even-double FPR.
> > >
> > > The binary may have 3 mode:
> > >   FP32: can only work with FR=0 and FRE mode
> > >   FPXX: can work with all of FR=0/FR=1/FRE mode.
> > >   FP64: can only work with FR=1 mode
> > >
> > > Some binary, for example the output of golang, may be mark as FPXX,
> > > while in fact they are FP32. It is caused by the bug of design and linker:
> > >   Object produced by pure Go has no FP annotation while in fact they are FP32;
> > >   if we link them with the C module which marked as FPXX,
> > >   the result will be marked as FPXX. If these fake-FPXX binaries is executed
> > >   in FR=1 mode, some problem will happen.
> > >
> > > In Golang, now we add the FP32 annotation, so the future golang programs
> > > won't have this problem. While for the existing binaries, we need a
> > > kernel workaround.
> > >
> >
> > We meet a new problem in Debian: with the O32_FP64 enabled kernel,
> > mips64el may also be affected.
> > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983583
>
> hmm, raising this issue in this context before knowing more details,
> feels very trigger happy to me and this doesn't help accepting anything,
> jfyi...
>
> Could you please provide a link for downloading a golang binary, which
> would need this patch to run ?
>

For rootfs, you can download
   http://58.246.137.130:20180/debian-from/rootfs/buster-mipsel.tar.xz
or create by:
    sudo debootstrap --arch mipsel  --include golang-1.11-go \
                     buster buster-mipsel http://deb.debian.org/debian

For binary packages, you can download:
    https://packages.debian.org/buster/mipsel/golang-1.11-go/download

just chroot the rootfs and run:
    /usr/lib/go-1.11/bin/go
It will crash if kernel's O32_FP64 option is enabled.

> Thomas.
>
> --
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea.                                                [ RFC1925, 2.3 ]



-- 
YunQiang Su




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux