QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1014|回复: 4

狂郁闷, 指令解码有错?

[复制链接]
发表于 2005-12-30 18:12:55 | 显示全部楼层 |阅读模式
我用 uclinux 把 bridge, netfilter 都开了,发现在 netfilter.c 的 nf_iterate 出现了古怪的事情:

                if (hook_thresh > elem->priority){
                  printk(KERN_INFO "%s:%d:skipped.\n",
                         __FUNCTION__,__LINE__); // I added this line for debugging.
                        continue;
                }

当 hook_thresh=INT_MIN, elem->priority=INT_MAX 时,这个判断居然成功了,也就是说 -2147483648 > 2147483647 !

后来看了汇编,也就是 cmp, ble 挺象那么回事,稍特别的是 cmp 的两个参数 r6, r4 是 ldr 进来的,后来我在 nf_iterate 中写了一堆 code 发现  ldr 的都会有这个问题。

不过我写了个应用层的 code 跑就没这个问题了,也样也是用 ldr 的。在 Skyeye 的 armemu.c 里 CMP(0x15) 那段写了点 log 发现在 nf_iterate 里跑到 cmp 时根本没落到 CMP 这段 code!

怀疑是指令解码有问题。郁闷啊。
 楼主| 发表于 2005-12-30 18:18:04 | 显示全部楼层
我可以在 uclinux 里写段 code 绕过这一块,但现在狂没信心啊,就怕其他地方还有类似的问题。
回复

使用道具 举报

 楼主| 发表于 2005-12-31 02:34:21 | 显示全部楼层
是 dbct 的错,我会试着修一修。
回复

使用道具 举报

 楼主| 发表于 2005-12-31 17:12:50 | 显示全部楼层
已经修好了,一些比较低级的错误
等俺把最近的东西一起整理一下发 patch 出来
回复

使用道具 举报

发表于 2006-1-6 10:12:08 | 显示全部楼层
thefat, 请告诉你的联系方式,skyeye需要你的帮助,请与我email联系:yuchenATtsinghuaDOTeduDOTcn
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-27 05:30 , Processed in 0.037396 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表