答案 0 :(得分: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);
这个补丁非常简单。它只更改一个文件priv/guest_amd64_helpers.c
。更改的行位于函数void amd64g_dirtyhelper_CPUID_avx2 ( VexGuestAMD64State* st )
中。 -
前缀行表示要删除此行。 +
前缀行表示要添加此行。没有带前缀-
或+
的其他行是要查找的上下文。因此,找到块,然后删除并在priv/guest_amd64_helpers.c
中添加这些行。这是一种直接的方法。
对于通用git补丁或提交,如果您的代码由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。专注于相关的块并将其合并到您的版本中。