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

Bug#825342: mips/mipsel: make sure all packages built with fpxx enabled



user release.debian.org@packages.debian.org
usertags 825342 binnmu
thanks

Hi,

On 26/05/16 11:48, YunQiang Su wrote:
> Package: release.debian.org
> 
> Background:
> 1. About FPXX:[1]
>     The o32 ABI has been modified and extended. The o32 64-bit
> floating-point register support is now obsolete and has been removed.
> It has been replaced by three ABI extensions FPXX, FP64A, and FP64.
> The meaning of the -mfp64 command-line option has changed. It is now
> used to enable the FP64A and FP64 ABI extensions.
> 
> The FPXX extension requires that code generated to access
> double-precision values use even-numbered registers. Code that adheres
> to this extension is link-compatible with all other o32
> double-precision ABI variants and will execute correctly in all
> hardware FPU modes. The command-line options -mabi=32 -mfpxx can be
> used to enable this extension. MIPS II is the minimum processor
> required.
> The o32 FP64A extension requires that floating-point registers be
> 64-bit and odd-numbered single-precision registers are not allowed.
> Code that adheres to the o32 FP64A variant is link-compatible with all
> other o32 double-precision ABI variants. The command-line options
> -mabi=32 -mfp64 -mno-odd-spreg can be used to enable this extension.
> MIPS32R2 is the minimum processor required.
> The o32 FP64 extension also requires that floating-point registers be
> 64-bit, but permits the use of single-precision registers. Code that
> adheres to the o32 FP64 variant is link-compatible with o32 FPXX and
> o32 FP64A variants only, i.e. it is not compatible with the original
> o32 double-precision ABI. The command-line options -mabi=32 -mfp64
> -modd-spreg can be used to enable this extension. MIPS32R2 is the
> minimum processor required.
> 
> The new ABI variants can be enabled by default using the configure
> time options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32. It
> is strongly recommended that all vendors begin to set o32 FPXX as the
> default ABI. This will be required to run the generated code on MIPSR5
> cores in conjunction with future MIPS SIMD (MSA) code and MIPSR6
> cores.
> 
> 2. How to detect whether FPXX is enabled:
>     readelf -A all object files/shared libraries/static libraries and
>     grep 'FP ABI: Hard float (32-bit CPU, Any FPU)'
>     This only works for o32 objects aka (mips/mipsel)
> 
> 3. The inherit of object type
>     If all object in a binary/shared-library is compiled with fpxx and
> it is linked
>     with static libraries have non-fpxx objects, it will show type as non-fpxx
> 
>     if a fpxx-enabled shared-library linked with a non-fpxx enabled
> shared library,
>     it will still show as fpxx-enabled.
> 
> Howto:
>     Since background 3, we will need make sure all of the static libraries have
>     type as fpxx-enabled, and then rebuild all other packages
> non-fpxx-enabled yet.
> 
> 
> Scripts:
>     detect.sh: usage: sh detect.sh mips > mips.txt
>     buildable.sh: usage: sh buildable.sh mips > mips.buildable

I have just discussed this with Aurelien and he has explained to me that this
change happened a while ago and that we have been building packages with the new
flags for a few months already. So this is just about finishing this
'transition' and making sure all the binaries in the archive are built against
the new ABI.

Can you give us a list of packages that need to be rebuilt in each of mips and
mipsel? Then we can go and schedule the binNMUs.

Cheers,
Emilio


Reply to: