tools: Remove feature-libelf-mmap feature detection
It's trivial to handle missing ELF_C_MMAP_READ support in libelf the way that objtool has solved it in ("774bec3fddcc objtool: Add fallback from ELF_C_READ_MMAP to ELF_C_READ"). So instead of having an entire feature detector for that, just do what objtool does for perf and libbpf. And keep their Makefiles a bit simpler. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200819013607.3607269-5-andriin@fb.com
This commit is contained in:
parent
85367030a6
commit
22dd1ac91a
|
@ -46,7 +46,6 @@ FEATURE_TESTS_BASIC := \
|
|||
libelf-getphdrnum \
|
||||
libelf-gelf_getnote \
|
||||
libelf-getshdrstrndx \
|
||||
libelf-mmap \
|
||||
libnuma \
|
||||
numa_num_possible_cpus \
|
||||
libperl \
|
||||
|
|
|
@ -25,7 +25,6 @@ FILES= \
|
|||
test-libelf-getphdrnum.bin \
|
||||
test-libelf-gelf_getnote.bin \
|
||||
test-libelf-getshdrstrndx.bin \
|
||||
test-libelf-mmap.bin \
|
||||
test-libdebuginfod.bin \
|
||||
test-libnuma.bin \
|
||||
test-numa_num_possible_cpus.bin \
|
||||
|
@ -146,9 +145,6 @@ $(OUTPUT)test-dwarf.bin:
|
|||
$(OUTPUT)test-dwarf_getlocations.bin:
|
||||
$(BUILD) $(DWARFLIBS)
|
||||
|
||||
$(OUTPUT)test-libelf-mmap.bin:
|
||||
$(BUILD) -lelf
|
||||
|
||||
$(OUTPUT)test-libelf-getphdrnum.bin:
|
||||
$(BUILD) -lelf
|
||||
|
||||
|
|
|
@ -30,10 +30,6 @@
|
|||
# include "test-libelf.c"
|
||||
#undef main
|
||||
|
||||
#define main main_test_libelf_mmap
|
||||
# include "test-libelf-mmap.c"
|
||||
#undef main
|
||||
|
||||
#define main main_test_get_current_dir_name
|
||||
# include "test-get_current_dir_name.c"
|
||||
#undef main
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <libelf.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
Elf *elf = elf_begin(0, ELF_C_READ_MMAP, 0);
|
||||
|
||||
return (long)elf;
|
||||
}
|
|
@ -56,7 +56,7 @@ ifndef VERBOSE
|
|||
endif
|
||||
|
||||
FEATURE_USER = .libbpf
|
||||
FEATURE_TESTS = libelf libelf-mmap zlib bpf
|
||||
FEATURE_TESTS = libelf zlib bpf
|
||||
FEATURE_DISPLAY = libelf zlib bpf
|
||||
|
||||
INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi
|
||||
|
@ -98,10 +98,6 @@ else
|
|||
CFLAGS := -g -Wall
|
||||
endif
|
||||
|
||||
ifeq ($(feature-libelf-mmap), 1)
|
||||
override CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
|
||||
endif
|
||||
|
||||
# Append required CFLAGS
|
||||
override CFLAGS += $(EXTRA_WARNINGS) -Wno-switch-enum
|
||||
override CFLAGS += -Werror -Wall
|
||||
|
|
|
@ -150,12 +150,6 @@ static void pr_perm_msg(int err)
|
|||
___err; })
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBELF_MMAP_SUPPORT
|
||||
# define LIBBPF_ELF_C_READ_MMAP ELF_C_READ_MMAP
|
||||
#else
|
||||
# define LIBBPF_ELF_C_READ_MMAP ELF_C_READ
|
||||
#endif
|
||||
|
||||
static inline __u64 ptr_to_u64(const void *ptr)
|
||||
{
|
||||
return (__u64) (unsigned long) ptr;
|
||||
|
@ -1064,6 +1058,11 @@ static void bpf_object__elf_finish(struct bpf_object *obj)
|
|||
obj->efile.obj_buf_sz = 0;
|
||||
}
|
||||
|
||||
/* if libelf is old and doesn't support mmap(), fall back to read() */
|
||||
#ifndef ELF_C_READ_MMAP
|
||||
#define ELF_C_READ_MMAP ELF_C_READ
|
||||
#endif
|
||||
|
||||
static int bpf_object__elf_init(struct bpf_object *obj)
|
||||
{
|
||||
int err = 0;
|
||||
|
@ -1092,8 +1091,7 @@ static int bpf_object__elf_init(struct bpf_object *obj)
|
|||
return err;
|
||||
}
|
||||
|
||||
obj->efile.elf = elf_begin(obj->efile.fd,
|
||||
LIBBPF_ELF_C_READ_MMAP, NULL);
|
||||
obj->efile.elf = elf_begin(obj->efile.fd, ELF_C_READ_MMAP, NULL);
|
||||
}
|
||||
|
||||
if (!obj->efile.elf) {
|
||||
|
|
|
@ -483,10 +483,6 @@ ifndef NO_LIBELF
|
|||
EXTLIBS += -lelf
|
||||
$(call detected,CONFIG_LIBELF)
|
||||
|
||||
ifeq ($(feature-libelf-mmap), 1)
|
||||
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
|
||||
endif
|
||||
|
||||
ifeq ($(feature-libelf-getphdrnum), 1)
|
||||
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
|
||||
endif
|
||||
|
|
|
@ -28,7 +28,7 @@ struct option;
|
|||
* libelf 0.8.x and earlier do not support ELF_C_READ_MMAP;
|
||||
* for newer versions we can use mmap to reduce memory usage:
|
||||
*/
|
||||
#ifdef HAVE_LIBELF_MMAP_SUPPORT
|
||||
#ifdef ELF_C_READ_MMAP
|
||||
# define PERF_ELF_C_READ_MMAP ELF_C_READ_MMAP
|
||||
#else
|
||||
# define PERF_ELF_C_READ_MMAP ELF_C_READ
|
||||
|
|
Loading…
Reference in New Issue