中国服务器网

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

分段错误当我在Linux上运行使用Hard Float构build的Neon代码时

我有一个代码与霓虹灯assembly优化的一个function。 我用gcc构build它,并运行在Cortex A9(硬浮动图像)上。 当我build立一个非优化代码(纯C没有汇编)与硬浮选项,如:-mapc -march = armv7-a -mtune = cortex-a9 -mfloat-abi = hard -mfpu = neon,它工作正常。 当我介绍我的汇编代码,并用下列标志进行汇编:-march = armv7 -a -mfloat-abi = hard -mfpu = neon它构build得很好,但是出现了分段错误。 还有一点需要注意的是,如果我使用-mfloat-abi = softfp代替hard(和带有-static选项的链接)来构build程序集优化代码,则运行良好。 为什么汇编代码会造成Hard float问题? 我遇到了硬/软abi选项上的其他post,但是我没有find解决scheme,我的具体情况(C代码工作,但霓虹灯大会给分段错误) 编辑:董事会没有gdb,我通过gdb服务器远程尝试,但提出了其他连接问题。 所以我不能使用gdb进行debugging。 但是,我所做的debugging:只要我进入汇编函数,我推寄存器,然后分支到最后,再次popup寄存器。 它仍然给分段错误。 我可以推断,这不是一个特定的指示给予错误。 一些标志丢失在生成文件或其他forms和特定于硬浮点的程序集中的语法? 另外,当我使用armcc选项–fpu = vfpv3_d16构build库时,它仍然可以工作。 这是很难对付的吗? 所以我推断组合GCC +汇编代码+硬盘浮动是一个问题…请给你的build议,如果你曾经与这个/类似的组合。 编辑如果汇编代码中包含像MOV r0, r1或ADD r1, r2,r2这样的明确指令,则会运行该代码ADD r1, r2,r2但在出现与LDR r1, [r2]或mov r0, #0一样的任何常量或内存相关操作的情况下会出现分段错误。 […]