Instructions mystérieuses `d4d4` dans LLD : pas un piège, mais une branche conditionnelle
Un programmeur a découvert de nombreuses instructions `d4d4` dans du code ARM désassemblé, toujours inaccessibles et identifiées par objdump de LLVM comme une branche relative à -0x58. Des expériences et des analyses ont révélé que celles-ci n'ont pas été ajoutées par le compilateur LLVM, mais par le lieur LLD lors de l'alignement des limites des fichiers objets. LLD utilise `d4d4` comme remplissage, dans l'intention que ce soit une instruction de piège. Cependant, il s'agit en réalité d'une branche conditionnelle, agissant comme un saut relatif dans l'ensemble d'instructions Thumb. Cela semble être un bogue dans LLD ; ce n'est pas un véritable piège, pouvant entraîner des sauts imprévisibles. Le lieur GNU utilise des zéros pour le remplissage, évitant ce problème.
Lire plus