免费注册 查看新帖 |

Chinaunix

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

x86下运行正常的代码移植到MIPS下面出现问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-23 14:10 |只看该作者 |倒序浏览
程序运行时的错误提示如下:
Address alignment error, can't emulate
badvaddr=0xfffffe24, epc=0x2aee6cac
Killed

  
在网上没搜到任何相关的问题,大家有碰到这样的问题吗? 提示一下吧。现在一点头绪都没有。谢谢
  
我的头文件是这样的,大家看看 是不是问题在这:


#ifndef _h_THUNDER_CLASS
#define _h_THUNDER_CLASS

extern "C"
{
#include "embed_thunder.h"
}


typedef struct taskInfo {
    char *fileName;
    u64 fileSize;
    u32 progress;
    u32 speed;
    u32 usedTime;
    enum ET_TASK_STATUS status;
}TASK_INFO;

typedef enum {
    TASKTYPE_NEW_URL = 0,
    TASKTYPE_CON_URL,
    TASKTYPE_NEW_TCID,
    TASKTYPE_CON_TCID,
    TASKTYPE_BT,

} taskTypeID;

typedef struct taskType {
    taskTypeID taskType;

    union {
    struct newUrl{
        char *url;
        char *refUrl;
        char *description;
        char *filePath;
        char *fileNameForUser;
    }newUrl;
    struct conUrl{
        char *url;
        char *refUrl;
        char *description;
        char *filePath;
        char *curFileName;
    }conUrl;
    struct newTcid{
        u8   *tcid;
        u64  fileSize;
        char *fileName;
        char *filePath;
    }newTcid;
    struct conTcid{
        u8   *tcid;
        char *fileName;
        char *filePath;
    }conTcid;
    struct bt{
        char *seedFileFullPath;
        char *filePath;
        u32  *downloadFileIndexArray;
        u32  fileNum;
        enum ET_ENCODING_SWITCH_MODE encodingSwitchMode;
    }bt;
   
    }type;
} TASK_TYPE;


////////////////////////////////////////////////////

///////////////ThunderClass/////////////////////////

////////////////////////////////////////////////////

class ThunderClass
{
public:
    ThunderClass(char *licn);
    ~ThunderClass();
   
    int SetLicense(char *license, int licenseSize);
    //u32 getLicense();

   
    int GetTaskInfo     (u32 taskId, TASK_INFO *info);
    int CreateTask      (TASK_TYPE task,u32 *taskId);
    int StartTask       (u32 taskId);
    int StopTask        (u32 taskId);
    int DeleteTask      (u32 taskId);

private:
    char *license;
};


#endif


[ 本帖最后由 xiaobaiwen 于 2009-7-23 14:36 编辑 ]

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-07-23 14:33 |只看该作者
总觉得用C++开发出来的程序,大多移植性很低似的呢
可能我遇到的少,我遇到的多数都是移植起来有难度的

论坛徽章:
0
3 [报告]
发表于 2009-07-23 14:39 |只看该作者
原帖由 T-bagwell 于 2009-7-23 14:33 发表
总觉得用C++开发出来的程序,大多移植性很低似的呢
可能我遇到的少,我遇到的多数都是移植起来有难度的



公司要用这个开发,我只能用这个开发咯,,  帮我分析一下这个错误吧,现在很着急解决这个问题啊!!

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2009-07-23 14:46 |只看该作者
迅雷?

地址对齐问题吧,访问了没有对齐地址的整数、指针等

论坛徽章:
0
5 [报告]
发表于 2009-07-23 15:40 |只看该作者
刚刚trace了一下,得到如下的调试信息:
./strace: LD_LIBRARY_PATH=.: command not found
/mnt $ LD_LIBRARY_PATH=. ./strace ./ThunderClass
execve("./ThunderClass", ["./ThunderClass"], [/* 9 vars */]) = 0
old_mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ERRNO_4085 (Unknown error 4085)
stat("/etc/ld.so.cache", 0x7fec76a0)    = -1 ERRNO_4005 (Unknown error 4005)
old_mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfa3
old_mmap(NULL, 1261568, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ERRNO_4090 (Unknown error 4090)
old_mmap(0x2ac60000, 7844, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xb0000) = -1 ERRNO_4006 (Unknown error 4006)
munmap(0x2aab4000, 16384)               = -1 ERRNO_4005 (Unknown error 4005)
open("/lib/libstdc++.so.6", O_RDONLY)   = -1 ERRNO_4090 (Unknown error 4090)
read(3, 0x2aab4000, 16384)              = -1 ERRNO_4090Address alignment error, can't emulate
(Unknown error badvaddr=0xfffffe24, epc=0x2aee6cac

4090)
old_mmap(0x2ac64000, 1003164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 ERRNO_4090 (Unknown error 4090)
old_mmap(0x2adf8000, 9952, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfa6
munmap(0x2aab4000, 16384)               = -1 ERRNO_4005 (Unknown error 4005)
open("/lib/libm.so.0", O_RDONLY)        = -1 ERRNO_4090 (Unknown error 4090)
read(3, 0x2aab4000, 16384)              = -1 ERRNO_4090 (Unknown error 4090)
old_mmap(0x2adfc000, 194916, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 ERRNO_4090 (Unknown error 4090)
close(3)                                = -1 ERRNO_4091 (Unknown error 4091)
open("./libc.so.0", O_RDONLY)           = -1 ERRNO_4005 (Unknown error 4005)
old_mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfa3
old_mmap(NULL, 1310720, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ERRNO_4090 (Unknown error 4090)
old_mmap(0x2afe0000, 17536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xb4000) = -1 ERRNO_4090 (Unknown error 4090)
close(3)                                = -1 ERRNO_4091 (Unknown error 4091)
open("./libpthread.so.0", O_RDONLY)     = -1 ERRNO_4005 (Unknown error 4005)
old_mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfa3
old_mmap(NULL, 622592, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ERRNO_4090 (Unknown error 4090)
old_mmap(0x2b078000, 30412, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xc000) = -1 ERRNO_4090 (Unknown error 4090)
close(3)                                = -1 ERRNO_4091 (Unknown error 4091)
ioctl(0, TIOCNXCL, 0x7fec73a0)          = -1 ERRNO_4054 (Unknown error 4054)
getpid()                                = -1 ERRNO_4076 (Unknown error 4076)
setrlimit(RLIMIT_STACK, {rlim_cur=2040*1024, rlim_max=1073741823}) = -1 ERRNO_4194 (Unknown error 4194)
rt_sigaction(SIGRT_1, {SIG_DFL}, NULL, 16) = -1 ERRNO_4194 (Unknown error 4194)
rt_sigprocmask(SIG_BLOCK, [RT_0], NULL, 16) = -1 ERRNO_4045 (Unknown error 4045)
brk(0x4085000)                          = -1 ERRNO_4004 (Unknown error 4004)
[===DEBUG===][227:main:ThunderClass.cpp] before new
write(1, "[===DEBUG===][26:ThunderClass:Th"..., 60[===DEBUG===][26:ThunderClass:ThunderClass.cpp] before init
) = -1 ERRNO_4210 (Unknown error 4210)
brk(0x408d000)                          = -1 ERRNO_4042 (Unknown error 4042)
clone(child_stack=0x408c0c0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 4004
rt_sigprocmask(SIG_SETMASK, NULL, [RT_0], 16) = 4004
rt_sigprocmask(SIG_SETMASK, NULL, 0x7fec7980, 16) = -1 ERRNO_4199 (Unknown error 4199)
--- SIGRT_0 (Unknown signal 32) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000}, NULL)          = 4166
nanosleep({0, 20000000},  <unfinished ...>
+++ killed by SIGKILL +++

这个我还是不太明白,有人认为是c++中用到c 函数的问题,  错误定位也定位到了一个d调用c 函数的 代码上,  大家一前c++中调用C是否有类似的问题???

论坛徽章:
0
6 [报告]
发表于 2014-12-23 14:59 |只看该作者
我在mips上开发,也遇到这样的问题,是否是clone出新进程的原因?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP