diff --git a/testing/bcc/10-include-stddef.patch b/testing/bcc/10-include-stddef.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6751c69aa4b85c86fcacb766fcac0a40d98b668a
--- /dev/null
+++ b/testing/bcc/10-include-stddef.patch
@@ -0,0 +1,48 @@
+diff --git a/src/cc/api/BPF.cc b/src/cc/api/BPF.cc
+index 473784c0..e3fb2d3f 100644
+--- a/src/cc/api/BPF.cc
++++ b/src/cc/api/BPF.cc
+@@ -15,6 +15,7 @@
+  */
+ 
+ #include <linux/bpf.h>
++#include <linux/stddef.h>
+ #include <linux/perf_event.h>
+ #include <unistd.h>
+ #include <cstdio>
+diff --git a/src/cc/api/BPFTable.cc b/src/cc/api/BPFTable.cc
+index 67e8a8f2..eab58610 100644
+--- a/src/cc/api/BPFTable.cc
++++ b/src/cc/api/BPFTable.cc
+@@ -16,6 +16,7 @@
+ 
+ #include <fcntl.h>
+ #include <linux/elf.h>
++#include <linux/stddef.h>
+ #include <linux/perf_event.h>
+ #include <sys/epoll.h>
+ #include <unistd.h>
+diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c
+index 9b0024dc..1aa6c9a6 100644
+--- a/src/cc/libbpf.c
++++ b/src/cc/libbpf.c
+@@ -25,6 +25,7 @@
+ #include <linux/bpf.h>
+ #include <linux/bpf_common.h>
+ #include <linux/if_packet.h>
++#include <linux/stddef.h>
+ #include <linux/perf_event.h>
+ #include <linux/pkt_cls.h>
+ #include <linux/rtnetlink.h>
+diff --git a/src/cc/perf_reader.c b/src/cc/perf_reader.c
+index 3cab0153..c378559e 100644
+--- a/src/cc/perf_reader.c
++++ b/src/cc/perf_reader.c
+@@ -25,6 +25,7 @@
+ #include <sys/mman.h>
+ #include <sys/types.h>
+ #include <unistd.h>
++#include <linux/stddef.h>
+ #include <linux/perf_event.h>
+ 
+ #include "libbpf.h"
diff --git a/testing/bcc/20-libbpf-include-stddef.patch b/testing/bcc/20-libbpf-include-stddef.patch
new file mode 100644
index 0000000000000000000000000000000000000000..34523b230695e0497a6c714ce23cd94146848976
--- /dev/null
+++ b/testing/bcc/20-libbpf-include-stddef.patch
@@ -0,0 +1,12 @@
+diff --git a/src/cc/libbpf/src/libbpf.c b/src/cc/libbpf/src/libbpf.c
+index b38dcbe..bc3ac5d 100644
+--- a/src/cc/libbpf/src/libbpf.c
++++ b/src/cc/libbpf/src/libbpf.c
+@@ -29,6 +29,7 @@
+ #include <linux/filter.h>
+ #include <linux/list.h>
+ #include <linux/limits.h>
++#include <linux/stddef.h>
+ #include <linux/perf_event.h>
+ #include <linux/ring_buffer.h>
+ #include <sys/stat.h>
diff --git a/testing/bcc/20-use-system-libbpf.patch b/testing/bcc/20-use-system-libbpf.patch
new file mode 100644
index 0000000000000000000000000000000000000000..8f1b0c3fe56dd5f8a99f2227fcd3bedc3052e6cd
--- /dev/null
+++ b/testing/bcc/20-use-system-libbpf.patch
@@ -0,0 +1,132 @@
+diff --git a/introspection/CMakeLists.txt b/introspection/CMakeLists.txt
+index 88df6e84..22f934f2 100644
+--- a/introspection/CMakeLists.txt
++++ b/introspection/CMakeLists.txt
+@@ -3,11 +3,11 @@
+ 
+ include_directories(${CMAKE_SOURCE_DIR}/src/cc)
+ include_directories(${CMAKE_SOURCE_DIR}/src/cc/api)
+-include_directories(${CMAKE_SOURCE_DIR}/src/cc/libbpf/include/uapi)
++include_directories(/usr/include/uapi)
+ 
+ option(INSTALL_INTROSPECTION "Install BPF introspection tools" ON)
+ 
+ add_executable(bps bps.c)
+-target_link_libraries(bps bpf-static)
++target_link_libraries(bps bccbpf-static)
+ 
+ install (TARGETS bps DESTINATION share/bcc/introspection)
+diff --git a/introspection/bps.c b/introspection/bps.c
+index 4993b8e7..61fc6693 100644
+--- a/introspection/bps.c
++++ b/introspection/bps.c
+@@ -8,6 +8,7 @@
+ #include <unistd.h>
+ #include <ctype.h>
+ #include <sysexits.h>
++#include <linux/bpf.h>
+ 
+ #include "libbpf.h"
+ 
+diff --git a/src/cc/CMakeLists.txt b/src/cc/CMakeLists.txt
+index 59a59856..8dd3535d 100644
+--- a/src/cc/CMakeLists.txt
++++ b/src/cc/CMakeLists.txt
+@@ -10,8 +10,8 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/frontends/clang)
+ include_directories(${LLVM_INCLUDE_DIRS})
+ include_directories(${LIBELF_INCLUDE_DIRS})
+ # todo: if check for kernel version
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libbpf/include)
+-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libbpf/include/uapi)
++include_directories(/usr/include)
++include_directories(/usr/include/uapi)
+ add_definitions(${LLVM_DEFINITIONS})
+ configure_file(libbcc.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libbcc.pc @ONLY)
+ 
+@@ -28,12 +28,13 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLLVM_MAJOR_VERSION=${CMAKE_MATCH_1}")
+ 
+ include(static_libstdc++)
+ 
+-file(GLOB libbpf_sources "libbpf/src/*.c")
+-add_library(bpf-static STATIC libbpf.c perf_reader.c ${libbpf_sources})
+-set_target_properties(bpf-static PROPERTIES OUTPUT_NAME bpf)
+-add_library(bpf-shared SHARED libbpf.c perf_reader.c ${libbpf_sources})
+-set_target_properties(bpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
+-set_target_properties(bpf-shared PROPERTIES OUTPUT_NAME bpf)
++add_library(bccbpf-static STATIC libbpf.c perf_reader.c)
++set_target_properties(bccbpf-static PROPERTIES OUTPUT_NAME bccbpf)
++target_link_libraries(bccbpf-static bpf)
++add_library(bccbpf-shared SHARED libbpf.c perf_reader.c)
++set_target_properties(bccbpf-shared PROPERTIES VERSION ${REVISION_LAST} SOVERSION 0)
++set_target_properties(bccbpf-shared PROPERTIES OUTPUT_NAME bccbpf)
++target_link_libraries(bccbpf-shared bpf)
+ 
+ set(bcc_common_sources bcc_common.cc bpf_module.cc bcc_btf.cc exported_files.cc)
+ if (${LLVM_PACKAGE_VERSION} VERSION_EQUAL 6 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 6)
+@@ -79,11 +80,11 @@ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${llvm_lib_exclude_f
+ 
+ # bcc_common_libs_for_a for archive libraries
+ # bcc_common_libs_for_s for shared libraries
+-set(bcc_common_libs_for_a b_frontend clang_frontend bpf-static
++set(bcc_common_libs_for_a b_frontend clang_frontend bccbpf-static bpf
+   -Wl,--whole-archive ${clang_libs} ${llvm_libs} -Wl,--no-whole-archive
+   ${LIBELF_LIBRARIES})
+ set(bcc_common_libs_for_s ${bcc_common_libs_for_a})
+-set(bcc_common_libs_for_lua b_frontend clang_frontend bpf-static
++set(bcc_common_libs_for_lua b_frontend clang_frontend bccbpf-static bpf
+   ${clang_libs} ${llvm_libs} ${LIBELF_LIBRARIES})
+ 
+ if(ENABLE_CPP_API)
+@@ -115,4 +116,4 @@ install(DIRECTORY libbpf/include/uapi/linux/ DESTINATION include/bcc/compat/linu
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libbcc.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ endif(ENABLE_CLANG_JIT)
+ install(FILES ${bcc_common_headers} DESTINATION include/bcc)
+-install(TARGETS bpf-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(TARGETS bccbpf-shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc
+index 881959af..0c6d86a2 100644
+--- a/src/cc/bcc_btf.cc
++++ b/src/cc/bcc_btf.cc
+@@ -17,10 +17,12 @@
+ #include "bcc_btf.h"
+ #include <stdarg.h>
+ #include <string.h>
++
++#include <linux/bpf.h>
+ #include "linux/btf.h"
+ #include "libbpf.h"
+-#include "libbpf/src/libbpf.h"
+-#include "libbpf/src/btf.h"
++#include "bpf/libbpf.h"
++#include "bpf/btf.h"
+ #include <vector>
+ 
+ #define BCC_MAX_ERRNO       4095
+diff --git a/src/cc/bpf_module.cc b/src/cc/bpf_module.cc
+index cf6ea8f3..c5684b84 100644
+--- a/src/cc/bpf_module.cc
++++ b/src/cc/bpf_module.cc
+@@ -43,7 +43,7 @@
+ #include "exported_files.h"
+ #include "libbpf.h"
+ #include "bcc_btf.h"
+-#include "libbpf/src/bpf.h"
++#include "bpf/bpf.h"
+ 
+ namespace ebpf {
+ 
+diff --git a/src/cc/libbpf.c b/src/cc/libbpf.c
+index 9b0024dc..69452623 100644
+--- a/src/cc/libbpf.c
++++ b/src/cc/libbpf.c
+@@ -51,8 +51,8 @@
+ // TODO: Remove this when CentOS 6 support is not needed anymore
+ #include "setns.h"
+ 
+-#include "libbpf/src/bpf.h"
+-#include "libbpf/src/libbpf.h"
++#include "bpf/bpf.h"
++#include "bpf/libbpf.h"
+ 
+ // TODO: remove these defines when linux-libc-dev exports them properly
+ 
diff --git a/testing/bcc/APKBUILD b/testing/bcc/APKBUILD
index 5d85b03a3a2fb66d43cfb2572309010b77b461a4..01e5d5f28eaf76f14f00a2fd6319e35753af3056 100644
--- a/testing/bcc/APKBUILD
+++ b/testing/bcc/APKBUILD
@@ -1,17 +1,27 @@
 # Maintainer: Adam Jensen <acjensen@gmail.com>
 pkgname=bcc
-pkgver=0.8.0
+pkgver=0.9.0
 pkgrel=0
 pkgdesc="A toolkit for creating efficient kernel tracing and manipulation programs"
 url="https://github.com/iovisor/bcc/"
-arch="aarch64 x86_64"
+arch="aarch64 x86 x86_64"
 license="Apache-2.0"
 # bcc's test suite requires privileged access to run BPF programs
 options="!check"
-depends="python"
+depends="libbpf python"
 makedepends="tar git llvm7-dev llvm7-static clang-dev clang-static cmake flex-dev
-	bison luajit-dev build-base iperf linux-headers elfutils-dev zlib-dev"
-source="$pkgname-$pkgver.tar.gz::https://github.com/iovisor/$pkgname/archive/v$pkgver.tar.gz"
+	bison luajit-dev build-base iperf linux-headers elfutils-dev zlib-dev
+	libbpf-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/iovisor/$pkgname/archive/v$pkgver.tar.gz
+	10-include-stddef.patch
+	20-use-system-libbpf.patch"
+
+prepare() {
+	rm -rf tests/* && touch tests/CMakeLists.txt
+	rm -rf examples/* && touch examples/CMakeLists.txt
+
+	default_prepare
+}
 
 build() {
 	mkdir -p "$builddir/build"
@@ -25,4 +35,6 @@ package() {
 	make install DESTDIR="$pkgdir"
 }
 
-sha512sums="e46bd8076f6a440b05fd4f94e14d05365d685bfef43d466831a82891a1c131aed22028d29e5be5dd957f00fc3e31d84a96021adf90ae7dbcd7bbf888a7c19774  bcc-0.8.0.tar.gz"
+sha512sums="373080181380ec3bcb13469e29ff1f792e924a2df00a614da4647ed54060ad216525dd0f49c5d0afba7946a6d2f4e3475af97250a33db825945af3d165294091  bcc-0.9.0.tar.gz
+5c2b470b107365bd4fb9465909190d3c7d253a45d61b420e09d719906e6f8d90c99e012857ab03ee09e3348c598ac4feb1296011f845a158944e158571503015  10-include-stddef.patch
+c7cf67ff8fe3437b62c50cc54de612e7d3af294cc3c7c271acc6826ea39e0dcf6edcae48f8f8834ea3527cc8ce3f7693bc6ad74b395f8dd709052cd720d02e79  20-use-system-libbpf.patch"