I've the same error with buildroot's syslinux, the problem is in the file prepcore.c, in particular:
if (fwrite(infile + start, 1, offset - start, f) != offset - start || fwrite(out, 1, outfile_len, f) != outfile_len || fclose(f)) error("write error"); given the code seems obvious an offset > start is expected, but a printf show otherwise: infile=0x1cf0240 start=31744 out=0x7f3db1d6e010 offset=0 outfile_len=57639 offset is initialized with pfx_compressed: offset = get_32(&prefix->pfx_compressed); something changed in some file format or some header? or something about the arch being 64bit? (objcopy doesn't fail) -rw-r--r-- 1 alex alex 250589 Dec 15 13:05 ldlinux.lsr -rw-r--r-- 1 alex alex 250589 Dec 15 13:05 ldlinux.lst -rw-r--r-- 1 alex alex 4136 Dec 15 13:05 ldlinux.sec -rwxr-xr-x 1 alex alex 687828 Dec 15 13:05 ldlinux.elf -rw-r--r-- 1 alex alex 127464 Dec 15 13:05 ldlinux.raw -rw-r--r-- 1 alex alex 0 Dec 15 13:05 ldlinux.bin