Как сгенерировать нативный линуксовый бинарник средствами LLVM API? (на официальном сайте не нашел)
Как сгенерировать байткод знаю. Как скомпилировать его в нативный бинарник при помощи llvmc или llc+gas+ld тоже знаю.
А еще, хоть это никак не относится к генерации бинарника, JIT юзать умею.
PS. Не пинать если вопрос тупой, но ни на llvm.org, ни в гуле не нашел.
PPS. Пытался осилить исходники llc (хоть он генерит только asm) - не очень понял. Но если другого пути нет, то вооружусь doxygen и попытаюсь понять лучше.
Решено: LLVM API - как генерировать нативный бинарник?
Модератор: Модераторы разделов
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Решено: LLVM API - как генерировать нативный бинарник?
frp
И каков ответ и почему тема без ответа помечена, как "решено"?
И каков ответ и почему тема без ответа помечена, как "решено"?
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
Re: Решено: LLVM API - как генерировать нативный бинарник?
LLVM нормально умеет генерить только asm, как - смотреть исходники llc (там, правда, большая часть кода к генерации асма никакого отношения не имеет). Дальше, чтобы получить бинарник, все как обычно: компиляция, линковка (средствами as, ld, можно как запускалку gcc использовать (как ни странно, именно так поступает clang и llvmc)).
Также можно сразу генерировать объектный код (.o), как - тоже исходник llc. Но это в LLVM 2.7 является экспериментальной фичой, AFAIK ни один серьезный проект так не делает.
Кроме этого, судя по Doxygen и наличию соответствующих классов, возможна генерация сразу готового ELF, но никакой документации, никаких примеров, даже хидеры и исходники практически совсем не документированы. В этом механизме я не разобрался и не нашел абсолютно никаких примеров использования.
Я использую первый вариант.
PS. Ссылка на исходник llc из LLVM 2.7: http://llvm.org/svn/llvm-project/llvm/tags...ols/llc/llc.cpp
Ссылка на исходник llc из транка: http://llvm.org/svn/llvm-project/llvm/trun...ols/llc/llc.cpp
Также можно сразу генерировать объектный код (.o), как - тоже исходник llc. Но это в LLVM 2.7 является экспериментальной фичой, AFAIK ни один серьезный проект так не делает.
Кроме этого, судя по Doxygen и наличию соответствующих классов, возможна генерация сразу готового ELF, но никакой документации, никаких примеров, даже хидеры и исходники практически совсем не документированы. В этом механизме я не разобрался и не нашел абсолютно никаких примеров использования.
Я использую первый вариант.
PS. Ссылка на исходник llc из LLVM 2.7: http://llvm.org/svn/llvm-project/llvm/tags...ols/llc/llc.cpp
Ссылка на исходник llc из транка: http://llvm.org/svn/llvm-project/llvm/trun...ols/llc/llc.cpp