首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在__attribute__程序中使用HardFP (pcs(“aapcs”))?

如何在__attribute__程序中使用HardFP (pcs(“aapcs”))?
EN

Stack Overflow用户
提问于 2015-03-08 21:18:32
回答 1查看 613关注 0票数 1

我有一个HardFP ABI (非常)简单的测试程序。它与其他HardFP二进制文件链接,没有任何问题。现在我想在代码中使用来自Softfp库的一个函数,所以我从这个库中更改了头文件(.h),以便在每个使用双arg (比如: void ( double,double arg2))的函数上添加attibute:__ attribute__((pc(“aapcs”),所以我告诉工具链这个库使用softfp。问题是工具链(arm androideabi-4.9)对我大喊大叫:

/media/data_disk/b2g/work/hardfp/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/../../../../arm-linux-androideabi/bin/ld:错误: /tmp/cc6SmP3D.o使用VFP寄存器参数,输出不存在/media/data_disk/b2g/work/hardfp/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/../../../../arm-linux-androideabi/bin/ld:错误: /home/jgomez/b2g/build.flatfish.hardfp/out/target/product/flatfish/obj/lib/libc.so使用VFP寄存器参数,输出不存在/media/data_disk/b2g/work/hardfp/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/../../../../arm-linux-androideabi/bin/ld:错误: /home/jgomez/b2g/build.flatfish.hardfp/out/target/product/flatfish/obj/lib/libstdc++.so使用VFP寄存器参数,输出不存在/media/data_disk/b2g/work/hardfp/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/../../../../arm-linux-androideabi/bin/ld:错误: /home/jgomez/b2g/build.flatfish.hardfp/out/target/product/flatfish/obj/lib/libm.so使用VFP寄存器参数,输出不使用

(当然,libc、libstdc++和libm也很难实现)。

它不编译。

因此,我的问题是,如何使用__attribute__((pcs(“aapcs”))让HardFP ABI程序与Softfp二进制文件链接?

我以为这就是这面旗帜的目的。我说错了吗?

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-10 18:18:31

好吧,我已经解决了问题。

正如我所想的,该属性的工作方式与预期的一样。编译器(gcc)生成的汇编代码如果我在函数声明前面写前缀:__attribute__((pcs("aapcs"))),就是使用r寄存器传递参数值,所以被调用者在Softfp模式下工作得很好。

我只需要将此标志添加到编译器选项中:

--no-warn-mismatch

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28932005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档