Ho un modulo llvm che ho scaricato come file bitcode con llvm::WriteBitcodeToFile
. Voglio trasformare questo file di bitcode in una libreria nativa caricabile dinamicamente che contiene le funzioni nel modulo.creare il file oggetto indipendente dalla posizione dal codice bit LLVM
Come faccio? Ho provato ad utilizzare llc
per questo, ma questo produce codice che a quanto pare non è rilocabile, dal momento che dopo aver fatto le seguenti operazioni:
llc -enable-pie -cppgen=functions -filetype=asm executableModule -o em.s
poi, assemblying con GNU as
in un file oggetto:
as -o mylib.o em.s
finalmente , cercando di produrre una libreria condivisa con:
gcc -shared -o libmyfile.so -fPIC mylib.o
fallisce con l'errore:
/usr/bin/ld: error: mylib.o: requires dynamic R_X86_64_PC32 reloc against 'X.foo' which may overflow at runtime; recompile with -fPIC
collect2: ld returned 1 exit status
grazie !!!!, c'è uno strumento per costruire la libreria direttamente dal codice bit IR, senza fare affidamento sull'assemblatore? – lurscher
ho visto quell'autentico supporto per l'output del codice nativo, ma è sperimentale. Esiste un approccio di qualità produttiva per questo? – lurscher
Ciao. Diresti dove è descritta l'opzione "-relocation-model"? Posso trovarlo per "lli", ma "lli" non è "llc". – beroal