b/ci: update build container to Fedora 35

Fedora 32 is EOL since over half a year, update to the current stable
Fedora release.

toolchains: adds clang as it's no longer part of the llvm package,
changes toolchain path references to GCC 11, and rebuilds the sysroot.

edk2: update to latest stable (old version cannot build with a newer
minor version of Python 3) and patch to disable -Werror and make the
newer included Brotli version work as it natively includes BUILD
files which need to be patched out to make the source files accessible.

linux: add patch to fix PVH ELF note entrypoint with binutils 2.32+ as
otherwise the .notes section gets emitted with broken alignment.

m/t/launch: RunMicroVM is broken if SerialPort is not set with newer
QEMU versions because fcntl(2) fails to interact with a broken file
descriptor. This is due to a confusion between nil interfaces and
interfaces containing a nil pointer causing Go to improperly pass the
file descriptor. Changing the type of SerialPort to the actual
interface resolves the issue.

Change-Id: I03a8cbf4f80a7363794dad1ff62ccb57e778cac3
Reviewed-on: https://review.monogon.dev/c/monogon/+/529
Reviewed-by: Leopold Schabel <leo@nexantic.com>
diff --git a/third_party/edk2/patches/remove-brotli-build.patch b/third_party/edk2/patches/remove-brotli-build.patch
new file mode 100644
index 0000000..153bcff
--- /dev/null
+++ b/third_party/edk2/patches/remove-brotli-build.patch
@@ -0,0 +1,301 @@
+--- a/BaseTools/Source/C/BrotliCompress/brotli/BUILD
++++ /dev/null
+@@ -1,147 +0,0 @@
+-# Description:
+-#   Brotli is a generic-purpose lossless compression algorithm.
+-
+-load(":compiler_config_setting.bzl", "create_msvc_config")
+-
+-package(
+-    default_visibility = ["//visibility:public"],
+-)
+-
+-licenses(["notice"])  # MIT
+-
+-exports_files(["LICENSE"])
+-
+-config_setting(
+-    name = "darwin",
+-    values = {"cpu": "darwin"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "darwin_x86_64",
+-    values = {"cpu": "darwin_x86_64"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows",
+-    values = {"cpu": "x64_windows"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows_msvc",
+-    values = {"cpu": "x64_windows_msvc"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows_msys",
+-    values = {"cpu": "x64_windows_msys"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-create_msvc_config()
+-
+-STRICT_C_OPTIONS = select({
+-    ":msvc": [],
+-    "//conditions:default": [
+-        "--pedantic-errors",
+-        "-Wall",
+-        "-Wconversion",
+-        "-Werror",
+-        "-Wextra",
+-        "-Wlong-long",
+-        "-Wmissing-declarations",
+-        "-Wmissing-prototypes",
+-        "-Wno-strict-aliasing",
+-        "-Wshadow",
+-        "-Wsign-compare",
+-    ],
+-})
+-
+-filegroup(
+-    name = "public_headers",
+-    srcs = glob(["c/include/brotli/*.h"]),
+-)
+-
+-filegroup(
+-    name = "common_headers",
+-    srcs = glob(["c/common/*.h"]),
+-)
+-
+-filegroup(
+-    name = "common_sources",
+-    srcs = glob(["c/common/*.c"]),
+-)
+-
+-filegroup(
+-    name = "dec_headers",
+-    srcs = glob(["c/dec/*.h"]),
+-)
+-
+-filegroup(
+-    name = "dec_sources",
+-    srcs = glob(["c/dec/*.c"]),
+-)
+-
+-filegroup(
+-    name = "enc_headers",
+-    srcs = glob(["c/enc/*.h"]),
+-)
+-
+-filegroup(
+-    name = "enc_sources",
+-    srcs = glob(["c/enc/*.c"]),
+-)
+-
+-cc_library(
+-    name = "brotli_inc",
+-    hdrs = [":public_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    strip_include_prefix = "c/include",
+-)
+-
+-cc_library(
+-    name = "brotlicommon",
+-    srcs = [":common_sources"],
+-    hdrs = [":common_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    deps = [":brotli_inc"],
+-)
+-
+-cc_library(
+-    name = "brotlidec",
+-    srcs = [":dec_sources"],
+-    hdrs = [":dec_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    deps = [":brotlicommon"],
+-)
+-
+-cc_library(
+-    name = "brotlienc",
+-    srcs = [":enc_sources"],
+-    hdrs = [":enc_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    linkopts = select({
+-        ":msvc": [],
+-        "//conditions:default": ["-lm"],
+-    }),
+-    deps = [":brotlicommon"],
+-)
+-
+-cc_binary(
+-    name = "brotli",
+-    srcs = ["c/tools/brotli.c"],
+-    copts = STRICT_C_OPTIONS,
+-    linkstatic = 1,
+-    deps = [
+-        ":brotlidec",
+-        ":brotlienc",
+-    ],
+-)
+-
+-filegroup(
+-    name = "dictionary",
+-    srcs = ["c/common/dictionary.bin"],
+-)
+
+--- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD
++++ /dev/null
+@@ -1,147 +0,0 @@
+-# Description:
+-#   Brotli is a generic-purpose lossless compression algorithm.
+-
+-load(":compiler_config_setting.bzl", "create_msvc_config")
+-
+-package(
+-    default_visibility = ["//visibility:public"],
+-)
+-
+-licenses(["notice"])  # MIT
+-
+-exports_files(["LICENSE"])
+-
+-config_setting(
+-    name = "darwin",
+-    values = {"cpu": "darwin"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "darwin_x86_64",
+-    values = {"cpu": "darwin_x86_64"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows",
+-    values = {"cpu": "x64_windows"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows_msvc",
+-    values = {"cpu": "x64_windows_msvc"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-config_setting(
+-    name = "windows_msys",
+-    values = {"cpu": "x64_windows_msys"},
+-    visibility = ["//visibility:public"],
+-)
+-
+-create_msvc_config()
+-
+-STRICT_C_OPTIONS = select({
+-    ":msvc": [],
+-    "//conditions:default": [
+-        "--pedantic-errors",
+-        "-Wall",
+-        "-Wconversion",
+-        "-Werror",
+-        "-Wextra",
+-        "-Wlong-long",
+-        "-Wmissing-declarations",
+-        "-Wmissing-prototypes",
+-        "-Wno-strict-aliasing",
+-        "-Wshadow",
+-        "-Wsign-compare",
+-    ],
+-})
+-
+-filegroup(
+-    name = "public_headers",
+-    srcs = glob(["c/include/brotli/*.h"]),
+-)
+-
+-filegroup(
+-    name = "common_headers",
+-    srcs = glob(["c/common/*.h"]),
+-)
+-
+-filegroup(
+-    name = "common_sources",
+-    srcs = glob(["c/common/*.c"]),
+-)
+-
+-filegroup(
+-    name = "dec_headers",
+-    srcs = glob(["c/dec/*.h"]),
+-)
+-
+-filegroup(
+-    name = "dec_sources",
+-    srcs = glob(["c/dec/*.c"]),
+-)
+-
+-filegroup(
+-    name = "enc_headers",
+-    srcs = glob(["c/enc/*.h"]),
+-)
+-
+-filegroup(
+-    name = "enc_sources",
+-    srcs = glob(["c/enc/*.c"]),
+-)
+-
+-cc_library(
+-    name = "brotli_inc",
+-    hdrs = [":public_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    strip_include_prefix = "c/include",
+-)
+-
+-cc_library(
+-    name = "brotlicommon",
+-    srcs = [":common_sources"],
+-    hdrs = [":common_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    deps = [":brotli_inc"],
+-)
+-
+-cc_library(
+-    name = "brotlidec",
+-    srcs = [":dec_sources"],
+-    hdrs = [":dec_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    deps = [":brotlicommon"],
+-)
+-
+-cc_library(
+-    name = "brotlienc",
+-    srcs = [":enc_sources"],
+-    hdrs = [":enc_headers"],
+-    copts = STRICT_C_OPTIONS,
+-    linkopts = select({
+-        ":msvc": [],
+-        "//conditions:default": ["-lm"],
+-    }),
+-    deps = [":brotlicommon"],
+-)
+-
+-cc_binary(
+-    name = "brotli",
+-    srcs = ["c/tools/brotli.c"],
+-    copts = STRICT_C_OPTIONS,
+-    linkstatic = 1,
+-    deps = [
+-        ":brotlidec",
+-        ":brotlienc",
+-    ],
+-)
+-
+-filegroup(
+-    name = "dictionary",
+-    srcs = ["c/common/dictionary.bin"],
+-)