【问题标题】:How to apply a github patch?如何应用 github 补丁?
【发布时间】:2017-06-07 03:57:57
【问题描述】:

我正在阅读this 关于如何修复 Valgrind 中的错误的问题。唯一建议的解决方案是应用this 补丁。

我从未应用过补丁,但我发现this 关于该主题的问题,但我不明白如何将其应用到我的案例中。

【问题讨论】:

  • 谷歌“git应用补丁”?

标签: git 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);

这个补丁很简单。它只更改一个文件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。关注相关块并将其合并到您的版本中。

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 2010-12-07
    • 2011-07-08
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多