On Mon, 8 Feb 2021 at 22:30, Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > > On Fri, Feb 5, 2021 at 5:42 AM Giuliano Procida <gprocida@xxxxxxxxxx> wrote: > > > > This is to avoid misaligned access to BTF type structs when > > memory-mapping ELF objects. > > > > Signed-off-by: Giuliano Procida <gprocida@xxxxxxxxxx> > > --- > > I trust you did verify that it actually works in cases where > previously .BTF was mis-aligned? > Yes. :-) > Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > > > libbtf.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/libbtf.c b/libbtf.c > > index 9f4abb3..6754a17 100644 > > --- a/libbtf.c > > +++ b/libbtf.c > > @@ -744,6 +744,14 @@ static int btf_elf__write(const char *filename, struct btf *btf) > > goto out; > > } > > > > + /* > > + * We'll align .BTF to 8 bytes to cater for all architectures. It'd be > > + * nice if we could fetch this value from somewhere. The BTF > > + * specification does not discuss alignment and its trailing string > > + * table is not currently padded to any particular alignment. > > + */ > > + const size_t btf_alignment = 8; > > + > > /* > > * First we check if there is already a .BTF section present. > > */ > > @@ -821,6 +829,7 @@ static int btf_elf__write(const char *filename, struct btf *btf) > > elf_error("elf_getshdr(btf_scn) failed"); > > goto out; > > } > > + btf_shdr.sh_addralign = btf_alignment; > > btf_shdr.sh_entsize = 0; > > btf_shdr.sh_flags = 0; > > if (dot_btf_offset) > > -- > > 2.30.0.478.g8a0d178c01-goog > > > > -- > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-team+unsubscribe@xxxxxxxxxxx. >