Sto cercando di eseguire il debug di un problema di linker che ho, durante la scrittura di un kernel.Script linker: strategie per il debugging?
Il problema è che ho una variabile SCAN_CODE_MAPPING
che non sono in grado di utilizzare: sembra vuota o qualcosa del genere. Posso risolvere il problema cambiando il modo in cui collego il mio programma, ma non so perché.
Quando guardo all'interno del file binario generato utilizzando objdump
, i dati per la variabile sono sicuramente lì, quindi c'è solo qualcosa di rotto con il riferimento ad esso.
Here's a gist con entrambi gli script del linker e la parte della tabella dei simboli diversa tra i due file.
Ciò che mi confonde è che entrambe le tabelle dei simboli hanno tutti gli stessi simboli, sono della stessa lunghezza e sembrano contenere i dati corretti. L'unica differenza che posso vedere è che non sono nello stesso ordine.
Finora ho provato
- ispezionare la posizione
SCAN_CODE_MAPPING
di memoria per assicurarsi che ha i dati mi aspetto e non è stato azzerato - controllando che tutti i simboli sono gli stessi
- controllando che tutti i contenuti di simboli sono la stessa lunghezza
- guardando
.data.rel.ro.local
per assicurarsi che ha l'indirizzo dei dati
Una possibile indizio è questo avvertimento:
warning: uninitialized space declared in non-BSS section `.text': zeroing
che ricevo sia in rotta e il caso corretto.
Cosa dovrei provare dopo?
Le votazioni per chiudere come l'aiuto di debug. –