portmaster, portupgrade, etc

Steve Kargl sgk at troutmask.apl.washington.edu
Thu Oct 5 15:25:21 UTC 2017


On Thu, Oct 05, 2017 at 05:59:41PM +0300, Konstantin Belousov wrote:
> On Thu, Oct 05, 2017 at 07:51:16AM -0700, Steve Kargl wrote:
> > On Thu, Oct 05, 2017 at 11:35:58AM +0300, Konstantin Belousov wrote:
> > > On Wed, Oct 04, 2017 at 05:27:11PM -0700, Don Lewis wrote:
> > > > > The system in question is my last i686 laptop, which I 
> > > > > use for libm development and testing.  Once I cannot use
> > > > > that laptop (whether hardware failure or inability to 
> > > > > update the installed ports), I'll stop worrying about a
> > > > > functional libm on 32-bit hardware.
> > > > 
> > > > As an aside, this sort of thing could be done in an i386 VM or maybe an
> > > > i386 jail on amd64 hardware.
> > > 
> > > You do not need even a jail for this. Base cc -m32 works on amd64 for
> > > long time, and 32bit binaries can be executed from host environment,
> > > assuming all third-party libs are provided somewhere in the 32bit
> > > variant.
> > > 
> > > The environment with regard to the hardware configuration should be
> > > identical to modern i386-arch machine with SSE2.  Incompatibilities are
> > > considered as bugs and are usually fixed fast when reported.
> > 
> > Does this required WITH_LIB32=yes in src.conf?
> Yes, but this is the default.
> 
> > 
> > More concerning is that the FPU on i686 is set-up in npx to
> > use 53-bit precision instead of 64-bit.  See x86/fpu.h where
> > there is a large comment and the settings
> > 
> > #define __INITIAL_FPUCW__       0x037F
> > #define __INITIAL_FPUCW_I386__  0x127F
> > #define __INITIAL_NPXCW__       __INITIAL_FPUCW_I386__
> > 
> > Does cc -m32 on amd64 cause the amd64 fpu to act (exactly?) like
> > and i387?
> It is not cc -m32.
> 
> Kernel sets up x87 FPU differently for 64 and 32bit processes. See
> ia32_setregs() where pcb is adjusted for 32bit, and r189423.

Yes, I know the kernel sets up npx on i686.  If one is testing libm
changes or new code for libm, then cc -m32 will be insufficient in
testing the behavior one might get from i387 in 53-bit mode as 
oppose to 64-bit.  This is the reason the macro LD80C exists in
math_private.h.

Which brings me back to my i686 laptop with limited resources.
If portmgr makes it impractical/impossible to easily install ports
without a sledge hammer, then testing possible future patches to 
libm will simply skip i686 class hardware.

-- 
Steve


More information about the freebsd-ports mailing list