免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2481 | 回复: 3
打印 上一主题 下一主题

[C++] gcc 动态库内嵌汇编,导致so不能加载,求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-18 11:37 |只看该作者 |倒序浏览
double *rf;

double        asmtest()
{
               
asm(
                       
"movl rf, %%ebx        "
:

:

:

);
}
如上面的情况, 由于rf是一个全局变量,编译和链接没有问题,但是当 dlopen 的时候会
发生错误,提示:
cannot restore segment prot after reloc: Permission denied
问题解决了,
顺便上传个 AT&T 语法的 Sun汇编手册
希望对大家有用

[ 本帖最后由 GFree 于 2008-12-18 14:25 编辑 ]

Book.zip

226.54 KB, 下载次数: 20

AT&T 汇编语法

论坛徽章:
0
2 [报告]
发表于 2008-12-18 20:57 |只看该作者
麻烦您说一下是怎么解决的呢。看的我心里痒痒的

论坛徽章:
0
3 [报告]
发表于 2008-12-19 12:55 |只看该作者
我试验的,全局变量在so中被inline assembly访问,没有问题。

但这绝对不是推荐的方法。 虽然so中的全局变量是以copy-on-write方式被各个进程共享的,但大量的全局变量会导致代码混乱、难维护。

而且operands过多也不是好事,这时候你应该考虑封装一个struct,只传一个operand进去,其他通过偏移来访问。

论坛徽章:
0
4 [报告]
发表于 2008-12-19 15:57 |只看该作者
由于是别人的代码,我只是改改,还是谢谢大家了,后来发现是SELinux的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP