
24 Feb
2024
24 Feb
'24
10:16 a.m.
On 2/16/24 11:35, Ilias Apalodimas wrote:
Hi Heinrich,
[...]
}
.rela.dyn : { *(.rela.dyn) }
.rela.plt : { *(.rela.plt) }
.rela.got : { *(.rela.got) }
.rela.data : { *(.rela.data) *(.rela.data*) }
Why are we switching from Rel to Rela?
This was wrong.
Looking at the u-boot ELF binary we see these relocation sections:
arm: .rel.dyn arm64: .rela.dyn riscv64: .rela.dyn
In our EFI object files we currently have no relocations. This is why tests did not complain.
In arch/arm/lib/reloc_arm_efi.c we handle DT_REL. In arch/arm/lib/reloc_aarch64_efi.c we handle DT_RELA. In arch/riscv/lib/reloc_riscv_efi.c we handle DT_RELA.
Best regards
Heinrich
_etext = .; _text_size = . - _text;
.dynamic : { *(.dynamic) }
. = ALIGN(4096); .data : { _data = .; *(.sdata)
@@ -47,20 +59,19 @@ SECTIONS . = ALIGN(512); _bss_end = .; _edata = .;
}
.rel.dyn : { *(.rel.dyn) }
.rel.plt : { *(.rel.plt) }
.rel.got : { *(.rel.got) }
.rel.data : { *(.rel.data) *(.rel.data*) }
_data_size = . - _etext;
} :data
_data_size = _edata - _data;
. = ALIGN(4096);
.dynsym : { *(.dynsym) }
. = ALIGN(4096);
.dynstr : { *(.dynstr) }
. = ALIGN(4096);
.note.gnu.build-id : { *(.note.gnu.build-id) } /DISCARD/ : { *(.rel.reloc) *(.eh_frame) *(.note.GNU-stack)
*(.dynsym)
*(.dynstr)
*(.note.gnu.build-id)
*(.comment) }
}.comment 0 : { *(.comment) }
-- 2.43.0
Cheers /Ilias