Snap for 11692525 from 354c0ca1eed213523c93bd6db7e838769ee967fe to sdk-release

Change-Id: Iadf7fea30c70c22e40f99bdb962fc78c07f6c93d
diff --git a/tools/Android.bp b/tools/Android.bp
index 62b3a88..3a3e9c6 100644
--- a/tools/Android.bp
+++ b/tools/Android.bp
@@ -45,6 +45,11 @@
     data: [
         "testdata/arch_64.json",
     ],
+    version: {
+        py3: {
+            embedded_launcher: true,
+        },
+    },
 }
 
 python_test_host {
@@ -60,6 +65,11 @@
     data: [
         "testdata/arch_64.json",
     ],
+    version: {
+        py3: {
+            embedded_launcher: true,
+        },
+    },
 }
 
 python_binary_host {
diff --git a/tools/arch.py b/tools/arch.py
index ac2f32b..b245f38 100644
--- a/tools/arch.py
+++ b/tools/arch.py
@@ -45,12 +45,17 @@
     def load_from_json(json_path):
         """Return an Arch from a .json file."""
         with open(json_path, 'r') as json_file:
-            constants = json.load(json_file)
-            return Arch(
-                arch_nr=constants['arch_nr'],
-                arch_name=constants['arch_name'],
-                bits=constants['bits'],
-                syscalls=constants['syscalls'],
-                constants=constants['constants'],
-                syscall_groups=constants.get('syscall_groups', {}),
-            )
+            return Arch.load_from_json_bytes(json_file.read())
+
+    @staticmethod
+    def load_from_json_bytes(json_bytes):
+        """Return an Arch from a json string."""
+        constants = json.loads(json_bytes)
+        return Arch(
+            arch_nr=constants["arch_nr"],
+            arch_name=constants["arch_name"],
+            bits=constants["bits"],
+            syscalls=constants["syscalls"],
+            constants=constants["constants"],
+            syscall_groups=constants.get("syscall_groups", {}),
+        )
diff --git a/tools/compiler_unittest.py b/tools/compiler_unittest.py
index 19ca72f..993de59 100755
--- a/tools/compiler_unittest.py
+++ b/tools/compiler_unittest.py
@@ -23,15 +23,16 @@
 import shutil
 import tempfile
 import unittest
+from importlib import resources
 
 import arch
 import bpf
 import compiler
 import parser  # pylint: disable=wrong-import-order
 
-ARCH_64 = arch.Arch.load_from_json(
-    os.path.join(
-        os.path.dirname(os.path.abspath(__file__)), 'testdata/arch_64.json'))
+ARCH_64 = arch.Arch.load_from_json_bytes(
+    resources.files("testdata").joinpath("arch_64.json").read_bytes()
+)
 
 
 class CompileFilterStatementTests(unittest.TestCase):
diff --git a/tools/parser_unittest.py b/tools/parser_unittest.py
index 9e7d6d8..5e7c8a2 100755
--- a/tools/parser_unittest.py
+++ b/tools/parser_unittest.py
@@ -24,14 +24,15 @@
 import shutil
 import tempfile
 import unittest
+from importlib import resources
 
 import arch
 import bpf
 import parser  # pylint: disable=wrong-import-order
 
-ARCH_64 = arch.Arch.load_from_json(
-    os.path.join(
-        os.path.dirname(os.path.abspath(__file__)), 'testdata/arch_64.json'))
+ARCH_64 = arch.Arch.load_from_json_bytes(
+    resources.files("testdata").joinpath("arch_64.json").read_bytes()
+)
 
 
 class TokenizerTests(unittest.TestCase):