//
// C++ class which implements the opaque lto_module_t
//
-class LTOModule {
-public:
+struct LTOModule {
static bool isBitcodeFile(const void* mem, size_t length);
static bool isBitcodeFile(const char* path);
static bool isBitcodeFileForTarget(const char* path,
const char* triplePrefix);
- static LTOModule* makeLTOModule(const char* path, std::string& errMsg);
+ static LTOModule* makeLTOModule(const char* path,
+ std::string& errMsg);
static LTOModule* makeLTOModule(const void* mem, size_t length,
- std::string& errMsg);
+ std::string& errMsg);
const char* getTargetTriple();
+ void setTargetTriple(const char*);
uint32_t getSymbolCount();
lto_symbol_attributes getSymbolAttributes(uint32_t index);
const char* getSymbolName(uint32_t index);
void addDefinedDataSymbol(llvm::GlobalValue* v,
llvm::Mangler &mangler);
void addAsmGlobalSymbol(const char *);
- static bool isTargetMatch(llvm::MemoryBuffer* memBuffer,
+ void addObjCClass(llvm::GlobalVariable* clgv);
+ void addObjCCategory(llvm::GlobalVariable* clgv);
+ void addObjCClassRef(llvm::GlobalVariable* clgv);
+ bool objcClassNameFromExpression(llvm::Constant* c,
+ std::string& name);
+
+ static bool isTargetMatch(llvm::MemoryBuffer* memBuffer,
const char* triplePrefix);
-
- static LTOModule* makeLTOModule(llvm::MemoryBuffer* buffer,
+
+ static LTOModule* makeLTOModule(llvm::MemoryBuffer* buffer,
std::string& errMsg);
static llvm::MemoryBuffer* makeBuffer(const void* mem, size_t length);
-
+
typedef llvm::StringMap<uint8_t> StringSet;
struct NameAndAttributes {
llvm::StringMap<NameAndAttributes> _undefines;
};
-extern std::string getFeatureString(const char *TargetTriple);
-
#endif // LTO_MODULE_H