2017-01-22 26 views
1

私はValgrindのバグを修正する方法について、thisの質問を読んでいます。唯一提案されている解決策は、thisパッチを適用することです。githubパッチを適用するには?

私はパッチを一度も適用したことがなく、トピックについてはthisが見つかりましたが、私のケースに適用する方法を理解できません。

+0

'man git-apply'? – matt

+1

Google "git apply patch"? –

答えて

1
priv/guest_amd64_helpers.c 

@@ -3101,7 +3101,8 @@ void amd64g_dirtyhelper_CPUID_avx2 (VexGuestAMD64State* st) 
      SET_ABCD(0x0000000d, 0x756e6547, 0x6c65746e, 0x49656e69); 
      break; 
     case 0x00000001: 
-   SET_ABCD(0x000306c3, 0x02100800, 0x7ffafbff, 0xbfebfbff); 
+   /* Don't advertise RDRAND support, bit 30 in ECX. */ 
+   SET_ABCD(0x000306c3, 0x02100800, 0x3ffafbff, 0xbfebfbff); 
      break; 
     case 0x00000002: 
      SET_ABCD(0x76036301, 0x00f0b6ff, 0x00000000, 0x00c10000); 

このパッチは非常に簡単です。ファイルは1つだけ変更されますpriv/guest_amd64_helpers.c。変更された行は、関数void amd64g_dirtyhelper_CPUID_avx2 (VexGuestAMD64State* st)にあります。 -という接頭語は、この行が削除されることを意味します。 +という接頭語は、この行が追加されることを意味します。接頭辞なしの他の行-または+は、検索するコンテキストです。チャンクを見つけたら、priv/guest_amd64_helpers.cでこれらの行を削除して追加してください。これは手で簡単な方法です。

一般的なgitパッチやコミットについては、コードがgitリポジトリによって管理されている場合は、gitコマンドで適用することもできます。あなたの質問の最後のリンクは、パッチを適用する方法を説明します。コマンドgit amもジョブを実行できます。これはgit cherry-pickによってこのコミットを適用する方法です。

cd <your_repo> 
git fetch https://github.com/svn2github/valgrind-vex master 
git cherry-pick 1ab61656f71e94ce12b68de87f1e28cf3dc0c18c 

あなたが1ab6165の著者情報を保持しない場合は、代わりにgit cherry-pick -n 1ab616;git commitを使用することができます。

パッチは、変更されるファイルと追加または削除される行を記述する書式付きファイルです。手動で、またはコマンドで自動的に適用することができます。別の一般的な方法があります。 priv/guest_amd64_helpers.cをローカルディスクにダウンロードして、あなたのバージョンと比較します(たとえば、Beyond Compare)。関連するチャンクにフォーカスし、それをあなたのバージョンにマージします。

関連する問題