Inclure un fichier binaire avec GNU ld linker script
J'ai un travail linker script. Je veux ajouter une autre section de données dont le contenu est tiré directement à partir d'un fichier (ld ne faut pas l'analyser et extraire les sections et ainsi de suite). Comment puis-je le faire?
OUTPUT_FORMAT("elf32-i386")
ENTRY(start)
SECTIONS
{
.text 0x100000 : {
*(.multiboot)
*(.text)
*(.code)
*(.rodata*)
}
.data : {
*(.data)
}
.bss : {
*(.bss)
}
kernel_end = .;
roottask_start = .;
.data : {
HERE I WANT TO INCLUDE THE ENTIRE CONTENTS OF ANOTHER (BINARY) FILE
}
roottask_end = .;
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer d'utiliser
objcopy
pour le convertir en un objet normal vous pouvez lien, puis de référence de ses symboles dans l'éditeur de liens de script comme vous le feriez pour un objet normal. À partir de laobjcopy
de la page de manuel:...où objfichier sera élargi pour le nom de l'objet entrée de fichier.
Voir aussi la
--rename-section
option.bfdarch
texte n'est pas destiné littéralement (et n'est pas nécessaire). Pour déroutant de voir les liens de données arbitraires à l'aide de gcc bras de la chaîne d'.Vous pouvez mettre des fichiers raw de section distincte dans l'assemblée, et de l'inclure dans cette section linker script.
Vous devez d'abord créer un modèle .S de fichier, par exemple.
... et modifier linker script pour inclure cette section que vous aimez:
Vous pouvez également prendre un coup d'oeil ici ici pour un peu plus d'informations détaillées au sujet de .S modèle.
Une autre solution est de générer un deuxième linker script contenant des octets à partir de votre binaire à l'aide de la
BYTE
fonction, et de l'inclure dans l'ancien linker script à l'aide de laINCLUDE
directive.Vous pouvez générer le script à partir de votre fichier binaire en utilisant
hexdump
de la manière suivante:Et de l'inclure cette façon :