Instrucciones misteriosas `d4d4` en LLD: No una trampa, sino una bifurcación condicional
2025-08-21
Un programador descubrió numerosas instrucciones `d4d4` en código ARM desensamblado, siempre inalcanzables e identificadas por el objdump de LLVM como una rama relativa a -0x58. Experimentos y análisis revelaron que estas no fueron añadidas por el compilador LLVM, sino por el enlazador LLD durante la alineación de los límites de los archivos de objeto. LLD usa `d4d4` como relleno, con la intención de que sea una instrucción de trampa. Sin embargo, en realidad es una bifurcación condicional, actuando como un salto relativo en el conjunto de instrucciones Thumb. Esto parece ser un error en LLD; no es una trampa verdadera, pudiendo causar saltos impredecibles. El enlazador GNU usa ceros para el relleno, evitando este problema.
Desarrollo