Commit 22dd1ac9 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov

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
("774bec3f 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: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200819013607.3607269-5-andriin@fb.com
parent 85367030
...@@ -46,7 +46,6 @@ FEATURE_TESTS_BASIC := \ ...@@ -46,7 +46,6 @@ FEATURE_TESTS_BASIC := \
libelf-getphdrnum \ libelf-getphdrnum \
libelf-gelf_getnote \ libelf-gelf_getnote \
libelf-getshdrstrndx \ libelf-getshdrstrndx \
libelf-mmap \
libnuma \ libnuma \
numa_num_possible_cpus \ numa_num_possible_cpus \
libperl \ libperl \
......
...@@ -25,7 +25,6 @@ FILES= \ ...@@ -25,7 +25,6 @@ FILES= \
test-libelf-getphdrnum.bin \ test-libelf-getphdrnum.bin \
test-libelf-gelf_getnote.bin \ test-libelf-gelf_getnote.bin \
test-libelf-getshdrstrndx.bin \ test-libelf-getshdrstrndx.bin \
test-libelf-mmap.bin \
test-libdebuginfod.bin \ test-libdebuginfod.bin \
test-libnuma.bin \ test-libnuma.bin \
test-numa_num_possible_cpus.bin \ test-numa_num_possible_cpus.bin \
...@@ -146,9 +145,6 @@ $(OUTPUT)test-dwarf.bin: ...@@ -146,9 +145,6 @@ $(OUTPUT)test-dwarf.bin:
$(OUTPUT)test-dwarf_getlocations.bin: $(OUTPUT)test-dwarf_getlocations.bin:
$(BUILD) $(DWARFLIBS) $(BUILD) $(DWARFLIBS)
$(OUTPUT)test-libelf-mmap.bin:
$(BUILD) -lelf
$(OUTPUT)test-libelf-getphdrnum.bin: $(OUTPUT)test-libelf-getphdrnum.bin:
$(BUILD) -lelf $(BUILD) -lelf
......
...@@ -30,10 +30,6 @@ ...@@ -30,10 +30,6 @@
# include "test-libelf.c" # include "test-libelf.c"
#undef main #undef main
#define main main_test_libelf_mmap
# include "test-libelf-mmap.c"
#undef main
#define main main_test_get_current_dir_name #define main main_test_get_current_dir_name
# include "test-get_current_dir_name.c" # include "test-get_current_dir_name.c"
#undef main #undef main
......
// 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 ...@@ -56,7 +56,7 @@ ifndef VERBOSE
endif endif
FEATURE_USER = .libbpf FEATURE_USER = .libbpf
FEATURE_TESTS = libelf libelf-mmap zlib bpf FEATURE_TESTS = libelf zlib bpf
FEATURE_DISPLAY = 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 INCLUDES = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(ARCH)/include/uapi -I$(srctree)/tools/include/uapi
...@@ -98,10 +98,6 @@ else ...@@ -98,10 +98,6 @@ else
CFLAGS := -g -Wall CFLAGS := -g -Wall
endif endif
ifeq ($(feature-libelf-mmap), 1)
override CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
# Append required CFLAGS # Append required CFLAGS
override CFLAGS += $(EXTRA_WARNINGS) -Wno-switch-enum override CFLAGS += $(EXTRA_WARNINGS) -Wno-switch-enum
override CFLAGS += -Werror -Wall override CFLAGS += -Werror -Wall
......
...@@ -150,12 +150,6 @@ static void pr_perm_msg(int err) ...@@ -150,12 +150,6 @@ static void pr_perm_msg(int err)
___err; }) ___err; })
#endif #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) static inline __u64 ptr_to_u64(const void *ptr)
{ {
return (__u64) (unsigned long) ptr; return (__u64) (unsigned long) ptr;
...@@ -1064,6 +1058,11 @@ static void bpf_object__elf_finish(struct bpf_object *obj) ...@@ -1064,6 +1058,11 @@ static void bpf_object__elf_finish(struct bpf_object *obj)
obj->efile.obj_buf_sz = 0; 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) static int bpf_object__elf_init(struct bpf_object *obj)
{ {
int err = 0; int err = 0;
...@@ -1092,8 +1091,7 @@ static int bpf_object__elf_init(struct bpf_object *obj) ...@@ -1092,8 +1091,7 @@ static int bpf_object__elf_init(struct bpf_object *obj)
return err; return err;
} }
obj->efile.elf = elf_begin(obj->efile.fd, obj->efile.elf = elf_begin(obj->efile.fd, ELF_C_READ_MMAP, NULL);
LIBBPF_ELF_C_READ_MMAP, NULL);
} }
if (!obj->efile.elf) { if (!obj->efile.elf) {
......
...@@ -483,10 +483,6 @@ ifndef NO_LIBELF ...@@ -483,10 +483,6 @@ ifndef NO_LIBELF
EXTLIBS += -lelf EXTLIBS += -lelf
$(call detected,CONFIG_LIBELF) $(call detected,CONFIG_LIBELF)
ifeq ($(feature-libelf-mmap), 1)
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
ifeq ($(feature-libelf-getphdrnum), 1) ifeq ($(feature-libelf-getphdrnum), 1)
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
endif endif
......
...@@ -28,7 +28,7 @@ struct option; ...@@ -28,7 +28,7 @@ struct option;
* libelf 0.8.x and earlier do not support ELF_C_READ_MMAP; * libelf 0.8.x and earlier do not support ELF_C_READ_MMAP;
* for newer versions we can use mmap to reduce memory usage: * 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 # define PERF_ELF_C_READ_MMAP ELF_C_READ_MMAP
#else #else
# define PERF_ELF_C_READ_MMAP ELF_C_READ # define PERF_ELF_C_READ_MMAP ELF_C_READ
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment