7 #if !defined(_ConversionController_h_) 8 #define _ConversionController_h_ 14 #include "smart_ptr.h" 15 #include "ElftosbLexer.h" 16 #include "ElftosbAST.h" 17 #include "EvalContext.h" 19 #include "SourceFile.h" 20 #include "Operation.h" 21 #include "DataSource.h" 22 #include "DataTarget.h" 23 #include "OutputSection.h" 24 #include "BootImage.h" 25 #include "OptionDictionary.h" 26 #include "BootImageGenerator.h" 160 extern bool g_enableHABSupport;
164 #endif // _ConversionController_h_ smart_ptr< CommandFileASTNode > m_ast
Root of the abstract syntax tree.
Definition: ConversionController.h:144
Abstract base class for data sources.
Definition: apps/elftosb/common/DataSource.h:33
OperationSequence * convertOneStatement(StatementASTNode *statement)
Definition: ConversionController.cpp:714
OperationSequence * convertKeywrapStatement(KeywrapStatementASTNode *statement)
Definition: ConversionController.cpp:1042
Ordered sequence of operations.
Definition: Operation.h:323
void processConstants(ListASTNode *constants)
Definition: ConversionController.cpp:269
virtual SourceFile * getDefaultSourceFile()
Returns the default source file, or NULL if none is set.
Definition: ConversionController.cpp:88
Definition: ElftosbAST.h:329
void processOptions(ListASTNode *options)
Definition: ConversionController.cpp:236
Definition: ElftosbAST.h:1420
OperationSequence * convertIfStatement(IfStatementASTNode *statement)
Definition: ConversionController.cpp:1180
Definition: ElftosbAST.h:882
void handleMessageStatement(MessageStatementASTNode *statement)
Definition: ConversionController.cpp:1403
std::vector< Keyblob * > keyblob_vector_t
List of keyblobs.
Definition: ConversionController.h:141
Node for a constant IVT structure as used by HAB4.
Definition: ElftosbAST.h:691
DataTarget * createTargetFromNode(ASTNode *targetNode)
Definition: ConversionController.cpp:1737
BootImage * generateOutput(BootImageGenerator *generator)
Uses a BootImageGenerator object to create the final output boot image.
Definition: ConversionController.cpp:1536
virtual bool hasSourceFile(const std::string &name)
Returns true if a source file with the name name exists.
Definition: ConversionController.cpp:73
Definition: ElftosbAST.h:1394
void setCommandFilePath(const std::string &path)
Specify the command file that controls the conversion process.
Definition: ConversionController.cpp:60
Definition: ElftosbAST.h:900
std::vector< OutputSection * > section_vector_t
List of output sections.
Definition: ConversionController.h:139
path_vector_t m_externPaths
Paths provided on the command line by the user.
Definition: ConversionController.h:147
std::vector< std::string > path_vector_t
List of file paths.
Definition: ConversionController.h:138
Concrete implementation of OptionContext.
Definition: OptionDictionary.h:27
OperationSequence * convertModeStatement(ModeStatementASTNode *statement)
Definition: ConversionController.cpp:1127
OutputSection * convertDataSection(DataSectionContentsASTNode *dataSection, uint32_t sectionID, OptionDictionary *optionsDict)
Definition: ConversionController.cpp:590
void run()
Process input files.
Definition: ConversionController.cpp:115
SourceFile * m_defaultSource
Source to use when one isn't provided.
Definition: ConversionController.h:148
Context for evaluating AST tree and expressions.
Definition: EvalContext.h:28
Simple, standard smart pointer class.
Definition: apps/elftosb/common/smart_ptr.h:18
Statement to print a message to the elftosb user.
Definition: ElftosbAST.h:1003
void testLexer(ElftosbLexer &lexer)
Definition: ConversionController.cpp:1885
section_vector_t m_outputSections
List of output sections the user wants.
Definition: ConversionController.h:149
void parseCommandFile()
Definition: ConversionController.cpp:176
source_name_vector_t m_failedSources
List of sources that failed to open successfully.
Definition: ConversionController.h:150
void processSources(ListASTNode *sources)
Definition: ConversionController.cpp:302
OperationSequence * convertEncryptStatement(EncryptStatementASTNode *statement)
Definition: ConversionController.cpp:1084
keyblob_vector_t m_keyblobs
List of keyblobs the user defines.
Definition: ConversionController.h:151
Definition: BootImage.h:13
std::map< std::string, SourceFile * > source_map_t
Map from source name to object.
Definition: ConversionController.h:137
Abstract base class for a source file containing executable code.
Definition: apps/elftosb/common/SourceFile.h:33
Definition: ElftosbAST.h:1448
Abstract interface for a manager of source files.
Definition: EvalContext.h:34
Abstract base class for the target address or range of data.
Definition: apps/elftosb/common/DataTarget.h:34
Abstract base class for values of arbitrary types.
Definition: apps/elftosb/common/Value.h:20
OperationSequence * convertFromStatement(FromStatementASTNode *statement)
Definition: ConversionController.cpp:1003
OperationSequence * convertResetStatement(ResetStatementASTNode *statement)
Creates a Reset Operation object and returns an OperationSequence containing it.
Definition: ConversionController.cpp:1167
AST node for a call statement.
Definition: ElftosbAST.h:1080
Value * convertAssignmentNodeToValue(ASTNode *node, std::string &ident)
Definition: ConversionController.cpp:625
Statement to insert a ROM_ERASE_CMD command.
Definition: ElftosbAST.h:960
ConversionController()
Default constructor.
Definition: ConversionController.cpp:36
OperationSequence * convertStatementList(ListASTNode *statements)
Definition: ConversionController.cpp:684
Node representing a raw binary section definition.
Definition: ElftosbAST.h:836
OperationSequence * convertCallStatement(CallStatementASTNode *statement)
Definition: ConversionController.cpp:914
Keyblob specification.
Definition: Keyblob.h:27
Manages the entire elftosb file conversion process.
Definition: ConversionController.h:48
virtual SourceFile * getSourceFile(const std::string &name)
Gets the requested source file.
Definition: ConversionController.cpp:78
EvalContext & getEvalContext()
Returns a reference to the context used for expression evaluation.
Definition: ConversionController.h:88
void addExternalFilePath(const std::string &path)
Specify the path of a file provided by the user from outside the command file.
Definition: ConversionController.cpp:68
void processKeyblob(ExprASTNode *idExpr, ListASTNode *entires)
Definition: ConversionController.cpp:420
std::vector< std::string > source_name_vector_t
List of source names.
Definition: ConversionController.h:140
EvalContext m_context
Evaluation context for expressions.
Definition: ConversionController.h:145
Abstract base class for all boot image format classes.
Definition: BootImage.h:25
Keyblob * m_encryptKeyblob
Keyblob used for OTFAD encryption.
Definition: ConversionController.h:153
Statement to insert a ROM_MEM_ENABLE_CMD command.
Definition: ElftosbAST.h:1160
Abstract base class for all expression AST nodes.
Definition: ElftosbAST.h:231
Statement to insert a ROM_MODE_CMD command.
Definition: ElftosbAST.h:932
Keyblob * m_keywrapKeyblob
Keyblob used for keywrapping.
Definition: ConversionController.h:152
smart_ptr< std::string > m_commandFilePath
Path to command file.
Definition: ConversionController.h:143
DataSource * createSourceFromNode(ASTNode *dataNode)
Definition: ConversionController.cpp:1568
OperationSequence * convertLoadStatement(LoadStatementASTNode *statement)
Definition: ConversionController.cpp:810
Abstract base class for generators of specific boot image formats.
Definition: BootImageGenerator.h:33
virtual ~ConversionController()
Destructor.
Definition: ConversionController.cpp:47
AST node for a load statement.
Definition: ElftosbAST.h:1040
AST node that contains other AST nodes.
Definition: ElftosbAST.h:107
Statement to insert a ROM_RESET_CMD command.
Definition: ElftosbAST.h:1138
Base class for data model of sections of the output file.
Definition: OutputSection.h:20
source_map_t m_sources
Map of source names to file objects.
Definition: ConversionController.h:146
SourceFile * getSourceFromName(std::string *sourceName, int line)
Definition: ConversionController.cpp:1841
void printIntConstExpr(const std::string &ident, IntConstExprASTNode *expr)
Definition: ConversionController.cpp:1917
std::string * substituteVariables(const std::string *message)
Definition: ConversionController.cpp:1449
The base class for all AST node classes.
Definition: ElftosbAST.h:33
Lexical scanner class for elftosb command files.
Definition: ElftosbLexer.h:62