LLOIFF is an intermediate file format which exists only in memory. This format is generated by stage 1 of LLO. The design of this intermediate file format must be robust enough that it can handle file formats of all types
lifted to it. For example, PE-COFF (COFF meaning: including OBJ files), ELF, etc.
There can be multiple LLOIFF's at a given time, just as there can be multiple OBJ files in a LIB.
LLOIFF needs to provide a clean C++2017 interfacable class that contains all information possible about a given file. This information includes: symbols, sections, original file, size, virtual size, etc...
The LLOIFF symbol class is the base class for all symbol types. Such information as the original rva, symbol size, and symbol hash with setters and getters must be made. Something along these lines: