[U-Boot] ARM: Incorrect ROM protection range?
Albert ARIBAUD
albert.aribaud at free.fr
Thu Feb 24 09:07:03 CET 2011
Le 24/02/2011 08:40, Po-Yu Chuang a écrit :
> Hi Heiko,
>
> On Thu, Feb 24, 2011 at 3:33 PM, Heiko Schocher<hs at denx.de> wrote:
>> Albert ARIBAUD wrote:
>> The bin length is calculated in arch/arm/lib/board.c, but it seems
>> to me not correct ... :-(
>>
>> in board_init_f():
>>
>> gd->mon_len = _bss_end_ofs;
>>
>> that seems correct to me, but later in board_init_r()
>>
>> monitor_flash_len = _bss_start_ofs;
>>
>> which is used for example in ./drivers/mtd/cfi_flash.c for protecting
>> the flash sectors ... so this should be fixed.
Correct.
>>> In the U-Boot image itself, knowing the image size could be achieved in
>>> ARM by using a general _end symbol that would be set after the last
>>> image output section, so _end-_start would equal the image size.
>>
>> we have such a "_end" in u-boot.lds files.
I *knew* this name did not pop up in my mind without a reason. :)
Apologies for not having checked.
> I guess we need a __dynsym_end in all u-boot.lds files.
I'd rather go for "_end", which does not tie the solution to dynsym
being the last section in the image -- imagine for some reason we move
dynsym inside the image rather than at the end, end the image size will
be wrong again. With _end, and a suitable comment in the LD file... this
will be averted where-ever dynsym ends up.
After all, the bug you uncovered was due to using the wrong symbol, a
BSS related one rather than an image-related one, in the first place; so
let's try and learn from past mistakes.
> best regards,
> Po-Yu Chuang
Amicalement,
--
Albert.
More information about the U-Boot
mailing list