今回も前回と同じレポジトリを使って戯れます。
takk@deb8:~/a/work$ svn log ------------------------------------------------------------------------ r4 | takk | 2017-02-16 22:18:12 +0900 (2017年02月16日 (木)) | 1 line sample log ------------------------------------------------------------------------ r3 | takk | 2017-02-15 20:09:24 +0900 (2017年02月15日 (水)) | 1 line second ------------------------------------------------------------------------ r2 | takk | 2017-02-15 20:07:55 +0900 (2017年02月15日 (水)) | 1 line sample modified ------------------------------------------------------------------------ r1 | takk | 2017-02-15 19:59:40 +0900 (2017年02月15日 (水)) | 1 line first ------------------------------------------------------------------------ takk@deb8:~/a/work$
前回は、svnのコマンドのみでソース差分を確認しましたが、今回はgccでアセンブラソースを生成して差分確認します。
まず最新レビジョンでgccをかけて、そのアセンブラをテキストに保存します。
takk@deb8:~/a/work$ gcc -S *.c;head -9999 *.s >r4
次に差分を見るレビジョン、ここではr1、updateしてソースを取り出します。
takk@deb8:~/a/work$ svn update -r1 Updating '.': U func_03.c U func_04.c U func_07.c リビジョン 1 に更新しました。
同じくgccをかけてアセンブラを保存します。
takk@deb8:~/a/work$ gcc -S *.c;head -9999 *.s >r1
両者を比較します。
takk@deb8:~/a/work$ diff r1 r4 622c622 < call func_033 --- > call func_050 837a838 > call func_044 1425c1426 < call func_074 --- > call func_094 takk@deb8:~/a/work$
アセンブラで差分がある箇所が表示されました。
「どの関数が変更になったか(SVN)」でやったように、関数単位で表示するとわかりやすいです。
takk@deb8:~/a/work$ diff -y -W80 r1 r4 | tac | perl -ne '$f=1 if/ {6}\|/; print if $f==1; $f=0 if(/^\w+/);' | tac func_032: func_032: .LFB1: .LFB1: .cfi_startproc .cfi_startproc pushl %ebp pushl %ebp .cfi_def_cfa_offset 8 .cfi_def_cfa_offset 8 .cfi_offset 5, -8 .cfi_offset 5, -8 movl %esp, %ebp movl %esp, %ebp .cfi_def_cfa_register 5 .cfi_def_cfa_register 5 subl $8, %esp subl $8, %esp call func_033 | call func_050 func_073: func_073: .LFB2: .LFB2: .cfi_startproc .cfi_startproc pushl %ebp pushl %ebp .cfi_def_cfa_offset 8 .cfi_def_cfa_offset 8 .cfi_offset 5, -8 .cfi_offset 5, -8 movl %esp, %ebp movl %esp, %ebp .cfi_def_cfa_register 5 .cfi_def_cfa_register 5 subl $8, %esp subl $8, %esp call func_074 | call func_094 takk@deb8:~/a/work$
コメント