objcopy -O default
/ ld.bfd --print-output-format
llvm-objcopy/lld encourage explicit target specification. You can use llvm-objcopy for all targets while GNU objcopy require aarch64-linux-gnu-objcopy/riscv64-linux-gnu-objcopy/etc.
but note that, for reasons unknown to me, hyphens have now become underscores
"elf_x86_64" (ld -m) is a bfd emulation, which is a ld shell script that generates a default linker script. Again, I think it is a design flaw to place target differences into the linker instead of the compiler driver. lld tries to implement the minimum set of emulations for Linux or generic ELF.
You can prevent the compiler from appending the null byte to an array by specifying the exact size of the array like this: https://godbolt.org/z/bGbae8x7W