代码重定位后内存中有两份代码,导致调用子函数程序跑飞

2019-03-26 12:23发布

做的是新版的uboot移植到s3c2440,首先上电的时候nandflash前4K的代码被自动搬运到内存,然后完成uboot的完整拷贝。现在拷贝成功,程序跳转到拷贝后的地址运行,也就是链接时的地址。现在问题是一旦调用链接地址位于前4K的函数,程序就会跑飞。
按理说跳转到拷贝后的地址运行后,调用函数是用的当前PC值偏移跳转,上电时被搬运的前4K不会对现在的代码区造成影响。并且拷贝的目标地址就是链接地址。
反汇编代码也检查过了,看不出问题所在,希望有大神能帮忙答疑解惑 此帖出自Linux与安卓论坛
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。