% make O=/tmp/linux/x86 ARCH=x86_64 CC=/tmp/p/claudes-c-compiler/target/release/ccc-x86 HOSTCC=/tmp/p/claudes-c-compiler/target/release/ccc-x86 LDFLAGS=-fuse-ld=bfd LD=ld.bfd -j30 vmlinux -k
make[1]: Entering directory '/tmp/linux/x86'
...
CC arch/x86/platform/intel/iosf_mbi.o
ccc: error: lgdtl requires memory operand
AR arch/x86/platform/intel-mid/built-in.a
make[6]: *** [/home/ray/Dev/linux/scripts/Makefile.build:362: arch/x86/realmode/rm/wakeup_asm.o] Error 1
ld.bfd: arch/x86/entry/vdso/vdso32/sigreturn.o: warning: relocation in read-only section `.eh_frame'
ld.bfd: error in arch/x86/entry/vdso/vdso32/sigreturn.o(.eh_frame); no .eh_frame_hdr table will be created
ld.bfd: warning: creating DT_TEXTREL in a shared object
ccc: error: unsupported pushw operand
There are many other errors. RELOCS arch/x86/realmode/rm/realmode.relocs
Invalid absolute R_386_32 relocation: real_mode_seg
Still very impressive.
// One-byte case for SLEB128 int64_t from_signext(uint64_t v) { return v < 64 ? v - 128 : v; }
// One-byte case for ULEB128 with zig-zag encoding int64_t from_zigzag(uint64_t z) { return (z >> 1) ^ -(z & 1); }