Floating point exceptions with -pthread

David Schultz das at freebsd.org
Wed May 4 15:22:59 PDT 2005


On Wed, May 04, 2005, Daniel Eischen wrote:
> On Wed, 4 May 2005, Marc Olzheim wrote:
> 
> > On Wed, May 04, 2005 at 10:22:00PM +0200, Marc Olzheim wrote:
> > > So it really seems to be in the floorf() and ceilf() code.
> >
> > Say, isn't that instruction supposed to read 'flds    -8(%ebp);' ? (mark
> > the '-')
> 
> No, 8(%ebp) is where the function's argument is (the first
> instruction is a pushl, then %ebp is assigned from %esp).

Yeah, that part is fine.  The one odd thing I notice as a glance
back at the code is that it uses -12(%ebp) and -16(%ebp) for
temporary storage, instead of using -4(%ebp) and -8(%ebp) like
the double versions.  That's probably a cut-and-pasto on my
part.  This would explain the SIGFPEs if an asynchronous trap is
causing the area just past the end of the stack to be overwritten,
since only 8 bytes of stack are reserved.  I'll take a closer
look in a week or so...


More information about the freebsd-threads mailing list