After building zircon, I get
lz@vm:~/fuchsia/out/default/kernel_arm64$ ls -latotal 73892drwx------ 4 lz lz 4096 jul 26 02:36 .drwxrwxr-x 36 lz lz 20480 jul 26 02:39 ..drwx------ 4 lz lz 4096 jul 26 01:23 gen-rwxrwxr-x 1 lz lz 3044192 jul 26 02:36 image-rw-rw-r-- 1 lz lz 0 jul 26 02:36 image.build-id.stamp-rw-rw-r-- 1 lz lz 3442 jul 26 02:36 image.map-rwxrwxr-x 1 lz lz 2178064 jul 26 02:36 kernel.zbidrwx------ 8 lz lz 4096 jul 26 02:32 obj-rw-rw-r-- 1 lz lz 40021 jul 26 01:23 toolchain.ninja-rwxrwxr-x 3 lz lz 66370040 jul 26 02:36 zircon.elf-rw-rw-r-- 1 lz lz 16 jul 26 02:36 zircon.elf.build-id.stamp-rw-rw-r-- 2 lz lz 36414 jul 26 01:03 zircon.elf-gdb.py-rw-rw-r-- 1 lz lz 3944049 jul 26 02:36 zircon.elf.map
As you see, it creates a .elf zircon kernel (image
is also a .elf but I don't know what is the difference from zircon.elf).
I've seen ARM kernels in COFF format but not in ELF. Why does Fuchsia's kernel Zircon produces an elf file?