Este é realmente um comando muito curto diff. Ele diz para remover a linha //#define DEBUG e substituí-la por #define DEBUG .
Neste formato de comparação, as linhas que começam com um único - são removidas e aquelas com + são adicionadas. As outras linhas são para contexto e o @@ informa o deslocamento para o arquivo e o número de linhas referenciadas. (E as linhas triplas +++ --- informam qual arquivo foi modificado.)
As duas razões comuns para um patch não se aplicar são:
- As linhas afetadas reais foram alteradas ou
- O contexto em torno dessas linhas foi alterado (possivelmente, mudou demais , porque o patch geralmente usa um algoritmo "difuso".
Nesse caso, provavelmente é mais fácil examinar a seção do código manualmente (no arquivo linux-user/flatload.c , como você pode ver na primeira linha), e ver se há um #define DEBUG em qualquer lugar com comentários, e, em seguida, remova os caracteres de comentário // .
Olhando para o código eu mesmo, vejo que o problema é provavelmente a razão # 3 - o patch é mutilado porque foi renderizado de uma maneira que não deveria ser. Veja essa linha que diz apenas #include ? Na fonte original , diz #include <target_flat.h> . O software de blog em que você encontrou o patch provavelmente decidiu que <target_flat.h> é uma tag HTML suspeita e silenciosamente a excluiu, e o autor não percebeu.