首页
社区
课程
招聘
[求助]Android里面fastcall和cdecl的问题
发表于: 2018-7-4 12:59 2916

[求助]Android里面fastcall和cdecl的问题

2018-7-4 12:59
2916
各位大佬好,我这里遇到一个fastcall和cdecl的问题,问了不少人但是还是有点不懂,求指点一下~

情况是这样的,我写了一个程序。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int fill_pkt_buffer(char*);

int main(int argc, char **argv){
	char* mystring;
        printf("hello");
        char* buffer = "hello world!";
	
	int result = fill_pkt_buffer(buffer);

	printf("finish! return: %d\n", result);

	return 0;
}
这个程序在我不加prinf("hello")的情况下正常,一加的话就会出现segment fault。而且哪怕不是printf,而是open,read这类的也不行。师傅和我说是因为fill_pkt_buffer的函数调用约定问题。我用IDA反编译出来上面显示这个函数是fastcall,所以我加了attribute。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>


int __attribute__((__fastcall__)) fill_pkt_buffer(char*);


int main(int argc, char **argv){
	char* mystring;
        printf("hello");
        char* buffer = "hello world!";
	
	int result = fill_pkt_buffer(buffer);

	printf("finish! return: %d\n", result);

	return 0;
}
但是程序依旧segment fault而且编译的时候提示
hi_diag.c:6:1: warning: '__fastcall__' attribute directive ignored [-Wattributes]
 int __attribute__((__fastcall__)) diagpkt_subsys_get_id(int a);
 ^
我查了下说是arm上没有区分fastcall cdecl,还想听听各位前辈的意见!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 85
活跃值: (101)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
跪求大佬指点下啊~
2018-7-6 18:45
0
游客
登录 | 注册 方可回帖
返回