bpf: Prevent .BTF section elimination
authorTony Ambardar <tony.ambardar@gmail.com>
Sun, 20 Sep 2020 05:01:34 +0000 (22:01 -0700)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 21 Sep 2020 19:50:44 +0000 (21:50 +0200)
Systems with memory or disk constraints often reduce the kernel footprint
by configuring LD_DEAD_CODE_DATA_ELIMINATION. However, this can result in
removal of any BTF information.

Use the KEEP() macro to preserve the BTF data as done with other important
sections, while still allowing for smaller kernels.

Fixes: 90ceddcb4950 ("bpf: Support llvm-objcopy for vmlinux BTF")
Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/a635b5d3e2da044e7b51ec1315e8910fbce0083f.1600417359.git.Tony.Ambardar@gmail.com
include/asm-generic/vmlinux.lds.h

index 5430febd34beecea9e6c50126b78c9fb7a965758..7636bc71c71f97785b187bdb9100eb1190cf28e5 100644 (file)
 #define BTF                                                            \
        .BTF : AT(ADDR(.BTF) - LOAD_OFFSET) {                           \
                __start_BTF = .;                                        \
-               *(.BTF)                                                 \
+               KEEP(*(.BTF))                                           \
                __stop_BTF = .;                                         \
        }                                                               \
        . = ALIGN(4);                                                   \