// -*- C++ -*- (c) 2016 Vladimír Štill #pragma once #include DIVINE_RELAX_WARNINGS #include #include DIVINE_UNRELAX_WARNINGS #include #include #include namespace divine { namespace cc { namespace elf { struct ElfError : brick::except::Error { using brick::except::Error::Error; }; void addSection( std::string filepath, std::string sectionName, const std::string §ionData ); std::vector< std::string > getSections( std::string filepath, std::string sectionName ); void linkObjects( std::string output, std::vector< std::string > args ); std::vector< std::unique_ptr< llvm::Module > > extractModules( std::string file, llvm::LLVMContext &ctx ); void compile( Compiler &cc, std::string path, std::string output, std::vector< std::string > args ); std::tuple< std::vector< std::string >, std::vector< std::string > > getExecLinkOptions( std::vector< std::string > divineSearchPaths ); } } }