2017-02-03 9 views
-1

Может ли кто-нибудь помочь мне в поиске фактических имен аргументов printf() звонок от LLVM-IR.Как печатать аргументы имена printf от LLVM-IR

Например: У меня есть printf("%d,%d,x,y); заявление в программе.

Я пишу LLVM pass для поиска фактических имен аргументов (x и y в приведенном выше примере).

+0

Пожалуйста, проверьте http://stackoverflow.com/help/mcve, чтобы узнать, как создать минимальный, полный и проверенный пример – pringi

ответ

1

Один из способов сделать это, используя CallExpr для идентификации вызовов printf.
Вы должны использовать getArgs() вместо getArg(0) и использовать итератор для анализа аргументов.

const Expr* expr = CE->getArg(0); //CE is the CallExpr for printf 
if (const ImplicitCaseExpr* ICE = 
      llvm::dyn_cast<ImplicitCastExpr>(expr)) { 
    const Expr* DRE_VAR = ICE->getSubExpr(); 
    //now, cast and parse the AST 
} 

EDIT: Глядя на это несколько месяцев спустя, я могу вам сказать, что единственный способ сделать это было бы для Вас, чтобы сделать отображение заполнителя.

 Смежные вопросы

  • Нет связанных вопросов^_^