为“Linux Synthetic”目标构建ECOS的问题

时间:2011-05-31 06:53:40

标签: ecos

我正在尝试使用ECOS构建Synthetic Linux目标。我的软件环境:

  • Ubuntu 11.4
  • GCC 4.5.2
  • ECOS 3.0

在Config Tool中,我使用“all”软件包设置了“Linux Sythetic”目标。按F7(build)编译开始,但后来说:

  

/opt/ecos/ecos-3.0/packages/hal/synth/i386linux/v3_0/src/syscall-i386-linux-1.0.S:   汇编程序消息:make:离开   目录`/ opt / ecos / linux_build'   /opt/ecos/ecos-3.0/packages/hal/synth/i386linux/v3_0/src/syscall-i386-linux-1.0.S:457:   错误:.size表达式   __restore_rt不评估为常量

     

/opt/ecos/ecos-3.0/packages/hal/synth/i386linux/v3_0/src/syscall-i386-linux-1.0.S:457:   错误:__ tenore的.size表达式   不评估为常数   使:   [src / syscall-i386-linux-1.0.o.d]错误1 make:[build]错误2

/opt/ecos/ecos-3.0/packages/hal/synth/i386linux/v3_0/src/syscall-i386-linux-1.0.S 的文件内容 434 是:

// ----------------------------------------------------------------------------
// Special support for returning from a signal handler. In theory no special
// action is needed, but with some versions of the kernel on some
// architectures that is not good enough. Instead returning has to happen
// via another system call.         

        .align 16
        .global cyg_hal_sys_restore_rt
cyg_hal_sys_restore_rt:
        movl    $SYS_rt_sigreturn, %eax
        int     $0x80
1:              
        .type __restore_rt,@function
        .size __restore_rt,1b - __restore_rt

        .align 8
        .global cyg_hal_sys_restore
cyg_hal_sys_restore:
        popl    %eax
        movl    $SYS_sigreturn, %eax
        int     $0x80
1:              
        .type __restore,@function
        .size __restore,1b - __restore

因此 __ restore __ restore_rt 尚未确定。

我试图评论这个部分并删除与信号相关的包(它说它是一个信号处理程序的东西),但它看起来是ECOS内核的基础部分;当部件被取消注释时,构建似乎成功,但是当我编译示例应用程序时,由于缺少符号(cyg_hal_sys_restore)而存在链接器错误。

愚蠢的想法,但我试图将“__restore”替换为“cyg_hal_sys_restore” 和“... rt”一样,只是为了消除undefs(不是真的希望错误的代码没有导致错误),结果是:构建正常(因为没有undefs),示例编译就可以了(因为没有遗漏的符号),但是示例 a.out 只是在我启动它的神圣时刻抛出段错误。

Halp,请,我不熟悉inline asm和ECOS。

1 个答案:

答案 0 :(得分:0)

问题似乎与binutils有关。在Debian上,降级到2.20.1-16对我有用。 http://ecos.sourceware.org/ml/ecos-discuss/2011-06/msg00010.html

编辑:关注链接,也有适当的修复。