
From: Wolfgang Denk [mailto:wd@denx.de]
NAK.
Sorry, this doesn't work. We cannot have one board compile this way, and another one another way - one working with that tool chain and the other with another tool chain only.
Is there a list of the toolchains that -mrelocatable must be tested against for each board?
The problem you're addressing is a bug, and not only on this single board, but everywhere. So it must be fixed everywhere.
Either we add manual relocation to these pointers like we do elsewhere (that would be my recommendation for a quick workaround aka bug fix for this release), or we should find a clean way to get real relocation working (that would be much better, but probably it is too late for this release).
I know of pointers in structures in cmd_mii.c and image.c that need relocation, but how many more are there? And where should the manual relocation code reside?
I think the effort should be applied to making sure the toolchain can work with relocatable instead.
In my testing of this patch, I found a crash with the Radeon driver because the x86emu code forces entries into got2 - which get double relocated when using -mrelocatedable.
See: [PATCH 1/2] Make mpc8572ds, mpc8544ds, mpc8536ds relocatable [PATCH 2/2] Leave x86emu op code tables in default section
Here: http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/48102
For a new version of this patch.
-Ed