Получить доступ к LLVM IR вызова функции библиотеки C

У меня есть код C (например, называется ac), который вызывает функцию, такую ​​как мы printf, textcolor а также gotoxy из stdio.h/curses.h. LLVM-IR для ac будет только объявлять эти функции и показывать, что эти функции были вызваны, что означает, что у него не будет подробного IR для реализации этих функций в a.ll. Можно ли как-нибудь получить доступ к этим IR или объединить все реализации (IR a.c+ IR этих вызовов функций) в один файл.ll? Я не очень хорошо знаю LLVM, поэтому, пожалуйста, дайте мне знать, если я допустил некоторые концептуальные ошибки.

1 ответ

Решение

Вы не можете получить это из вашей программы, потому что она не содержит этих функций. Даже если он статически связан, исполняемый файл, скорее всего, не будет, потому что libc (где printf и другие функции библиотеки C) существуют на вашем компьютере в виде объектного файла, а не LLVM IR.

Что вы можете сделать, это скомпилировать одну из библиотек C (попробуйте что-то маленькое и простое, как ulibc или же newlib) с LLVM. Тогда вы можете излучать LLVM IR из этого. FWIW, проект Chrome Portable Native Client делает это (с newlib) - вы можете использовать инструкции на этой странице, чтобы создать его и повторить шаги самостоятельно.

Другие вопросы по тегам