This article describes target-specific details about AArch64 in ELF
linkers. AArch64 is the 64-bit execution state for the Arm architecture.
The AArch64 execution state runs the A64 instruction set. The AArch32
and AArch64 execution states use very different instruction sets, so
many pieces of software use two ports for the two execution states of
the Arm architecture.
There were the "ARM architecture" and the "ARM instruction set",
leading to many software projects using "ARM" or "arm" as their port
names. In 2011, ARMv8 introduced two execution states, AArch32 and
AArch64. The previous instruction sets "ARM" and "Thumb" were renamed to
"A32" and "T32", respectively. In 2017, the architecture was renamed to
the "Arm architecture" to reflect the rebranding of the company name.
So, the "ARMv8-A" architecture profile is now named "Armv8-A".
For the AArch64 execution state, while many projects use "AArch64" as
their port name, for legacy reasons, macOS, Windows, the Linux kernel,
and some BSD operating systems unfortunately use "arm64". (Support for
AArch64 was added to the Linux kernel in version 3.7. Initially, the
patch set was named "aarch64", but it was later changed at the request of kernel