Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point QNX中微子6:如何在div上以零产生SIGFPE?_Floating Point_Qnx Neutrino - Fatal编程技术网

Floating point QNX中微子6:如何在div上以零产生SIGFPE?

Floating point QNX中微子6:如何在div上以零产生SIGFPE?,floating-point,qnx-neutrino,Floating Point,Qnx Neutrino,我正在尝试交叉编译一个程序(Yorick,以防有任何用处)以在LE ARM上运行。。。我想使用feenableexcept()捕获SIGFPE。。。问题是目标的库显示不存在这样的符号。有人知道QNX库是否具有同等的功能吗?我一直在谷歌上搜索,想知道QNX对这方面的支持,但运气不太好。。。我所能看到的是,在我的目标平台的所有库中,没有feenableexceptsymbol。。。谢谢 更新:我发现QNX有一个名为的库,它看起来很有趣,但似乎只适用于x86、mips和ppc。。。有人知道是否有ARM

我正在尝试交叉编译一个程序(Yorick,以防有任何用处)以在LE ARM上运行。。。我想使用
feenableexcept()
捕获
SIGFPE
。。。问题是目标的库显示不存在这样的符号。有人知道QNX库是否具有同等的功能吗?我一直在谷歌上搜索,想知道QNX对这方面的支持,但运气不太好。。。我所能看到的是,在我的目标平台的所有库中,没有
feenableexcept
symbol。。。谢谢

更新:我发现QNX有一个名为的库,它看起来很有趣,但似乎只适用于x86、mips和ppc。。。有人知道是否有ARM版本吗

我使用的芯片可能也是at91sam9263

更新2:因此,在QNX中加入dub似乎有以下几点。基于此,我尝试了以下程序

#pragma STD FENV_ACCESS ON
#include <stdio.h>
#include <signal.h>
#include <fenv.h>

void signal_handler (int signo) {
    if(signo == SIGFPE) {
      printf("Caught FPE\n");
    }
}

int main(int argc, char *argv[])
{
    double d;
    fexcept_t enables;

    signal(SIGFPE,(*signal_handler));   

    enables = fegettrapenable();
    printf("The FP trap enable mask is 0x%X\n", enables);

    if( fesettrapenable(fegettrapenable() | FE_DIVBYZERO) )
    {
    printf("### ERROR could not set the FE enable mask\n");
        fexcept_t enables = fegettrapenable();
    printf("The FP trap enable mask is 0x%X\n", enables);
        return(-1);
    }

    printf("Floating point mask successfully set\n");
    enables = fegettrapenable();
    printf("The FP trap enable mask is 0x%X and FE_DIVBYZERO is 0x%X\n", enables, (int)FE_DIVBYZERO);

    d = 2.0 / 0.0;
    printf("For div by zero, got the result %e\n", d);
    printf("The exception test is %d\n", fetestexcept(FE_DIVBYZERO));


    printf("Testing feraiseexcpetion()\n");
    feraiseexcept(FE_DIVBYZERO);

    return 0 ;
}
#pragma STD FENV_访问
#包括
#包括
#包括
无效信号处理器(int signo){
if(signo==SIGFPE){
printf(“捕获的FPE\n”);
}
}
int main(int argc,char*argv[])
{
双d;
feexcept_t启用;
信号(SIGFPE,(*信号处理器));
enables=fegettrapenable();
printf(“FP陷阱启用掩码为0x%X\n”,启用);
if(fesettrapenable(fegettrapenable()| FE_DIVBYZERO))
{
printf(“####错误无法设置FE启用掩码\n”);
fexcept_t enables=fegettrapenable();
printf(“FP陷阱启用掩码为0x%X\n”,启用);
返回(-1);
}
printf(“浮点掩码成功设置\n”);
enables=fegettrapenable();
printf(“FP陷阱启用掩码为0x%X,FE_DIVBYZERO为0x%X\n”),启用(int)FE_DIVBYZERO;
d=2.0/0.0;
printf(“对于由零进行的div,得到结果%e\n”,d);
printf(“异常测试是%d\n”,fetestexcept(FE_DIVBYZERO));
printf(“测试FeraiseException()\n”);
feraiseexcept(FE_除以零);
返回0;
}
这给了我以下输出

The FP trap enable mask is 0x0
Floating point mask successfully set
The FP trap enable mask is 0x4 and FE_DIVBYZERO is 0x4
For div by zero, got the result inf **<<<< DAMN IT - no signal!!!!**
The exception test is 0
Testing feraiseexcpetion()
Caught FPE
FP陷阱启用掩码为0x0
浮点掩码已成功设置
FP陷阱启用掩码为0x4,FE_DIVBYZERO为0x4

对于div by zero,得到了结果inf**感谢您指出Hans,不幸的是,刚刚尝试了它,但在libm或任何其他我使用过的库中都找不到该符号:-S将继续调查,并再次感谢您的建议经过一点额外的挖掘(为交叉编译器lol中的每个平台转储每个单个库)似乎我的系统上的PPC、x86和mips上提供了
fp\u exception\u mask()。。。哦,乔伊:)它在QNX650上工作得很好,但在手臂上没有。不确定这是否有帮助。Hi-Bin,afriad not:)需要安装在手臂上,特别是at91sam9263或至少没有fpu的手臂上