Wie kann ich eine globale Variable in LLVM deklarieren?

8

Ich möchte einige dynamische Verhaltensweisen in einige globale Variablen aufzeichnen. Also schrieb ich einen Pass, um den Code zu instrumentieren und einige Anweisungen einzufügen, um die globale Variable zu aktualisieren. Ich habe versucht, den GlobalVariable-Konstruktor zu verwenden, um eine globale Variable zu definieren, aber es gibt zwei Probleme. Erstens, wie kann ich die globalen Variablen in dem Modul definieren, das die Hauptfunktion enthält? Zweitens, wie kann ich diese globalen Variablen in anderen Modulen deklarieren? Es ist wie "extern double someThing;".

Die Zielprogramme sind in C geschrieben.

    
dalibocai 16.10.2011, 21:03
quelle

1 Antwort

21

Es gibt ein Tool, das diese und viele andere Fragen zur LLVM-API beantworten kann: llc -march=cpp . Sie können eine Bitcodedatei mithilfe von Clang oder llvm-gcc generieren und dann einen C ++ - Code erstellen, der das gleiche Modul mithilfe des cpp - Back-Ends rekonstruiert.

Eine Beispielausgabe, die zeigt, wie eine globale Variable int * definiert wird:

%Vor%     
SK-logic 16.10.2011, 21:37
quelle

Tags und Links