diff --git a/src/linux/frida-helper-backend.vala b/src/linux/frida-helper-backend.vala index 38b72bb41..d8215beec 100644 --- a/src/linux/frida-helper-backend.vala +++ b/src/linux/frida-helper-backend.vala @@ -1996,7 +1996,7 @@ namespace Frida { else breakpoint_data = (uint8[]) &arm_breakpoint_val; #elif ARM64 - uint32 breakpoint_val = 0xd4200000U; + uint32 breakpoint_val = (0xd4200000U).to_little_endian (); breakpoint_data = (uint8[]) &breakpoint_val; #elif MIPS uint32 breakpoint_val = 0x0000000dU; diff --git a/src/linux/helpers/bootstrapper-arm64be.bin b/src/linux/helpers/bootstrapper-arm64be.bin new file mode 100644 index 000000000..5b67e6dd6 Binary files /dev/null and b/src/linux/helpers/bootstrapper-arm64be.bin differ diff --git a/src/linux/helpers/loader-arm64be.bin b/src/linux/helpers/loader-arm64be.bin new file mode 100644 index 000000000..8346b742e Binary files /dev/null and b/src/linux/helpers/loader-arm64be.bin differ diff --git a/src/meson.build b/src/meson.build index 88ff56078..34a212a96 100644 --- a/src/meson.build +++ b/src/meson.build @@ -321,6 +321,8 @@ if have_local_backend endif if host_lowlevel_abi == 'arm' and host_machine.endian() == 'big' host_lowlevel_abi = 'armbe8' + elif host_lowlevel_abi == 'arm64' and host_machine.endian() == 'big' + host_lowlevel_abi = 'arm64be' endif fs = import('fs') helper_backend_data = custom_target('frida-data-helper-backend',