hikita
2014年10月23日 15時17分
お世話になります。
アマノ㈱ 疋田です。
armadillo440を使用しています。
atmark-distでビルドしたLinuxカーネルにスタティックリンクされたカーネルツリー内の
ソースファイル名の一覧を取得したいのですが、取得の仕方をご存知であれば教えてください。
linux-2.6.26-at/System.mapにはシンボルテーブルしか出力されていません。
カーネルツリー内のMakefileを変更すればファイル名も出力できるのでしょうか。
以上 よろしくお願いします。
コメント
hikita
y.nakamura
at_makoto.harada
hikita
> デバッグオプション付きでカーネルをビルドし、objdumpでバイナリ内のデバッグ情報からファイルパスを取得してみては
> はいかがでしょうか?
>
> 1. デバッグオプションを有効にしてカーネルをビルド
> -> Kernel hacking
> ->[*] Compile the kernel with debug info
>
> 2. vmlinuxを逆アセンブル
> arm-linux-gnueabi-objdump -Sl vmlinux |grep "^/"
>
コメントありがとうございます。
この方法ですと下のように同じファイル名が何度も表示されてしまいますね。
これを加工すればいけるかもしれません。
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:290
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:293
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:308
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:296
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:299
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:300
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:299
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:300
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:301
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:312
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:306
/home/atmark/linux-2.6.26-at/net/ipv6/proc.c:308
at_yashi
hikita
> > できればiTRONの統合開発環境のように、...
>
> なるほど。勉強になります。
>
> 1. CONFIG_DEBUG_INFO
を有効にして
> 2. gdb vmlinux
> 3. info sources
>
> が、一番わかりやすいかもしれません。どうでしょう?
>
コメントありがとうございます。
これは良い方法です。GDBをlogging onにしておいて、info sourcesコマンドで
ファイル名をすべて表示させてから、ログファイルgdb.txtを".c"でgrepすれば全
てのcファイル一覧が取得できます。
この方法を使わせていただきます。ありがとうございました。
at_yashi
2014年10月23日 20時43分
綺麗な状態から make をすると、ディレクトリ内にできた .o ファイルがわかり
ます。その一覧を見るという方法で、できませんか?