Message ID | 1479587152-25065-28-git-send-email-sjg@chromium.org |
---|---|
State | Superseded |
Delegated to: | Bin Meng |
Headers | show |
On Sun, Nov 20, 2016 at 4:25 AM, Simon Glass <sjg@chromium.org> wrote: > The BSS region may overlap with relocations. If we clear BSS we will > overwrite the start of the relocation area. This doesn't matter when running > from SPI flash, since it is read-only. But when relocating 64-bit U-Boot > from one place in RAM to another, relocation will fail because some of its > relocations have been zeroed. > > To fix this, put the ELF fixup call before the BSS clearing call. > > Signed-off-by: Simon Glass <sjg@chromium.org> > --- > > Changes in v2: None > > common/board_f.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
diff --git a/common/board_f.c b/common/board_f.c index f19f998..c79ee4e 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -1040,8 +1040,8 @@ static init_fnc_t init_sequence_f[] = { setup_reloc, #if defined(CONFIG_X86) || defined(CONFIG_ARC) copy_uboot_to_ram, - clear_bss, do_elf_reloc_fixups, + clear_bss, #endif #if defined(CONFIG_XTENSA) clear_bss,
The BSS region may overlap with relocations. If we clear BSS we will overwrite the start of the relocation area. This doesn't matter when running from SPI flash, since it is read-only. But when relocating 64-bit U-Boot from one place in RAM to another, relocation will fail because some of its relocations have been zeroed. To fix this, put the ELF fixup call before the BSS clearing call. Signed-off-by: Simon Glass <sjg@chromium.org> --- Changes in v2: None common/board_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)