Thread (35 messages) 35 messages, 2 authors, 2021-02-17

Re: [PATCH dwarves v3 5/5] btf_encoder: Align .BTF section to 8 bytes

From: Andrii Nakryiko <hidden>
Date: 2021-02-08 22:31:11

On Fri, Feb 5, 2021 at 5:42 AM Giuliano Procida [off-list ref] wrote:
This is to avoid misaligned access to BTF type structs when
memory-mapping ELF objects.

Signed-off-by: Giuliano Procida <redacted>
---
I trust you did verify that it actually works in cases where
previously .BTF was mis-aligned?

Acked-by: Andrii Nakryiko <andrii@kernel.org>
quoted hunk ↗ jump to hunk
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help