diff --git a/async-profiler/libasyncProfiler-linux-aarch64.so b/async-profiler/libasyncProfiler-linux-aarch64.so new file mode 100755 index 000000000..2dfd66a01 Binary files /dev/null and b/async-profiler/libasyncProfiler-linux-aarch64.so differ diff --git a/common/src/main/java/com/taobao/arthas/common/OSUtils.java b/common/src/main/java/com/taobao/arthas/common/OSUtils.java index 7c831e018..d167377a4 100644 --- a/common/src/main/java/com/taobao/arthas/common/OSUtils.java +++ b/common/src/main/java/com/taobao/arthas/common/OSUtils.java @@ -59,10 +59,14 @@ public class OSUtils { return arch; } - public static boolean isArm() { + public static boolean isArm32() { return "arm_32".equals(arch); } + public static boolean isArm64() { + return "aarch_64".equals(arch); + } + private static String normalizeArch(String value) { value = normalize(value); if (value.matches("^(x8664|amd64|ia32e|em64t|x64)$")) { diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java index e12f2266d..c41cdd67f 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/ProfilerCommand.java @@ -125,8 +125,10 @@ public class ProfilerCommand extends AnnotatedCommand { } if (OSUtils.isLinux()) { profierSoPath = "async-profiler/libasyncProfiler-linux-x64.so"; - if (OSUtils.isArm()) { + if (OSUtils.isArm32()) { profierSoPath = "async-profiler/libasyncProfiler-linux-arm.so"; + } else if (OSUtils.isArm64()) { + profierSoPath = "async-profiler/libasyncProfiler-linux-aarch64.so"; } }