Kernel Linux 5.18 ngarencanakeun pikeun ngijinkeun panggunaan standar basa C C11

Nalika ngabahas sakumpulan patches pikeun ngalereskeun masalah anu aya hubunganana sareng Specter dina kode daptar anu aya hubunganana, janten jelas yén masalahna tiasa direngsekeun langkung saé upami kode C anu sasuai sareng versi standar anu langkung énggal diidinan kana kernel. Ayeuna, kode kernel anu ditambahkeun kedah saluyu sareng spésifikasi ANSI C (C89), anu dibentuk taun 1989.

Masalah anu aya hubunganana sareng Specter dina kode ieu disababkeun ku terus-terusan ngagunakeun iterator anu didefinisikeun sacara misah saatos loop-makro dianggo pikeun ngulik unsur-unsur daptar anu aya hubunganana, sareng kusabab iterator loop dialihkeun kana makro éta, éta diartikeun luar loop sorangan sarta tetep sadia sanggeus loop. Ngagunakeun standar C99 bakal ngidinan variabel loop dihartikeun dina keur () blok, nu bakal ngajawab masalah tanpa kudu datang nepi ka workarounds.

Linus Torvalds sapuk sareng ide pikeun nerapkeun dukungan pikeun spésifikasi anu langkung énggal sareng ngusulkeun mindahkeun kernel 5.18 nganggo standar C11, diterbitkeun dina 2011. Salila tés awal, rakitan di GCC sareng Clang dina modeu énggal lulus tanpa panyimpangan. Upami teu aya masalah anu teu kaduga timbul nalika uji anu langkung lengkep, pilihan '--std=gnu5.18' dina skrip ngawangun kernel 89 bakal diganti ku '--std=gnu11 -Wno-shift-negative-value'. Kamungkinan ngagunakeun standar C17 ogé dianggap, tapi dina hal ieu bakal perlu ningkatkeun versi minimum dirojong tina GCC. Citakan pangrojong C11 pas kana sarat ayeuna pikeun versi GCC (5.1).

sumber: opennet.ru

Tambahkeun komentar