~~socialite~~
====== linux-4.15.1 と retpoline 対応 gcc を組み合わせる. ======
linux-4.15.1 では,spectre v2 の緩和対策が入ったようです.
https://lkml.org/lkml/2018/1/28/173 によると,
> You can do
>
> cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
>
> and if you don't have a compiler that supports the retpoline
> mitigations, you'll get:
>
> Vulnerable: Minimal generic ASM retpoline
>
> because only the assembly code (not the C code) will have the
> retpoline mitigation. So keep that in mind.
上記のように,コンパイラ(gcc) で ''retpoline'' をサポートしているかどうかで変わるようですので試してみます.
テスト環境は以下のとおりです.
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
===== linux-4.15.1 と gcc 7.2.1 の組み合わせ =====
gcc 7.2.1 は ''retpoline'' コード生成に対応しています.この gcc でコンパイルした Linux カーネルでは,以下の様になります.
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline
gcc 7.2.1 は,ソースからダウンロードしてビルドしたものを使用しています.
$ /opt/gcc_test/bin/gcc --version
gcc (GCC) 7.2.1 20180117
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
===== linux-4.15.1 と gcc 6.3.0 の組み合わせ =====
Debian 9 の gcc は 6.3.0 で,これは''retpoline'' コード生成に対応していません.
この gcc でコンパイルした Linux カーネルでは,以下の様になります.
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Vulnerable: Minimal generic ASM retpoline
$ gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.