[U-Boot] [RFC PATCH] arm: provide a CONFIG flag for disabling relocation

Simon Glass sjg at chromium.org
Thu Apr 21 17:18:23 CEST 2011


On Wed, Apr 20, 2011 at 11:56 PM, Aneesh V <aneesh at ti.com> wrote:
> Hi Simon, Wolfgang,
>
> On Thursday 21 April 2011 12:04 AM, Simon Glass wrote:
>>
>> On Fri, Mar 25, 2011 at 11:35 AM, Albert ARIBAUD<albert.aribaud at free.fr>
>>  wrote:
>>>
>>> Le 25/03/2011 17:12, Aneesh V a écrit :
>>>
>>>> Another problem I have with relocation is that it makes debugging with
>>>> JTAG debugers more difficult. The addresses of symbols in the ELF
>>>> target are no longer valid. Of course, you can load the symbols at an
>>>> offset from the original location. But one has to first enable debug
>>>> prints, find the relocation offset, use it while loading the symbols
>>>> before you can do source level debugging.
>>>
>>> Actually you don't need recompiling: simply set a breakpoint at the
>>> entry of relocate_code and once you hit the bp, look up r2: it contains
>>> the destination. If you want the offset rather than the absolute
>>> address, set the breakpoint right after the 'sub r9, r6, r0' round line
>>> 222: r9 will then give you the offset. Unload the current symbols,
>>> reload the symbols with the relevant offset, and there you go.
>>
>> I would like to revisit this thread. I'm not sure how other people do
>> development in U-Boot but I like to use an ICE and a source-level
>> debugger for any significant effort. I think it should be possible to
>> use a JTAG debugging just by loading the u-boot ELF file and running.
>>
>> With this patch (or something similar) this is possible. Without it,
>> it is painful.
>>
>> To be clear, we are not talking here about creating a platform that
>> doesn't use relocation, just that for development purposes it is
>> convenient to be able to disable it.
>
> Actually, I am not even sure why relocation shouldn't be disabled in my
> platform for good. It may be useful to have things such as the frame
> buffer at the end of available memory. But, IMHO, that can still be
> done without relocating u-boot. That's what the patch does.Am I missing
> something?

Well relocation does remove a lot of this ad-hoc positioning of things
at compile time. I think it is desirable. My point is that it is not
engineer-friendly during development, and we should have an easy way
to disable it for debugging / JTAG purposes.

Regards,
Simon

>
>>
>> Looking at the December thread
>> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/88067/focus=88262
>>
>> Aneesh:
>>>>
>>>> Shouldn't we provide a CONFIG option by which users can disable
>>>> Elf relocation?
>>
>> Wolfgang:
>>>
>>> Why should we?  It would just make the code even more complicated, and
>>> require a lot of additional test cases.
>>
>>  From what I can see this is a new CONFIG option, two ifdefs in the
>> board.c file, and optionally disabling the -pie position-independent
>> executable option to reduce size. It is pretty trivial:
>>
>>  arch/arm/config.mk   |    2 ++
>>  arch/arm/lib/board.c |    5 +++++
>>  2 files changed, 7 insertions(+), 0 deletions(-)
>>
>> Regards,
>> Simon
>>
>>>
>>> Amicalement,
>>> --
>>> Albert.
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot at lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
>>>
>


More information about the U-Boot mailing list