mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-02-04 23:42:07 +01:00
230 lines
6.7 KiB
Diff
230 lines
6.7 KiB
Diff
From b9decb69138020fb88e2d85a040ad15445e98d6b Mon Sep 17 00:00:00 2001
|
|
From: Dominique Martinet <dominique.martinet@atmark-techno.com>
|
|
Date: Wed, 17 Mar 2021 14:31:57 +0900
|
|
Subject: [PATCH 1/2] Revert "Revert "libbpf: allow to use packaged version""
|
|
|
|
This reverts commit 7943374ac574b94b00c1c1d30fd106bdf2230140.
|
|
|
|
The original patch has been an ongoing effort from debian that got
|
|
merged once and reverted just before 1.20 release; this will probably
|
|
be droppable soon.
|
|
See https://www.spinics.net/lists/dwarves/msg00732.html
|
|
|
|
---
|
|
CMakeLists.txt | 43 ++++++++++++++++++++++++++++++-------------
|
|
btf_encoder.c | 4 ++--
|
|
btf_loader.c | 2 +-
|
|
lib/include/bpf | 1 +
|
|
libbtf.c | 7 +++----
|
|
libbtf.h | 2 +-
|
|
pahole.c | 2 +-
|
|
pahole_strings.h | 2 +-
|
|
strings.c | 2 +-
|
|
9 files changed, 41 insertions(+), 24 deletions(-)
|
|
create mode 120000 lib/include/bpf
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 7f72c7a5823c..03aba23a8f71 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -2,9 +2,24 @@ project(pahole C)
|
|
cmake_minimum_required(VERSION 2.8.12)
|
|
cmake_policy(SET CMP0005 NEW)
|
|
|
|
+option(LIBBPF_EMBEDDED "Use the embedded version of libbpf instead of searching it via pkg-config" ON)
|
|
+if (NOT LIBBPF_EMBEDDED)
|
|
+ find_package(PkgConfig)
|
|
+ if(PKGCONFIG_FOUND)
|
|
+ pkg_check_modules(LIBBPF libbpf>=0.3.0)
|
|
+ endif()
|
|
+endif()
|
|
+
|
|
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR})
|
|
+if(NOT LIBBPF_FOUND)
|
|
+ # Allows to use 'system' style #include with both embedded and system libbpf
|
|
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib/include)
|
|
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
|
+else()
|
|
+ INCLUDE_DIRECTORIES(${LIBBPF_INCLUDE_DIRS})
|
|
+ LINK_DIRECTORIES(${LIBBPF_LIBRARY_DIRS})
|
|
+endif()
|
|
|
|
# Try to parse this later, Helio just showed me a KDE4 example to support
|
|
# x86-64 builds.
|
|
@@ -56,7 +71,7 @@ if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
-if(NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/bpf/src/btf.h")
|
|
+if(NOT LIBBPF_FOUND AND NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/bpf/src/btf.h")
|
|
message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
|
|
endif()
|
|
|
|
@@ -81,22 +96,24 @@ endif()
|
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64")
|
|
|
|
-file(GLOB libbpf_sources "lib/bpf/src/*.c")
|
|
-add_library(bpf OBJECT ${libbpf_sources})
|
|
-set_property(TARGET bpf PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|
-target_include_directories(bpf PRIVATE
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
|
+if (NOT LIBBPF_FOUND)
|
|
+ file(GLOB libbpf_sources "lib/bpf/src/*.c")
|
|
+ add_library(bpf OBJECT ${libbpf_sources})
|
|
+ set_property(TARGET bpf PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|
+ target_include_directories(bpf PRIVATE
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include)
|
|
+endif()
|
|
|
|
set(dwarves_LIB_SRCS dwarves.c dwarves_fprintf.c gobuffer strings
|
|
ctf_encoder.c ctf_loader.c libctf.c btf_encoder.c btf_loader.c libbtf.c
|
|
dwarf_loader.c dutil.c elf_symtab.c rbtree.c)
|
|
-add_library(dwarves SHARED ${dwarves_LIB_SRCS} $<TARGET_OBJECTS:bpf>)
|
|
+if (NOT LIBBPF_FOUND)
|
|
+ list(APPEND dwarves_LIB_SRCS $<TARGET_OBJECTS:bpf>)
|
|
+endif()
|
|
+add_library(dwarves SHARED ${dwarves_LIB_SRCS})
|
|
set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
|
|
set_target_properties(dwarves PROPERTIES INTERFACE_LINK_LIBRARIES "")
|
|
-target_include_directories(dwarves PRIVATE
|
|
- ${CMAKE_CURRENT_SOURCE_DIR}/lib/bpf/include/uapi)
|
|
-target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES})
|
|
+target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES})
|
|
|
|
set(dwarves_emit_LIB_SRCS dwarves_emit.c)
|
|
add_library(dwarves_emit SHARED ${dwarves_emit_LIB_SRCS})
|
|
diff --git a/btf_encoder.c b/btf_encoder.c
|
|
index b124ec20a689..fadc48d0e300 100644
|
|
--- a/btf_encoder.c
|
|
+++ b/btf_encoder.c
|
|
@@ -11,12 +11,12 @@
|
|
|
|
#include "dwarves.h"
|
|
#include "libbtf.h"
|
|
-#include "lib/bpf/include/uapi/linux/btf.h"
|
|
-#include "lib/bpf/src/libbpf.h"
|
|
#include "hash.h"
|
|
#include "elf_symtab.h"
|
|
#include "btf_encoder.h"
|
|
|
|
+#include <linux/btf.h>
|
|
+#include <bpf/libbpf.h>
|
|
#include <ctype.h> /* for isalpha() and isalnum() */
|
|
#include <stdlib.h> /* for qsort() and bsearch() */
|
|
#include <inttypes.h>
|
|
diff --git a/btf_loader.c b/btf_loader.c
|
|
index ec286f413f36..fa85d0632299 100644
|
|
--- a/btf_loader.c
|
|
+++ b/btf_loader.c
|
|
@@ -20,12 +20,12 @@
|
|
#include <string.h>
|
|
#include <limits.h>
|
|
#include <libgen.h>
|
|
+#include <linux/btf.h>
|
|
#include <zlib.h>
|
|
|
|
#include <gelf.h>
|
|
|
|
#include "libbtf.h"
|
|
-#include "lib/bpf/include/uapi/linux/btf.h"
|
|
#include "dutil.h"
|
|
#include "dwarves.h"
|
|
|
|
diff --git a/lib/include/bpf b/lib/include/bpf
|
|
new file mode 120000
|
|
index 000000000000..4c41b7148c6e
|
|
--- /dev/null
|
|
+++ b/lib/include/bpf
|
|
@@ -0,0 +1 @@
|
|
+../bpf/src
|
|
\ No newline at end of file
|
|
diff --git a/libbtf.c b/libbtf.c
|
|
index 9f7628304495..81b1b36b3956 100644
|
|
--- a/libbtf.c
|
|
+++ b/libbtf.c
|
|
@@ -16,12 +16,11 @@
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
#include <stdarg.h>
|
|
+#include <linux/btf.h>
|
|
+#include <bpf/btf.h>
|
|
+#include <bpf/libbpf.h>
|
|
|
|
#include "libbtf.h"
|
|
-#include "lib/bpf/include/uapi/linux/btf.h"
|
|
-#include "lib/bpf/include/linux/err.h"
|
|
-#include "lib/bpf/src/btf.h"
|
|
-#include "lib/bpf/src/libbpf.h"
|
|
#include "dutil.h"
|
|
#include "gobuffer.h"
|
|
#include "dwarves.h"
|
|
diff --git a/libbtf.h b/libbtf.h
|
|
index 191f5862a695..0b997670c8bc 100644
|
|
--- a/libbtf.h
|
|
+++ b/libbtf.h
|
|
@@ -11,7 +11,7 @@
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
-#include "lib/bpf/src/btf.h"
|
|
+#include <bpf/btf.h>
|
|
|
|
struct btf_elf {
|
|
void *priv;
|
|
diff --git a/pahole.c b/pahole.c
|
|
index 4a34ba5263b6..68dd16670300 100644
|
|
--- a/pahole.c
|
|
+++ b/pahole.c
|
|
@@ -16,6 +16,7 @@
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
+#include <bpf/libbpf.h>
|
|
|
|
#include "dwarves_reorganize.h"
|
|
#include "dwarves.h"
|
|
@@ -23,7 +24,6 @@
|
|
#include "ctf_encoder.h"
|
|
#include "btf_encoder.h"
|
|
#include "libbtf.h"
|
|
-#include "lib/bpf/src/libbpf.h"
|
|
|
|
static bool btf_encode;
|
|
static bool ctf_encode;
|
|
diff --git a/pahole_strings.h b/pahole_strings.h
|
|
index 522fbf21de0d..657701be3587 100644
|
|
--- a/pahole_strings.h
|
|
+++ b/pahole_strings.h
|
|
@@ -6,7 +6,7 @@
|
|
Copyright (C) 2008 Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
*/
|
|
|
|
-#include "lib/bpf/src/btf.h"
|
|
+#include <bpf/btf.h>
|
|
|
|
typedef unsigned int strings_t;
|
|
|
|
diff --git a/strings.c b/strings.c
|
|
index d37f49d77548..8244c49cf2bd 100644
|
|
--- a/strings.c
|
|
+++ b/strings.c
|
|
@@ -13,9 +13,9 @@
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <zlib.h>
|
|
+#include <bpf/libbpf.h>
|
|
|
|
#include "dutil.h"
|
|
-#include "lib/bpf/src/libbpf.h"
|
|
|
|
struct strings *strings__new(void)
|
|
{
|
|
--
|
|
2.30.2
|
|
|