Instruções misteriosas `d4d4` no LLD: Não uma armadilha, mas um desvio condicional

2025-08-21

Um programador descobriu inúmeras instruções `d4d4` em código ARM desassemblado, sempre inacessíveis e identificadas pelo objdump do LLVM como um desvio relativo para -0x58. Experimentos e análises revelaram que essas não foram adicionadas pelo compilador LLVM, mas sim pelo vinculador LLD durante o alinhamento de limites de arquivos de objeto. O LLD usa `d4d4` como preenchimento, com a intenção de que seja uma instrução de armadilha. No entanto, é na verdade um desvio condicional, atuando como um salto relativo no conjunto de instruções Thumb. Isso parece ser um erro no LLD; não é uma armadilha verdadeira, podendo causar saltos imprevisíveis. O vinculador GNU usa zeros para preenchimento, evitando esse problema.

Leia mais
Desenvolvimento