The loader code to produce ELF or ELF64 binaries is now consolidated into /sys/src/cmd/8l/elf.[ch], and it no longer modifies (in loader-dependent ways) the text-start virtual address to produce a physical equivalent. In the process, bugs such as incorrect byte-order header elements were fixed. There are new options in all the loaders that can produce ELF binaries (i.e., not kl): -k marks the ELF file as a kernel rather than user executable, and -Fphys sets the text-start physical address to `phys' instead of the text-start virtual address. See 8l(1).
Note that 9boot can now load ELF64 kernels.