狂郁闷, 指令解码有错?
我用 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!
怀疑是指令解码有问题。郁闷啊。 我可以在 uclinux 里写段 code 绕过这一块,但现在狂没信心啊,就怕其他地方还有类似的问题。 是 dbct 的错,我会试着修一修。 已经修好了,一些比较低级的错误 :cry:
等俺把最近的东西一起整理一下发 patch 出来 thefat, 请告诉你的联系方式,skyeye需要你的帮助,请与我email联系:yuchenATtsinghuaDOTeduDOTcn
页:
[1]