BOUND_GdMa: fails bounds test

发布于 2022-09-07 23:57:34 字数 1854 浏览 21 评论 4

最近用BOCHS调试程序发现如下错误:

        [DEV  ] write to port 0x0000 with len 4 ignored
      [CPU0 ] BOUND_GdMa: fails bounds test

我的程序结构大致如下:

        a()
        {
                b();
                ...
                d();
                ....
        }

        c()
        {       
                b();
                ...
                d();
                ...
        }
       
        //b()是存放在库里的 lib.a
        b()
        {
        }

编译过程:
       
        lib.a : gar b.o d.o

        a.bin : gld a.o lib.a
       
        c.bin : gld c.o lib.a

目前,是执行c.bin的b()是发生以上错误,而在执行 a.bin的b()时一切正常。另,无论是a.bin或是c.bin,在单步测试时发现b()的函数地址与a.map和c.map(gcc -Map)中的是一致的,但当进入b()函数后,发现a.bin::b()函数内的代码是正常的,而c.bin::c()代码不太正常(类似随机码)。此外,我还进行了一个测试,分别在a.bin和c.bin中调用lib.a的其他函数(如d()函数),发现的问题于b()的一样,都是在c.bin中执行到d()中时发现BOUND_GdMa: fails bounds test,且c.bin::d()中的函数代码似乎是随机码(不正常)。

个人感觉是编译链接的问题,但反复检查c.bin的Makefile都没有发现什么异常,各位,有什么好的点子?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

故事与诗 2022-09-19 20:48:59

回复 1# sherf

.........

放低过去 2022-09-19 13:00:26

单看你的描述,a和c的程序结构是一样的啊
EricFisher 发表于 2010-06-04 13:29

a()和c()只是举例,它们的结构是不一样的,a.bin和c.bin是2个不同的应用程序,它们都用到 lib.a 中的函数。

绳情 2022-09-19 11:01:34

单看你的描述,a和c的程序结构是一样的啊

囍笑 2022-09-11 05:02:59

回复 1# sherf

先顶一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文