Guide technique
Cross-target & Toolchains personnalisées
Construisez et analysez des binaires destinés à une cible différente de l’architecture hôte tout en conservant le contrôle complet de la chaîne d’outils.
CROSS-TARGET
Les architectures hôte et cible sont indépendantes.
LABS351 permet de définir une cible de projet différente de l’architecture du système hôte.
En mode cross-target, le développeur conserve le contrôle complet de la chaîne d’outils : assembleur, linker, chemins des exécutables, arguments de ligne de commande, ABI, format binaire et scripts de linkage peuvent être définis explicitement.
- Builds natifs et cross-target
- Assembleur et linker personnalisés
- Arguments de ligne de commande personnalisés
- Flux PE, COFF, ELF et Mach-O
- Cibles ARM, x86-64 et RISC-V
EXEMPLE
Cible RISC-V RV32I depuis macOS ARM64.
L’exemple suivant est construit sur un hôte Apple Silicon tout en ciblant un environnement RISC-V 32 bits.
Source :
.section .text
.globl _start
_start:
li t0, 0x42
li t1, 0x100
add t2, t0, t1
loop:
j loopAssembleur :
/opt/homebrew/bin/riscv64-elf-as
-march=rv32i -mabi=ilp32Linker :
/opt/homebrew/bin/riscv64-elf-ld
-T linker.ld -m elf32lriscvSCRIPT DE LINKAGE
Organisation mémoire explicite.
Le script de linkage reste intégré au projet et demeure entièrement sous le contrôle du développeur.
ENTRY(_start)
MEMORY
{
RAM (xrw) : ORIGIN = 0x80000000, LENGTH = 128K
}
SECTIONS
{
.text :
{
*(.text)
} > RAM
}Dans cette configuration, LABS351 s’exécute sur ARM64 tandis que la chaîne d’outils sélectionnée génère un binaire ELF32 destiné à la cible RISC-V RV32I. Le binaire obtenu peut ensuite être inspecté et décodé dans LABS351 au moyen des moteurs d’analyse disponibles.
EXÉCUTION
Runner natif ou environnement d’exécution personnalisé.
Le build cross-target et l’analyse binaire n’impliquent pas l’exécution native de l’architecture cible.
Le Runner/Trampoline LABS351 exécute le code nativement lorsque l’architecture cible est compatible avec l’hôte. Pour d’autres modèles d’exécution, le Runner peut être remplacé par un environnement personnalisé configuré par le développeur.
Des simulateurs ou émulateurs externes tels que QEMU peuvent ainsi être connectés au moyen de la configuration du Runner custom lorsque la cible l’exige.
FLUX
Le cross-target reste sous le contrôle du développeur.
LABS351 fournit l’environnement de projet et les interfaces de configuration. En mode cross-target, le développeur définit explicitement les outils et paramètres nécessaires à sa cible.