Linuxカーネルのprintk()はformat stringが色々と拡張されていて(Documentation/printk-formats.txt)、例えば、IPv4/IPv6の表示用、UUID/GUIDの表示用などがあります。その中でsymbol関連のformat stringもいくつか合って、%pSの場合はこんなふうに呼び出し元関数、呼び出し位置/関数サイズというように表示できます。OOPSでのスタックトレースと同様ですね。 pr_info("%pS\n", __builtin_return_address(1)); 出力結果はこのように。 [ 53.483834] load_module+0x1dcc/0x25f0 これはkallsymsの機能を使っているのだけど、どのようにやっているのかを見るのが今回の目的。 基本的にはlib/vsprintf.cのvsprintf()から関
![printk()で%pS format string指定時のアドレス->シンボル名の探し方 - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/5f712e2f9afa0e342db0001c5068c6aa6ab68f30/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F418I6s7Eq-L.jpg)