Lavoro su software per un sistema embedded che non ha FPU. Mi piacerebbe essere in grado di costruire questo software con una libreria software in virgola mobile sul mio desktop per ottenere una visione più realistica delle prestazioni. Qualcuno ha qualche idea su come ottenere questo?Soft Float on x86_64
Finora non ho fatto molti progressi con l'utilizzo di -msoft-float
con gcc. Attualmente sto cercando di usare clang. Usando i flag -Xclang -msoft-float -Xclang -no-implicit-float
e specificando una libreria che ha implementazioni di routine soft-float, sono in grado di compilare la mia applicazione. Quando provo a eseguirlo, sempre segfaults. Come meglio posso dire, questo è dovuto al fatto che le librerie da cui dipende questo programma non sono state compilate con soft-float. L'app dipende da gtk, sqlite, expat, gcrypt, un certo numero di librerie interne e libc.
Vorrei provare a capire come creare un ambiente di compilazione completo con supporto flottante. Ho provato il buildroot di uclibc e l'impostazione di CC
e CXX
in file binari di clang, ma questo non ha funzionato a causa dei requisiti per la compilazione della toolchain gcc (cose come gli autotools che lamentavano l'errata versione del compilatore). Dato che mi piacerebbe usare clang come compilatore nel nuovo buildroot (per avere supporto per il soft float), non vedo la necessità di costruire gcc. È possibile farlo senza gcc?
Penso che questo è impossibile senza modificare il codice, perché il 'x86_64' ABI richiede' xmm' registra di essere presenti. Forse alcuni trucchetti '-Ddouble = mpfr :: real' funzioneranno, usando la libreria' mpfr' che è richiesta da 'gcc' comunque. – hirschhornsalz
Come notato, 'clang' è stato in grado di compilare un binario senza riferimenti alle istruzioni o ai registri in virgola mobile. Suppongo che la mia vera domanda sia quindi se esiste un modo per creare un'intera toolchain usando qualcosa di simile. –
La soluzione proposta era ok? –