thefat 发表于 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!

怀疑是指令解码有问题。郁闷啊。

thefat 发表于 2005-12-30 18:18:04

我可以在 uclinux 里写段 code 绕过这一块,但现在狂没信心啊,就怕其他地方还有类似的问题。

thefat 发表于 2005-12-31 02:34:21

是 dbct 的错,我会试着修一修。

thefat 发表于 2005-12-31 17:12:50

已经修好了,一些比较低级的错误 :cry:
等俺把最近的东西一起整理一下发 patch 出来

chyyuu 发表于 2006-1-6 10:12:08

thefat, 请告诉你的联系方式,skyeye需要你的帮助,请与我email联系:yuchenATtsinghuaDOTeduDOTcn
页: [1]
查看完整版本: 狂郁闷, 指令解码有错?