From fc6ff81e80008cb1ce691942c021dc0d60aea25a Mon Sep 17 00:00:00 2001
From: Ingmar Steen <iksteen@gmail.com>
Date: Mon, 23 May 2016 17:22:26 +0200
Subject: [PATCH] The aarch64 target is actually little endian.

---
 bindings/python/sample.py | 2 +-
 bindings/ruby/sample.rb   | 2 +-
 kstool/kstool.cpp         | 4 ++--
 llvm/keystone/ks.cpp      | 2 +-
 samples/sample.c          | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/bindings/python/sample.py b/bindings/python/sample.py
index 7a22b2a..cf9c6f4 100755
--- a/bindings/python/sample.py
+++ b/bindings/python/sample.py
@@ -35,7 +35,7 @@ if __name__ == '__main__':
     test_ks(KS_ARCH_ARM, KS_MODE_THUMB + KS_MODE_BIG_ENDIAN, b"movs r4, #0xf0")
 
     # ARM64
-    test_ks(KS_ARCH_ARM64, KS_MODE_BIG_ENDIAN, b"ldr w1, [sp, #0x8]")
+    test_ks(KS_ARCH_ARM64, KS_MODE_LITTLE_ENDIAN, b"ldr w1, [sp, #0x8]")
 
     # Hexagon
     test_ks(KS_ARCH_HEXAGON, KS_MODE_BIG_ENDIAN, b"v23.w=vavg(v11.w,v2.w):rnd")
diff --git a/bindings/ruby/sample.rb b/bindings/ruby/sample.rb
index 61411db..9839fb1 100755
--- a/bindings/ruby/sample.rb
+++ b/bindings/ruby/sample.rb
@@ -36,7 +36,7 @@ test_ks(KS_ARCH_ARM, KS_MODE_THUMB, "movs r4, #0xf0")
 test_ks(KS_ARCH_ARM, KS_MODE_THUMB + KS_MODE_BIG_ENDIAN, "movs r4, #0xf0")
 
 # ARM64
-test_ks(KS_ARCH_ARM64, KS_MODE_BIG_ENDIAN, "ldr w1, [sp, #0x8]")
+test_ks(KS_ARCH_ARM64, KS_MODE_LITTLE_ENDIAN, "ldr w1, [sp, #0x8]")
 
 # Hexagon
 test_ks(KS_ARCH_HEXAGON, KS_MODE_BIG_ENDIAN, "v23.w=vavg(v11.w,v2.w):rnd")
diff --git a/kstool/kstool.cpp b/kstool/kstool.cpp
index 5ef71e7..d8b3700 100644
--- a/kstool/kstool.cpp
+++ b/kstool/kstool.cpp
@@ -146,8 +146,8 @@ int main(int argc, char **argv)
         err = ks_open(KS_ARCH_ARM, KS_MODE_THUMB+KS_MODE_BIG_ENDIAN, &ks);
     }
 
-    if (!strcmp(mode, "arm64be") || !strcmp(mode, "arm64")) {
-        err = ks_open(KS_ARCH_ARM64, KS_MODE_BIG_ENDIAN, &ks);
+    if (!strcmp(mode, "arm64")) {
+        err = ks_open(KS_ARCH_ARM64, KS_MODE_LITTLE_ENDIAN, &ks);
     }
 
     if (!strcmp(mode, "hex") || !strcmp(mode, "hexagon")) {
diff --git a/llvm/keystone/ks.cpp b/llvm/keystone/ks.cpp
index 3b1f7bc..95d768e 100644
--- a/llvm/keystone/ks.cpp
+++ b/llvm/keystone/ks.cpp
@@ -278,7 +278,7 @@ ks_err ks_open(ks_arch arch, int mode, ks_engine **result)
 
 #ifdef LLVM_ENABLE_ARCH_AArch64
             case KS_ARCH_ARM64:
-                if (mode != KS_MODE_BIG_ENDIAN) {
+                if (mode != KS_MODE_LITTLE_ENDIAN) {
                     delete ks;
                     return KS_ERR_MODE;
                 }
diff --git a/samples/sample.c b/samples/sample.c
index 51088ab..0077a3d 100644
--- a/samples/sample.c
+++ b/samples/sample.c
@@ -60,7 +60,7 @@ int main(int argc, char **argv)
     test_ks(KS_ARCH_ARM, KS_MODE_THUMB + KS_MODE_BIG_ENDIAN, "movs r4, #0xf0", 0);
 
     // ARM64
-    test_ks(KS_ARCH_ARM64, KS_MODE_BIG_ENDIAN, "ldr w1, [sp, #0x8]", 0);
+    test_ks(KS_ARCH_ARM64, KS_MODE_LITTLE_ENDIAN, "ldr w1, [sp, #0x8]", 0);
 
     // Hexagon
     test_ks(KS_ARCH_HEXAGON, KS_MODE_BIG_ENDIAN, "v23.w=vavg(v11.w,v2.w):rnd", 0);
-- 
GitLab