áá»áááºáááºáá¬ážáá±á¬á á¬áááºážáá¯ááºááŸá Spectre ááá¯ááºáá¬ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážááẠáá¬áá±ážá¡á á¯á¶ááᯠááœá±ážááœá±ážáá±á ááºá á á¶ááá¬ážááŸááºážá¡áá áºááŸáá·áºááá¯ááºáá®áá±á¬ C áá¯ááºááᯠkernel ááœááºááœáá·áºááŒá¯áá«á ááŒá¿áá¬ááᯠááá¯ááá¯áá»á±á¬ááœá±á·á áœá¬ááŒá±ááŸááºážááá¯ááºáááºááŒá áºááŒá±á¬ááºáž áááºááŸá¬ážáá¬áááºá áááºááŸáááœáẠááá·áºááœááºážáá¬ážáá±á¬ kernel áá¯ááºááẠ89 áá¯ááŸá áºááœáẠááŒááºáááºááœá²á·á ááºážáá²á·áá±á¬ ANSI C (C1989) áááºááŸááºáá»ááºááŸáá·áºá¡áá® ááá¯ááºáá¬ááááºááŒá áºáááºá
áá¯ááºááŸá Spectre-related ááŒá¿áá¬ááẠááœááºážáááºááŒá®ážáá±á¬áẠáá®ážááŒá¬ážáááºááŸááºáá¬ážáá±á¬ iterator ááᯠáááºáááºá¡áá¯á¶ážááŒá¯ááŒááºážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬áááŒááºážááŒá áºáááºâáá»áááºáááºáá¬ážáá±á¬á á¬áááºážáááŒááºá ááºáá»á¬ážáá±á«áºááœáẠmacro ááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž loop iterator ááᯠááᯠmacro ááá¯á· áá±á¬ááºááœá¬ážáá±á¬ááŒá±á¬áá·áºá ááœááºážáááºááŒááºáááœáẠáá°á·áá¬áá¬áá° áááºááŸááºááŒá®áž ááœááºážáááºááŒá®ážáá±á¬áẠáááºáááºáááŸáááá¯ááºáááºá C99 á á¶ááŸá¯ááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº ááŒá¿áá¬ááᯠááŒá±ááŸááºážááẠáááá¯á¡ááºáá² ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážááá·áº for() block ááœáẠloop variable áá»á¬ážááᯠáááºááŸááºááá¯ááºáááºááŒá áºáááºá
Linus Torvalds ááẠ5.18 áá¯ááŸá
áºááœááºáá¯ááºáá±áá±á¬ C11 á
á¶ááŸá¯ááºážááá¯á¡áá¯á¶ážááŒá¯ááẠ2011 kernel ááá¯ááœáŸá±á·ááẠá¡ááá¯ááŒá¯áá²á·áááºá ááá¬áá
ááºážáááºááŸá¯á¡ááœááºážá áá¯ááºá¡áá
áºááœáẠGCC ááŸáá·áº Clang ááŸá á
á¯áá±ážááŸá¯ááẠááœá±áááºááŒááºážáááŸááá² á¡á±á¬ááºááŒááºááœá¬ážáááºá ááá¯ááá¯á
á±á·á
á±á·á
ááºá
ááºá
ááºážáááºáá±á
ááºááœáẠááá»áŸá±á¬áºááá·áºáá¬ážáá±á¬ááŒá¿áá¬áá»á¬áž áá±á«áºáá±á«ááºáá¬áá«áá 5.18 kernel áááºáá±á¬ááºááŸá¯á
ááá
áºáá»á¬ážááœáẠ'--std=gnu89' ááœá±ážáá»ááºááŸá¯ááᯠ'--std=gnu11 -Wno-shift-negative-value' ááŒáá·áº á¡á
á¬ážááá¯ážáááºááŒá
áºáááºá C17 á
á¶ááŸá¯ááºážááᯠá¡áá¯á¶ážááŒá¯ááẠááŒá
áºááá¯ááºááŒá±ááá¯áááºáž ááá·áºááœááºážá
ááºážá
á¬ážáá¬ážáá±á¬áºáááºáž á€á¡ááŒá±á¡áá±ááœáẠGCC á á¡áááá·áºáá¯á¶ážáá¶á·ááá¯ážááŸá¯áá¬ážááŸááºážááᯠááá¯ážááŒáŸáá·áºááẠááá¯á¡ááºáááºááŒá
áºáá«áááºá C11 áá¶á·ááá¯ážááŸá¯áá«áááºááŸá¯ááẠGCC áá¬ážááŸááºáž (5.1) á¡ááœáẠáááºááŸáááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áº ááá¯ááºáá®áá«áááºá
source: opennet.ru