Proses bootstrap Rust dengan GCC dibagi menjadi tiga tahap: stage1 menggunakan compiler Rust berbasis LLVM, stage2 membangun ulang dengan GCC, dan stage3 verifikasi membangun ulang dengan compiler stage2 untuk memastikan kesamaan eksekutabel.
Bug pertama muncul karena penggunaan atribut #[inline(always)] pada fungsi rekursif yang memaksa inlining tak mungkin, sehingga GCC backend gagal; solusi melibatkan penurunan atribut menjadi inline biasa jika terdeteksi siklus inline atribut.
Bug kedua terkait dukungan 128-bit SwitchInt di libgccjit yang tidak dapat membuat literal 128-bit, diatasi dengan mengganti switch menjadi rangkaian if-else yang dioptimasi GCC.
Segfault pada stage2 disebabkan oleh instruksi vector aligned load terhadap struct packed u128 karena alignment pointer salah; diagnosa menggunakan core dump dan perbaikan memanggil get_aligned hanya saat diperlukan.
Dengan perbaikan ini, proses bootstrap dapat dilanjutkan hingga stage3, meski masih ada tantangan performa dan penggunaan memori, serta pekerjaan lanjutan pada fuzzing, ABI, dan dukungan platform.
Get notified when new stories are published for "Berita Peretas 🇮🇩 Bahasa Indonesia"