2017-01-22 1 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); 

이 패치는 매우 간단합니다. 하나의 파일 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)하여 버전과 비교하십시오. 관련 청크에 초점을 맞추고 버전에 병합하십시오.

관련 문제