Valgrind의 버그를 해결하는 방법에 대해 this 질문을 읽었습니다. 유일한 제안 된 해결책은 this 패치를 적용하는 것입니다.github 패치를 적용하는 방법?
패치를 적용한 적이 없으며 주제에 대해 this 질문을 찾았지만 내 사례에 적용하는 방법을 이해할 수 없습니다.
Valgrind의 버그를 해결하는 방법에 대해 this 질문을 읽었습니다. 유일한 제안 된 해결책은 this 패치를 적용하는 것입니다.github 패치를 적용하는 방법?
패치를 적용한 적이 없으며 주제에 대해 this 질문을 찾았지만 내 사례에 적용하는 방법을 이해할 수 없습니다.
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 am
도 작업을 수행 할 수 있습니다. 이 커밋을 적용 할 방법은 git cherry-pick
입니다. 당신이 1ab6165의 저자 정보를 유지하지 않으려면
cd <your_repo>
git fetch https://github.com/svn2github/valgrind-vex master
git cherry-pick 1ab61656f71e94ce12b68de87f1e28cf3dc0c18c
대신 git cherry-pick -n 1ab616;git commit
을 사용할 수 있습니다.
패치는 어떤 파일이 변경되고 추가 또는 제거되는 줄을 설명하는 서식이 지정된 파일입니다. 직접 또는 자동으로 명령으로 적용 할 수 있습니다. 다른 일반적인 방법이 있습니다. 로컬 디스크에 priv/guest_amd64_helpers.c
을 다운로드하고 비교 (예 : Beyond Compare)하여 버전과 비교하십시오. 관련 청크에 초점을 맞추고 버전에 병합하십시오.
'man git-apply'? – matt
Google "git apply patch"? –