[Pkg-phototools-devel] Bug#788102: The code doesn't compile on kfreebsd

Mathieu Malaterre malat at debian.org
Tue Feb 23 14:14:58 UTC 2016


On Tue, Feb 23, 2016 at 5:17 AM, Steven Chamberlain <steven at pyro.eu.org> wrote:
> Hi,
>
> Mathieu Malaterre wrote:
>> Steven Chamberlain <steven at pyro.eu.org> wrote:
>> > Gianfranco Costamagna wrote:
>> >> file.c:5:38: error: ‘mcontext_t’ has no member named ‘fpregs’
>> >> uint32_t mxcsr = ucon.uc_mcontext.fpregs->mxcsr;
>> >
>> > FreeBSD doesn't seem to have fpregs in mcontext_t or sigcontext.
>> > But I think mc_fpstate might be the same thing;  but that isn't
>> > implemented as a struct...
>>
>> Correct. Looks like other are handling it this way also
>> https://github.com/fukamachi/clozure-cl/blob/master/level-1/x86-trap-support.lisp
>
> For future reference, I came up with this alternate implementation of
> restoreControlRegs() for kFreeBSD (untested, except it builds and passes
> the testsuite):
>
> #include <machine/npx.h>
>
> inline void
> restoreControlRegs (const ucontext_t & ucon, bool clearExceptions)
> {
>     struct envxmm *ex = (struct envxmm *)(ucon.uc_mcontext.mc_fpstate);
>     setCw ((ex->en_cw & cwRestoreMask) | cwRestoreVal);
>     setMxcsr (ex->en_mxcsr, clearExceptions);
> }


Thanks a lot for the update. Could you send me the actual full debdiff
you used. Here is what I get from fall.d.o when I use your patch:

[...]
IexMathFpu.cpp: In function 'void
Iex_2_2::setFpExceptionHandler(Iex_2_2::FpExceptionHandler)':
IexMathFpu.cpp:482:9: error: 'struct sigaction' has no member named
'sa_restorer'
  action.sa_restorer = 0;
         ^
[...]



More information about the Pkg-phototools-devel mailing list