Sto provando a utilizzare llvm come back-end di generazione del codice nel mio software e appena realizzato che llvm è stato compilato senza supporto per la gestione delle eccezioni C++ (per l'efficienza). Nel mio software, tuttavia, utilizzo estesamente la gestione delle eccezioni.Collegamento con codice che non supporta la gestione delle eccezioni (C++/LLVM)
Se avvolgo tutte le mie funzioni di callback nei blocchi try-catch (in modo che nessuna eccezione debba essere propagata "attraverso" il codice llvm), posso quindi rimuovere in modo sicuro "-fno-exceptions" (per GCC) dalle mie bandiere linker? (questo flag è normalmente richiesto quando si collega a llvm, come si presenta quando si fa llvm-config --cxxflags
).
In caso contrario, la situazione cambia se avvolgo le funzioni llvm con le funzioni dichiarate con "throws()"? L'implementazione di queste funzioni potrebbe essere compilata con -fnove-eccezioni.
Non scommetterei sulla compatibilità ABI, ma chi lo sa? Potrebbe essere più facile e sicuro compilare LLVM da soli con le eccezioni abilitate. – delnan
@delnan Compilare llvm non è un'opzione. Il mio software è utilizzato da più persone su piattaforme diverse (linux, mac, windows) e devo fare affidamento sull'installazione di default di llvm che si ottiene, ad es. da apt-get. – Joel
@delnan: Non so molto sulla compatibilità ABI, ma lo otterrei in questo caso se le funzioni sono dichiarate con throws()? Ho modificato la domanda di conseguenza. – Joel