diff --git a/proxyclient/m1n1/loadobjs.py b/proxyclient/m1n1/loadobjs.py
index ef567b3..c06fc16 100644
--- a/proxyclient/m1n1/loadobjs.py
+++ b/proxyclient/m1n1/loadobjs.py
@@ -5,13 +5,14 @@
 import tempfile
 import bisect
 
-from .asm import NM, LD, OBJCOPY, ARMAsm
+from .toolchain import Toolchain
 
 __all__ = ["LinkedProgram"]
 
+_toolchain = Toolchain()
 
 def tool_output_lines(progname, *args):
-    with subprocess.Popen([progname.replace("%ARCH", ARMAsm.ARCH)] + list(args),
+    with subprocess.Popen([progname] + list(args),
             stdout=subprocess.PIPE) as proc:
         for line in proc.stdout:
             yield line.decode("ascii")
@@ -20,7 +21,7 @@
             raise Exception(f"{progname} (args: {args}) exited with status {proc.returncode}")
 
 def run_tool(progname, *args, silent=False):
-    subprocess.check_call([progname.replace("%ARCH", ARMAsm.ARCH)] + list(args),
+    subprocess.check_call([progname] + list(args),
                         stdout=subprocess.DEVNULL if silent else None)
 
 
@@ -50,7 +51,7 @@
 
         tmp = os.path.join(tempfile.mkdtemp(), "bin")
         path = os.path.join(self.SOURCE_ROOT, self.base_object)
-        run_tool(OBJCOPY, "-O", "binary", path, tmp, "--only-section=.rela.dyn")
+        run_tool(_toolchain.OBJCOPY, "-O", "binary", path, tmp, "--only-section=.rela.dyn")
         rela_objfile = open(tmp, "rb").read()
 
         if rela_objfile[:len(rela_target)] != rela_target:
@@ -65,7 +66,7 @@
         path = pathlib.Path(self.SOURCE_ROOT, relpath)
         symaddrs = dict()
 
-        for line in tool_output_lines(NM, "-g", path):
+        for line in tool_output_lines(_toolchain.NM, "-g", path):
             addr_str, t, name = line.split()
             addr = int(addr_str, 16) + offset
             if t in ignore:
@@ -99,8 +100,8 @@
             f.write("}\n")
             for sym in self.symbols:
                 f.write(f"{sym[1]} = 0x{sym[0]:x};\n")
-        run_tool(LD, "-EL", "-maarch64elf", "-T", ld_script, "-o", elffile, objfile)
-        run_tool(OBJCOPY, "-O", "binary", elffile, binfile)
+        run_tool(_toolchain.LD, "-EL", "-maarch64elf", "-T", ld_script, "-o", elffile, objfile)
+        run_tool(_toolchain.OBJCOPY, "-O", "binary", elffile, binfile)
         #run_tool("objdump", "-d", elffile)
         self._load_elf_symbols(elffile, ignore="A")
         with open(binfile, "rb") as f:
