diff --git a/.bpftrace.metadata b/.bpftrace.metadata
index 2b446c6..97a8f2e 100644
--- a/.bpftrace.metadata
+++ b/.bpftrace.metadata
@@ -1 +1 @@
-f35927be0719e7537e10cab1f4bee28705270ff8 SOURCES/bpftrace-0.9.2.tar.gz
+1b1d4e5058e07f82904971e65733791b25ef5263 SOURCES/bpftrace-0.10.0.tar.gz
diff --git a/.gitignore b/.gitignore
index 1edb7c1..03fef87 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/bpftrace-0.9.2.tar.gz
+SOURCES/bpftrace-0.10.0.tar.gz
diff --git a/SOURCES/bpftrace-0.10.0-Add-s390x-register-support.patch b/SOURCES/bpftrace-0.10.0-Add-s390x-register-support.patch
new file mode 100644
index 0000000..8b162b4
--- /dev/null
+++ b/SOURCES/bpftrace-0.10.0-Add-s390x-register-support.patch
@@ -0,0 +1,126 @@
+From 3516f05627b33cb2e6e74965650c6d6c043f78f9 Mon Sep 17 00:00:00 2001
+From: Sumanth Korikkar <sumanthk@linux.ibm.com>
+Date: Mon, 6 Apr 2020 09:23:34 +0200
+Subject: [PATCH] bpftrace: Add s390x register support
+
+Add s390x specific registers. This is needed for bpftrace builtins like argX,
+regs(), retval etc. This commit provides various functions to perform proper
+offset calculation from the pt_regs context. The builtin functions of
+bpftrace uses these offset functions to generate the proper bytecode for s390x
+
+Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
+Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
+---
+ src/arch/CMakeLists.txt |  3 ++
+ src/arch/s390.cpp       | 85 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 88 insertions(+)
+ create mode 100644 src/arch/s390.cpp
+
+diff --git a/src/arch/CMakeLists.txt b/src/arch/CMakeLists.txt
+index 7156276..51707cb 100644
+--- a/src/arch/CMakeLists.txt
++++ b/src/arch/CMakeLists.txt
+@@ -3,6 +3,9 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64" OR
+        CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le")
+     add_library(arch ppc64.cpp)
++elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "s390" OR
++       CMAKE_SYSTEM_PROCESSOR STREQUAL "s390x")
++    add_library(arch s390.cpp)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+     add_library(arch x86_64.cpp)
+ else()
+diff --git a/src/arch/s390.cpp b/src/arch/s390.cpp
+new file mode 100644
+index 0000000..a2278c8
+--- /dev/null
++++ b/src/arch/s390.cpp
+@@ -0,0 +1,85 @@
++#include "arch.h"
++
++#include <algorithm>
++#include <array>
++
++#define REQ_REGISTERS 19
++#define ARG_REGISTERS 5
++
++namespace bpftrace {
++namespace arch {
++
++// clang-format off
++static std::array<std::string, REQ_REGISTERS> registers = {
++  // Breakpoint event address
++  "arg",
++  "pswmask",
++  // Instruction address
++  "pswaddr",
++  "r0",
++  "r1",
++  "r2",
++  "r3",
++  "r4",
++  "r5",
++  "r6",
++  "r7",
++  "r8",
++  "r9",
++  "r10",
++  "r11",
++  "r12",
++  "r13",
++  "r14",
++  "r15",
++};
++
++static std::array<std::string, ARG_REGISTERS> arg_registers = {
++  "r2",
++  "r3",
++  "r4",
++  "r5",
++  "r6",
++};
++// clang-format on
++
++int offset(std::string reg_name)
++{
++  auto it = find(registers.begin(), registers.end(), reg_name);
++  if (it == registers.end())
++    return -1;
++  return distance(registers.begin(), it);
++}
++
++int max_arg()
++{
++  return arg_registers.size() - 1;
++}
++
++int arg_offset(int arg_num)
++{
++  return offset(arg_registers.at(arg_num));
++}
++
++int ret_offset()
++{
++  return offset("r2");
++}
++
++int pc_offset()
++{
++  return offset("pswaddr");
++}
++
++int sp_offset()
++{
++  return offset("r15");
++}
++
++std::string name()
++{
++  return std::string("s390x");
++}
++
++} // namespace arch
++} // namespace bpftrace
+-- 
+2.25.3
+
diff --git a/SOURCES/bpftrace-0.10.0-Fix-KBUILD_MODNAME.patch b/SOURCES/bpftrace-0.10.0-Fix-KBUILD_MODNAME.patch
new file mode 100644
index 0000000..420e7ba
--- /dev/null
+++ b/SOURCES/bpftrace-0.10.0-Fix-KBUILD_MODNAME.patch
@@ -0,0 +1,27 @@
+From 042675755d1ec2446105af700cd9cfb1bace905c Mon Sep 17 00:00:00 2001
+From: Masanori Misono <m.misono760@gmail.com>
+Date: Wed, 27 May 2020 17:54:52 +0900
+Subject: [PATCH] Fix KBUILD_MODNAME
+
+Use "bpftrace" instead of '"bpftrace"'. Previously this causes build
+error if included header files use KBUILD_MODNAME.
+---
+ src/utils.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/utils.cpp b/src/utils.cpp
+index dc82689..cec77cf 100644
+--- a/src/utils.cpp
++++ b/src/utils.cpp
+@@ -363,7 +363,7 @@ std::vector<std::string> get_kernel_cflags(
+   cflags.push_back("-D__HAVE_BUILTIN_BSWAP16__");
+   cflags.push_back("-D__HAVE_BUILTIN_BSWAP32__");
+   cflags.push_back("-D__HAVE_BUILTIN_BSWAP64__");
+-  cflags.push_back("-DKBUILD_MODNAME='\"bpftrace\"'");
++  cflags.push_back("-DKBUILD_MODNAME=\"bpftrace\"");
+ 
+   // If ARCH env variable is set, pass this along.
+   if (archenv)
+-- 
+2.25.4
+
diff --git a/SOURCES/bpftrace-0.10.0-RHEL-8-aarch64-fixes-statsnoop-and-opensnoop.patch b/SOURCES/bpftrace-0.10.0-RHEL-8-aarch64-fixes-statsnoop-and-opensnoop.patch
new file mode 100644
index 0000000..3c1599f
--- /dev/null
+++ b/SOURCES/bpftrace-0.10.0-RHEL-8-aarch64-fixes-statsnoop-and-opensnoop.patch
@@ -0,0 +1,64 @@
+From e9ebda9b3d14831df5e1c5174d21f322e084d074 Mon Sep 17 00:00:00 2001
+From: Jerome Marchand <jmarchan@redhat.com>
+Date: Thu, 11 Jun 2020 14:56:36 +0200
+Subject: [PATCH] RHEL-8: aarch64: fixes statsnoop and opensnoop
+
+On aarch64 the open syscall has been dropped. Only openat remains,
+wich is called by libc open() function.
+
+The state of *stat* syscalls, is a mess. They are several generations
+of the system calls, and not all arches provides all of them. For
+instance, new(l)stat are missing from aarch64.
+
+The only way I can think of fixing thess is RHEL-8 only arch specific
+patches.
+---
+ tools/opensnoop.bt | 2 --
+ tools/statsnoop.bt | 8 ++------
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/tools/opensnoop.bt b/tools/opensnoop.bt
+index a7de802..d99db93 100755
+--- a/tools/opensnoop.bt
++++ b/tools/opensnoop.bt
+@@ -21,13 +21,11 @@ BEGIN
+ 	printf("%-6s %-16s %4s %3s %s\n", "PID", "COMM", "FD", "ERR", "PATH");
+ }
+ 
+-tracepoint:syscalls:sys_enter_open,
+ tracepoint:syscalls:sys_enter_openat
+ {
+ 	@filename[tid] = args->filename;
+ }
+ 
+-tracepoint:syscalls:sys_exit_open,
+ tracepoint:syscalls:sys_exit_openat
+ /@filename[tid]/
+ {
+diff --git a/tools/statsnoop.bt b/tools/statsnoop.bt
+index b2d529e..f612ea9 100755
+--- a/tools/statsnoop.bt
++++ b/tools/statsnoop.bt
+@@ -30,17 +30,13 @@ tracepoint:syscalls:sys_enter_statfs
+ 	@filename[tid] = args->pathname;
+ }
+ 
+-tracepoint:syscalls:sys_enter_statx,
+-tracepoint:syscalls:sys_enter_newstat,
+-tracepoint:syscalls:sys_enter_newlstat
++tracepoint:syscalls:sys_enter_statx
+ {
+ 	@filename[tid] = args->filename;
+ }
+ 
+ tracepoint:syscalls:sys_exit_statfs,
+-tracepoint:syscalls:sys_exit_statx,
+-tracepoint:syscalls:sys_exit_newstat,
+-tracepoint:syscalls:sys_exit_newlstat
++tracepoint:syscalls:sys_exit_statx
+ /@filename[tid]/
+ {
+ 	$ret = args->ret;
+-- 
+2.25.4
+
diff --git a/SOURCES/bpftrace-0.10.0-RHEL-8-fixes.patch b/SOURCES/bpftrace-0.10.0-RHEL-8-fixes.patch
new file mode 100644
index 0000000..7c4becf
--- /dev/null
+++ b/SOURCES/bpftrace-0.10.0-RHEL-8-fixes.patch
@@ -0,0 +1,56 @@
+From a09a2f06d6316801e89e7f676d0839910aea765d Mon Sep 17 00:00:00 2001
+From: Jerome Marchand <jmarchan@redhat.com>
+Date: Tue, 11 Jun 2019 16:41:59 +0200
+Subject: [PATCH] RHEL 8 fixes
+
+Fixes the following RHEL 8 specific issues:
+ - library path in gethostlatency and threadsnoop
+---
+ tools/gethostlatency.bt | 12 ++++++------
+ tools/threadsnoop.bt    |  2 +-
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/tools/gethostlatency.bt b/tools/gethostlatency.bt
+index a1ac1b2..ade1005 100755
+--- a/tools/gethostlatency.bt
++++ b/tools/gethostlatency.bt
+@@ -26,17 +26,17 @@ BEGIN
+ 	    "HOST");
+ }
+ 
+-uprobe:/lib/x86_64-linux-gnu/libc.so.6:getaddrinfo,
+-uprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname,
+-uprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname2
++uprobe:/lib64/libc.so.6:getaddrinfo,
++uprobe:/lib64/libc.so.6:gethostbyname,
++uprobe:/lib64/libc.so.6:gethostbyname2
+ {
+ 	@start[tid] = nsecs;
+ 	@name[tid] = arg0;
+ }
+ 
+-uretprobe:/lib/x86_64-linux-gnu/libc.so.6:getaddrinfo,
+-uretprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname,
+-uretprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname2
++uretprobe:/lib64/libc.so.6:getaddrinfo,
++uretprobe:/lib64/libc.so.6:gethostbyname,
++uretprobe:/lib64/libc.so.6:gethostbyname2
+ /@start[tid]/
+ {
+ 	$latms = (nsecs - @start[tid]) / 1000000;
+diff --git a/tools/threadsnoop.bt b/tools/threadsnoop.bt
+index e4d3875..c56b1ac 100755
+--- a/tools/threadsnoop.bt
++++ b/tools/threadsnoop.bt
+@@ -18,7 +18,7 @@ BEGIN
+ 	printf("%-10s %-6s %-16s %s\n", "TIME(ms)", "PID", "COMM", "FUNC");
+ }
+ 
+-uprobe:/lib/x86_64-linux-gnu/libpthread.so.0:pthread_create
++uprobe:/usr/lib64/libpthread.so:pthread_create
+ {
+ 	printf("%-10u %-6d %-16s %s\n", elapsed / 1000000, pid, comm,
+ 	    usym(arg2));
+-- 
+2.25.4
+
diff --git a/SOURCES/bpftrace-0.10.0-Remove-RLIMIT_AS-limit.patch b/SOURCES/bpftrace-0.10.0-Remove-RLIMIT_AS-limit.patch
new file mode 100644
index 0000000..95c4f22
--- /dev/null
+++ b/SOURCES/bpftrace-0.10.0-Remove-RLIMIT_AS-limit.patch
@@ -0,0 +1,73 @@
+From 604c9d5619ca01a46c208a70b7beec3041ba77a9 Mon Sep 17 00:00:00 2001
+From: Daniel Xu <dxu@dxuuu.xyz>
+Date: Thu, 28 May 2020 23:12:47 -0700
+Subject: [PATCH] Remove RLIMIT_AS limit
+
+We haven't seen any OOM issues in a while so I suspect either our type
+fixes in bpftrace or upstream llvm changes have resolved the issue.
+
+This closes #1355.
+---
+ src/CMakeLists.txt |  1 -
+ src/main.cpp       | 26 --------------------------
+ 2 files changed, 27 deletions(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 4fa0418..ac040f4 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -99,7 +99,6 @@ if (BUILD_ASAN)
+     # target_link_options is supported in CMake 3.13 and newer
+     message("Please use CMake 3.13 or newer to enable ASAN")
+   endif()
+-  target_compile_definitions(bpftrace PRIVATE BUILD_ASAN)
+   target_compile_options(bpftrace PUBLIC "-fsanitize=address")
+   target_link_options(bpftrace PUBLIC "-fsanitize=address")
+ endif()
+diff --git a/src/main.cpp b/src/main.cpp
+index 4ff9d37..d92ea8d 100644
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -92,30 +92,6 @@ static void enforce_infinite_rlimit() {
+         "\"ulimit -l 8192\" to fix the problem" << std::endl;
+ }
+ 
+-#ifdef BUILD_ASAN
+-static void cap_memory_limits()
+-{
+-}
+-#else
+-static void cap_memory_limits() {
+-  struct rlimit rl = {};
+-  int err;
+-  uint64_t memory_limit_bytes = 1 * 1024 * 1024 * 1024;
+-
+-  // this is a safety measure for issue #528 "LLVM ERROR: out of memory",
+-  // and caps bpftrace memory to 1 Gbyte. This may be removed once the LLVM
+-  // issue has been fixed, and this is no longer deemed necessary.
+-  rl.rlim_max = memory_limit_bytes;
+-  rl.rlim_cur = rl.rlim_max;
+-  err = setrlimit(RLIMIT_AS, &rl);
+-  err += setrlimit(RLIMIT_RSS, &rl);
+-  if (err)
+-    std::cerr << std::strerror(err)<<": couldn't set RLIMIT_AS and " <<
+-        "RLIMIT_RSS for bpftrace (these are a temporary precaution to stop " <<
+-        "accidental large program loads, and are not required" << std::endl;
+-}
+-#endif // BUILD_ASAN
+-
+ bool is_root()
+ {
+   if (geteuid() != 0)
+@@ -425,8 +401,6 @@ int main(int argc, char *argv[])
+   // rlimit?
+   enforce_infinite_rlimit();
+ 
+-  cap_memory_limits();
+-
+   // positional parameters
+   while (optind < argc) {
+     bpftrace.add_param(argv[optind]);
+-- 
+2.25.4
+
diff --git a/SOURCES/bpftrace-0.9.2-RHEL-8-fixes.patch b/SOURCES/bpftrace-0.9.2-RHEL-8-fixes.patch
deleted file mode 100644
index b15f98a..0000000
--- a/SOURCES/bpftrace-0.9.2-RHEL-8-fixes.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 1dce61acfec57712f84cfdf2a8f4c69d27744b04 Mon Sep 17 00:00:00 2001
-From: Jerome Marchand <jmarchan@redhat.com>
-Date: Tue, 11 Jun 2019 16:41:59 +0200
-Subject: RHEL 8 fixes
-
-Fixes the following RHEL 8 specific issues:
- - library path in gethostlatency
-
----
- tools/gethostlatency.bt | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/tools/gethostlatency.bt b/tools/gethostlatency.bt
-index a1ac1b2..ade1005 100755
---- a/tools/gethostlatency.bt
-+++ b/tools/gethostlatency.bt
-@@ -26,17 +26,17 @@ BEGIN
- 	    "HOST");
- }
- 
--uprobe:/lib/x86_64-linux-gnu/libc.so.6:getaddrinfo,
--uprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname,
--uprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname2
-+uprobe:/lib64/libc.so.6:getaddrinfo,
-+uprobe:/lib64/libc.so.6:gethostbyname,
-+uprobe:/lib64/libc.so.6:gethostbyname2
- {
- 	@start[tid] = nsecs;
- 	@name[tid] = arg0;
- }
- 
--uretprobe:/lib/x86_64-linux-gnu/libc.so.6:getaddrinfo,
--uretprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname,
--uretprobe:/lib/x86_64-linux-gnu/libc.so.6:gethostbyname2
-+uretprobe:/lib64/libc.so.6:getaddrinfo,
-+uretprobe:/lib64/libc.so.6:gethostbyname,
-+uretprobe:/lib64/libc.so.6:gethostbyname2
- /@start[tid]/
- {
- 	$latms = (nsecs - @start[tid]) / 1000000;
--- 
-2.20.1
-
diff --git a/SPECS/bpftrace.spec b/SPECS/bpftrace.spec
index d1aa05e..c18ce6c 100644
--- a/SPECS/bpftrace.spec
+++ b/SPECS/bpftrace.spec
@@ -1,14 +1,20 @@
 %bcond_without llvm_static
 
 Name:           bpftrace
-Version:        0.9.2
-Release:        1%{?dist}
+Version:        0.10.0
+Release:        4%{?dist}
 Summary:        High-level tracing language for Linux eBPF
 License:        ASL 2.0
 
 URL:            https://github.com/iovisor/bpftrace
 Source0:        %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
 Patch0:         %{name}-%{version}-RHEL-8-fixes.patch
+Patch1:         %{name}-%{version}-Add-s390x-register-support.patch
+Patch2:         %{name}-%{version}-Remove-RLIMIT_AS-limit.patch
+Patch3:         %{name}-%{version}-Fix-KBUILD_MODNAME.patch
+# WARNING: because of the arch-specific patch, no autosetup is used
+# Remember to patch accordingly
+Patch10:        %{name}-%{version}-RHEL-8-aarch64-fixes-statsnoop-and-opensnoop.patch
 
 # Arches will be included as upstream support is added and dependencies are
 # satisfied in the respective arches
@@ -39,8 +45,16 @@ and predecessor tracers such as DTrace and SystemTap
 
 
 %prep
-%autosetup -p1
+%setup
 
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+
+%ifarch aarch64
+%patch10 -p1
+%endif
 
 %build
 %cmake . \
@@ -59,8 +73,8 @@ find %{buildroot}%{_datadir}/%{name}/tools -type f -exec \
   sed -i -e '1s=^#!/usr/bin/env %{name}\([0-9.]\+\)\?$=#!%{_bindir}/%{name}=' {} \;
 
 # Move man pages to the right location
-mkdir -p %{buildroot}%{_mandir}
-mv %{buildroot}%{_prefix}/man/* %{buildroot}%{_mandir}/
+#mkdir -p %{buildroot}%{_mandir}
+#mv %{buildroot}%{_prefix}/man/* %{buildroot}%{_mandir}/
 
 
 %files
@@ -74,9 +88,28 @@ mv %{buildroot}%{_prefix}/man/* %{buildroot}%{_mandir}/
 %{_mandir}/man8/*
 %attr(0755,-,-) %{_datadir}/%{name}/tools/*.bt
 %{_datadir}/%{name}/tools/doc/*.txt
-
+# tcp_drop() is inlined on ppc64
+%ifarch %{power64}
+%exclude %{_datadir}/%{name}/tools/tcpdrop.bt
+%exclude %{_datadir}/%{name}/tools/doc/tcpdrop_example.txt
+%exclude %{_mandir}/man8/tcpdrop.8.gz
+%endif
 
 %changelog
+* Thu Jun 11 2020 Jerome Marchand <jmarchan@redhat.com> - 0.10.0-4
+- Fix KBUILD_MODNAME
+
+* Thu Jun 11 2020 Jerome Marchand <jmarchan@redhat.com> - 0.10.0-3
+- Fix ENOMEM issue on arm64 machine with many cpus
+- Fix statsnoop and opensnoop on aarch64
+- Drop tcpdrop on ppc64
+
+* Tue May 05 2020 Jerome Marchand <jmarchan@redhat.com> - 0.10.0-2
+- Fix libpthread path in threadsnoop
+
+* Wed Apr 22 2020 Jerome Marchand <jmarchan@redhat.com> - 0.10.0-1
+- Rebase on bpftrace 0.10.0
+
 * Fri Nov 08 2019 Jerome Marchand <jmarchan@redhat.com> - 0.9.2-1
 - Rebase on bpftrace 0.9.2