treewide: implement basic aarch64 support

This adds aarch64 platforms, and some fixes for aarch64 support. This is
not yet complete; e.g. toolchains for aarch64 targets are still missing.

I renamed the amd64 platforms to x86_64 and efi to uefi for consistency
with @platforms.

syscall.Dup2 does not exist on arm64, but unix.Dup2 does.

Change-Id: I3ab081b2b852945b723ec83768f79000b8c4def4
Reviewed-on: https://review.monogon.dev/c/monogon/+/4173
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/build/platforms/BUILD.bazel b/build/platforms/BUILD.bazel
index 293af9b..028bb9a 100644
--- a/build/platforms/BUILD.bazel
+++ b/build/platforms/BUILD.bazel
@@ -1,6 +1,6 @@
-# Generic platform for Linux x86_64 targets.
+# Generic platform for Linux targets.
 platform(
-    name = "linux_amd64",
+    name = "linux_x86_64",
     constraint_values = [
         "@platforms//os:linux",
         "@platforms//cpu:x86_64",
@@ -8,9 +8,18 @@
     visibility = ["//visibility:public"],
 )
 
-# EFI preboot environment for x86_64 machines.
 platform(
-    name = "efi_amd64",
+    name = "linux_aarch64",
+    constraint_values = [
+        "@platforms//os:linux",
+        "@platforms//cpu:aarch64",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+# EFI preboot environment.
+platform(
+    name = "uefi_x86_64",
     constraint_values = [
         "@platforms//os:uefi",
         "@platforms//cpu:x86_64",
@@ -19,10 +28,20 @@
 )
 
 platform(
-    name = "remote_amd64",
+    name = "uefi_aarch64",
     constraint_values = [
-        "@platforms//cpu:x86_64",
+        "@platforms//os:uefi",
+        "@platforms//cpu:aarch64",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+# Remote execution platform.
+platform(
+    name = "remote_x86_64",
+    constraint_values = [
         "@platforms//os:linux",
+        "@platforms//cpu:x86_64",
     ],
     exec_properties = {
         "container-image": "docker://gcr.io/monogon-infra/sandbox",
diff --git a/build/toolchain/llvm-efi/transition.bzl b/build/toolchain/llvm-efi/transition.bzl
deleted file mode 100644
index 9c222e6..0000000
--- a/build/toolchain/llvm-efi/transition.bzl
+++ /dev/null
@@ -1,15 +0,0 @@
-def _build_efi_transition_impl(_settings, _attr):
-    """
-    Transition that enables building for an EFI environment. Currently only supports C code.
-    """
-    return {
-        "//command_line_option:platforms": "//build/platforms:efi_amd64",
-    }
-
-build_efi_transition = transition(
-    implementation = _build_efi_transition_impl,
-    inputs = [],
-    outputs = [
-        "//command_line_option:platforms",
-    ],
-)