Mam moduł Llvm, który został zrzucony jako plik Bitcode z llvm::WriteBitcodeToFile
. Chcę przekształcić ten plik Bitcode w natywną dynamicznie ładowaną bibliotekę, która zawiera funkcje w module.Utwórz plik obiektu niezależnego od pozycji z kodu bitowego LLVM
Jak to zrobić? Próbowałem za pomocą llc
za to, ale to wywołuje kod, który najwyraźniej nie jest przenoszone, ponieważ po wykonaniu następujących czynności:
llc -enable-pie -cppgen=functions -filetype=asm executableModule -o em.s
wtedy, Assemblying z gnu as
do pliku obiektu:
as -o mylib.o em.s
wreszcie , starając się stworzyć wspólną bibliotekę:
gcc -shared -o libmyfile.so -fPIC mylib.o
niepowodzeniem z błędem:
/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
dziękuję !!!!, czy istnieje narzędzie do budowania biblioteki bezpośrednio z kodu bitowego IR, bez polegania na asembler? – lurscher
Widziałem, że llc obsługuje wyjście kodu natywnego, ale jest eksperymentalne. Czy istnieje do tego podejście oparte na jakości produkcji? – lurscher
Witam. Czy możesz powiedzieć, gdzie jest opisana opcja "-relocation-model"? Mogę go znaleźć dla "lli", ale "lli" nie jest "llc". – beroal