2 #ifndef ROSE_Cxx_GrammarSerialization_H
3 #define ROSE_Cxx_GrammarSerialization_H
5 #ifdef ROSE_HAVE_BOOST_SERIALIZATION_LIB
8 #include <boost/serialization/export.hpp>
12 BOOST_CLASS_EXPORT_KEY(
SgFile);
57 BOOST_CLASS_EXPORT_KEY(SgAsmCommonSubExpression);
92 BOOST_CLASS_EXPORT_KEY(SgAsmElfSymverDefinedAux);
112 BOOST_CLASS_EXPORT_KEY(SgAsmElfEHFrameEntryFDList);
269 template<
class Archive>
270 void roseAstSerializationRegistration(Archive &archive) {
271 archive.template register_type<SgBinaryComposite>();
272 archive.template register_type<SgFile>();
273 archive.template register_type<SgSupport>();
274 archive.template register_type<SgAsmX86Instruction>();
275 archive.template register_type<SgAsmPowerpcInstruction>();
276 archive.template register_type<SgAsmCilInstruction>();
277 archive.template register_type<SgAsmJvmInstruction>();
278 archive.template register_type<SgAsmMipsInstruction>();
279 archive.template register_type<SgAsmM68kInstruction>();
280 archive.template register_type<SgAsmNullInstruction>();
281 archive.template register_type<SgAsmInstructionList>();
282 archive.template register_type<SgAsmInstruction>();
283 archive.template register_type<SgAsmOperandList>();
284 archive.template register_type<SgAsmBinaryAdd>();
285 archive.template register_type<SgAsmBinarySubtract>();
286 archive.template register_type<SgAsmBinaryMultiply>();
287 archive.template register_type<SgAsmBinaryDivide>();
288 archive.template register_type<SgAsmBinaryMod>();
289 archive.template register_type<SgAsmBinaryPreupdate>();
290 archive.template register_type<SgAsmBinaryPostupdate>();
291 archive.template register_type<SgAsmBinaryLsl>();
292 archive.template register_type<SgAsmBinaryMsl>();
293 archive.template register_type<SgAsmBinaryLsr>();
294 archive.template register_type<SgAsmBinaryAsr>();
295 archive.template register_type<SgAsmBinaryRor>();
296 archive.template register_type<SgAsmBinaryConcat>();
297 archive.template register_type<SgAsmBinaryExpression>();
298 archive.template register_type<SgAsmUnaryPlus>();
299 archive.template register_type<SgAsmUnaryMinus>();
300 archive.template register_type<SgAsmUnaryRrx>();
301 archive.template register_type<SgAsmUnaryTruncate>();
302 archive.template register_type<SgAsmUnarySignedExtend>();
303 archive.template register_type<SgAsmUnaryUnsignedExtend>();
304 archive.template register_type<SgAsmUnaryExpression>();
305 archive.template register_type<SgAsmDirectRegisterExpression>();
306 archive.template register_type<SgAsmIndirectRegisterExpression>();
307 archive.template register_type<SgAsmRegisterReferenceExpression>();
308 archive.template register_type<SgAsmStackExpression>();
309 archive.template register_type<SgAsmRegisterNames>();
310 archive.template register_type<SgAsmIntegerValueExpression>();
311 archive.template register_type<SgAsmFloatValueExpression>();
312 archive.template register_type<SgAsmByteOrder>();
313 archive.template register_type<SgAsmConstantExpression>();
314 archive.template register_type<SgAsmValueExpression>();
315 archive.template register_type<SgAsmMemoryReferenceExpression>();
316 archive.template register_type<SgAsmControlFlagsExpression>();
317 archive.template register_type<SgAsmCommonSubExpression>();
318 archive.template register_type<SgAsmRiscOperation>();
319 archive.template register_type<SgAsmExprListExp>();
320 archive.template register_type<SgAsmExpression>();
321 archive.template register_type<SgAsmIntegerType>();
322 archive.template register_type<SgAsmFloatType>();
323 archive.template register_type<SgAsmScalarType>();
324 archive.template register_type<SgAsmVectorType>();
325 archive.template register_type<SgAsmType>();
326 archive.template register_type<SgAsmFunction>();
327 archive.template register_type<SgAsmBlock>();
328 archive.template register_type<SgAsmStaticData>();
329 archive.template register_type<SgAsmSynthesizedDataStructureDeclaration>();
330 archive.template register_type<SgAsmSynthesizedFieldDeclaration>();
331 archive.template register_type<SgAsmSynthesizedDeclaration>();
332 archive.template register_type<SgAsmStatement>();
333 archive.template register_type<SgAsmInterpretationList>();
334 archive.template register_type<SgAsmInterpretation>();
335 archive.template register_type<SgAsmElfFileHeader>();
336 archive.template register_type<SgAsmJvmFileHeader>();
337 archive.template register_type<SgAsmElfSectionTable>();
338 archive.template register_type<SgAsmElfSectionTableEntry>();
339 archive.template register_type<SgAsmElfSegmentTable>();
340 archive.template register_type<SgAsmElfSegmentTableEntryList>();
341 archive.template register_type<SgAsmElfSegmentTableEntry>();
342 archive.template register_type<SgAsmElfSymbolSection>();
343 archive.template register_type<SgAsmElfSymbolList>();
344 archive.template register_type<SgAsmElfSymbol>();
345 archive.template register_type<SgAsmElfSymverSection>();
346 archive.template register_type<SgAsmElfSymverEntry>();
347 archive.template register_type<SgAsmElfSymverEntryList>();
348 archive.template register_type<SgAsmElfSymverDefinedSection>();
349 archive.template register_type<SgAsmElfSymverDefinedEntryList>();
350 archive.template register_type<SgAsmElfSymverDefinedEntry>();
351 archive.template register_type<SgAsmElfSymverDefinedAuxList>();
352 archive.template register_type<SgAsmElfSymverDefinedAux>();
353 archive.template register_type<SgAsmElfSymverNeededSection>();
354 archive.template register_type<SgAsmElfSymverNeededEntryList>();
355 archive.template register_type<SgAsmElfSymverNeededEntry>();
356 archive.template register_type<SgAsmElfSymverNeededAuxList>();
357 archive.template register_type<SgAsmElfSymverNeededAux>();
358 archive.template register_type<SgAsmElfRelocSection>();
359 archive.template register_type<SgAsmElfRelocEntryList>();
360 archive.template register_type<SgAsmElfRelocEntry>();
361 archive.template register_type<SgAsmElfDynamicSection>();
362 archive.template register_type<SgAsmElfDynamicEntryList>();
363 archive.template register_type<SgAsmElfDynamicEntry>();
364 archive.template register_type<SgAsmElfStringSection>();
365 archive.template register_type<SgAsmElfStrtab>();
366 archive.template register_type<SgAsmElfNoteSection>();
367 archive.template register_type<SgAsmElfNoteEntryList>();
368 archive.template register_type<SgAsmElfNoteEntry>();
369 archive.template register_type<SgAsmElfEHFrameSection>();
370 archive.template register_type<SgAsmElfEHFrameEntryCIList>();
371 archive.template register_type<SgAsmElfEHFrameEntryCI>();
372 archive.template register_type<SgAsmElfEHFrameEntryFDList>();
373 archive.template register_type<SgAsmElfEHFrameEntryFD>();
374 archive.template register_type<SgAsmElfSection>();
375 archive.template register_type<SgAsmJvmConstantPool>();
376 archive.template register_type<SgAsmJvmConstantPoolEntry>();
377 archive.template register_type<SgAsmJvmConstantValue>();
378 archive.template register_type<SgAsmJvmCodeAttribute>();
379 archive.template register_type<SgAsmJvmInnerClasses>();
380 archive.template register_type<SgAsmJvmInnerClassesEntry>();
381 archive.template register_type<SgAsmJvmEnclosingMethod>();
382 archive.template register_type<SgAsmJvmSignature>();
383 archive.template register_type<SgAsmJvmSourceFile>();
384 archive.template register_type<SgAsmJvmLineNumberEntry>();
385 archive.template register_type<SgAsmJvmLineNumberTable>();
386 archive.template register_type<SgAsmJvmModuleMainClass>();
387 archive.template register_type<SgAsmJvmAttribute>();
388 archive.template register_type<SgAsmJvmClass>();
389 archive.template register_type<SgAsmJvmAttributeTable>();
390 archive.template register_type<SgAsmJvmExceptionTable>();
391 archive.template register_type<SgAsmJvmException>();
392 archive.template register_type<SgAsmJvmMethodTable>();
393 archive.template register_type<SgAsmCliHeader>();
394 archive.template register_type<SgAsmJvmMethod>();
395 archive.template register_type<SgAsmJvmFieldTable>();
396 archive.template register_type<SgAsmJvmField>();
397 archive.template register_type<SgAsmDOSFileHeader>();
398 archive.template register_type<SgAsmDOSExtendedHeader>();
399 archive.template register_type<SgAsmPEFileHeader>();
400 archive.template register_type<SgAsmPERVASizePairList>();
401 archive.template register_type<SgAsmPERVASizePair>();
402 archive.template register_type<SgAsmPEImportItem>();
403 archive.template register_type<SgAsmPEImportItemList>();
404 archive.template register_type<SgAsmPEImportDirectory>();
405 archive.template register_type<SgAsmPEImportDirectoryList>();
406 archive.template register_type<SgAsmPEImportSection>();
407 archive.template register_type<SgAsmPEExportSection>();
408 archive.template register_type<SgAsmPEExportDirectory>();
409 archive.template register_type<SgAsmPEExportEntryList>();
410 archive.template register_type<SgAsmPEExportEntry>();
411 archive.template register_type<SgAsmPEStringSection>();
412 archive.template register_type<SgAsmPESectionTable>();
413 archive.template register_type<SgAsmPESectionTableEntry>();
414 archive.template register_type<SgAsmPESection>();
415 archive.template register_type<SgAsmCoffSymbolTable>();
416 archive.template register_type<SgAsmCoffSymbolList>();
417 archive.template register_type<SgAsmCoffSymbol>();
418 archive.template register_type<SgAsmCoffStrtab>();
419 archive.template register_type<SgAsmStringStorage>();
420 archive.template register_type<SgAsmBasicString>();
421 archive.template register_type<SgAsmStoredString>();
422 archive.template register_type<SgAsmGenericString>();
423 archive.template register_type<SgAsmGenericHeaderList>();
424 archive.template register_type<SgAsmGenericHeader>();
425 archive.template register_type<SgAsmGenericSymbolList>();
426 archive.template register_type<SgAsmGenericSymbol>();
427 archive.template register_type<SgAsmGenericStrtab>();
428 archive.template register_type<SgAsmGenericSectionList>();
429 archive.template register_type<SgAsmGenericSection>();
430 archive.template register_type<SgAsmGenericDLLList>();
431 archive.template register_type<SgAsmGenericDLL>();
432 archive.template register_type<SgAsmGenericFormat>();
433 archive.template register_type<SgAsmGenericFileList>();
434 archive.template register_type<SgAsmGenericFile>();
435 archive.template register_type<SgAsmExecutableFileFormat>();
436 archive.template register_type<SgAsmCilAssembly>();
437 archive.template register_type<SgAsmCilAssemblyOS>();
438 archive.template register_type<SgAsmCilAssemblyProcessor>();
439 archive.template register_type<SgAsmCilAssemblyRef>();
440 archive.template register_type<SgAsmCilAssemblyRefOS>();
441 archive.template register_type<SgAsmCilAssemblyRefProcessor>();
442 archive.template register_type<SgAsmCilClassLayout>();
443 archive.template register_type<SgAsmCilConstant>();
444 archive.template register_type<SgAsmCilCustomAttribute>();
445 archive.template register_type<SgAsmCilDeclSecurity>();
446 archive.template register_type<SgAsmCilEvent>();
447 archive.template register_type<SgAsmCilEventMap>();
448 archive.template register_type<SgAsmCilExportedType>();
449 archive.template register_type<SgAsmCilField>();
450 archive.template register_type<SgAsmCilFieldLayout>();
451 archive.template register_type<SgAsmCilFieldMarshal>();
452 archive.template register_type<SgAsmCilFieldRVA>();
453 archive.template register_type<SgAsmCilFile>();
454 archive.template register_type<SgAsmCilGenericParam>();
455 archive.template register_type<SgAsmCilGenericParamConstraint>();
456 archive.template register_type<SgAsmCilImplMap>();
457 archive.template register_type<SgAsmCilInterfaceImpl>();
458 archive.template register_type<SgAsmCilManifestResource>();
459 archive.template register_type<SgAsmCilMemberRef>();
460 archive.template register_type<SgAsmCilMethodDef>();
461 archive.template register_type<SgAsmCilMethodImpl>();
462 archive.template register_type<SgAsmCilMethodSemantics>();
463 archive.template register_type<SgAsmCilMethodSpec>();
464 archive.template register_type<SgAsmCilModule>();
465 archive.template register_type<SgAsmCilModuleRef>();
466 archive.template register_type<SgAsmCilNestedClass>();
467 archive.template register_type<SgAsmCilParam>();
468 archive.template register_type<SgAsmCilProperty>();
469 archive.template register_type<SgAsmCilPropertyMap>();
470 archive.template register_type<SgAsmCilStandAloneSig>();
471 archive.template register_type<SgAsmCilTypeDef>();
472 archive.template register_type<SgAsmCilTypeRef>();
473 archive.template register_type<SgAsmCilTypeSpec>();
474 archive.template register_type<SgAsmCilAssemblyTable>();
475 archive.template register_type<SgAsmCilAssemblyOSTable>();
476 archive.template register_type<SgAsmCilAssemblyProcessorTable>();
477 archive.template register_type<SgAsmCilAssemblyRefTable>();
478 archive.template register_type<SgAsmCilAssemblyRefOSTable>();
479 archive.template register_type<SgAsmCilAssemblyRefProcessorTable>();
480 archive.template register_type<SgAsmCilClassLayoutTable>();
481 archive.template register_type<SgAsmCilConstantTable>();
482 archive.template register_type<SgAsmCilCustomAttributeTable>();
483 archive.template register_type<SgAsmCilDeclSecurityTable>();
484 archive.template register_type<SgAsmCilEventTable>();
485 archive.template register_type<SgAsmCilEventMapTable>();
486 archive.template register_type<SgAsmCilExportedTypeTable>();
487 archive.template register_type<SgAsmCilFieldTable>();
488 archive.template register_type<SgAsmCilFieldLayoutTable>();
489 archive.template register_type<SgAsmCilFieldMarshalTable>();
490 archive.template register_type<SgAsmCilFieldRVATable>();
491 archive.template register_type<SgAsmCilFileTable>();
492 archive.template register_type<SgAsmCilGenericParamTable>();
493 archive.template register_type<SgAsmCilGenericParamConstraintTable>();
494 archive.template register_type<SgAsmCilImplMapTable>();
495 archive.template register_type<SgAsmCilInterfaceImplTable>();
496 archive.template register_type<SgAsmCilManifestResourceTable>();
497 archive.template register_type<SgAsmCilMemberRefTable>();
498 archive.template register_type<SgAsmCilMethodDefTable>();
499 archive.template register_type<SgAsmCilMethodImplTable>();
500 archive.template register_type<SgAsmCilMethodSemanticsTable>();
501 archive.template register_type<SgAsmCilMethodSpecTable>();
502 archive.template register_type<SgAsmCilModuleTable>();
503 archive.template register_type<SgAsmCilModuleRefTable>();
504 archive.template register_type<SgAsmCilNestedClassTable>();
505 archive.template register_type<SgAsmCilParamTable>();
506 archive.template register_type<SgAsmCilPropertyTable>();
507 archive.template register_type<SgAsmCilPropertyMapTable>();
508 archive.template register_type<SgAsmCilStandAloneSigTable>();
509 archive.template register_type<SgAsmCilTypeDefTable>();
510 archive.template register_type<SgAsmCilTypeRefTable>();
511 archive.template register_type<SgAsmCilTypeSpecTable>();
512 archive.template register_type<SgAsmCilMetadata>();
513 archive.template register_type<SgAsmCilMetadataHeap>();
514 archive.template register_type<SgAsmCilUint8Heap>();
515 archive.template register_type<SgAsmCilUint32Heap>();
516 archive.template register_type<SgAsmCilDataStream>();
517 archive.template register_type<SgAsmCilMetadataRoot>();
518 archive.template register_type<SgAsmCilNode>();
519 archive.template register_type<SgAsmJvmNode>();
520 archive.template register_type<SgAsmNode>();
List of pointers to file sections.
The GNU symbol version definitions.
One entry of the ELF symbol version needed table.
String associated with a binary file.
Expression that adds two operands.
JVM SourceFile attribute.
List of dynamic linking section entries.
Contiguous region of a file.
Represents a JVM method_info table/array.
JVM ModuleMainClass attribute.
Expression representing a (no-op) unary plus operation.
Base class for references to a machine register.
Expression that performs a right rotate.
Auxiliary info for needed symbol version.
Base class for all binary analysis IR nodes.
This class represents a source file for a project (which may contian many source files and or directo...
List of entries for the ELF symbol version definition table.
One entry of an ELF relocation table.
Expression that represents an update to a storage location.
Portable Executable Import Section.
CIL InterfaceImpl tables.
List of binary interpretations.
Base class for machine instructions.
Byte order specification.
Represents an entry in a JVM constant pool.
CIL AssemblyProcessor node.
Base class for scalar types.
Represents a JVM exception_info table/array.
List of expression nodes.
Expression that performs an arithmetic, sign-bit preserving right shift.
CIL StandAloneSig tables.
Expression that performs a logical, sign-bit non-preserving right shift.
Represents an JVM constant pool.
Strings stored in an ELF or PE container.
Expression that returns the remainder when dividing the first operand by the second.
Node to hold a list of symbol node pointers.
Base class for ELF file sections.
Expression representing truncation.
Base class for PE sections.
Represents a synthesized function.
JVM EnclosingMethod attribute.
Represents one JVS machine instruction.
Expression that divides the first operand by the second.
CIL AssemblyRefProcessor node.
Hods a list of symbol version aux entries.
COFF symbol string table.
Base class for CIL branch of binary analysis IR nodes.
This class represents the base class of a numbr of IR nodes that don't otherwise fit into the existin...
Entry in an ELF symbol version table.
Base class for string tables.
Base class for references to a machine register.
CIL CustomAttribute tables.
Base class for CIL branch of binary analysis IR nodes.
ELF error handling frame entry frame description entry.
Represents an ELF relocation section.
Base class for CIL branch of binary analysis IR nodes.
One import directory per library.
GNU symbol version requirements table.
List of ELF relocation entries.
CIL AssemblyRefProcessor tables.
List of AST file node pointers.
ELF section containing dynamic linking information.
JVM LineNumberTable attribute.
List of ELF EH frame CI entries.
CIL GenericParamConstraint node.
Represents an ELF EH frame section.
One entry of an ELF notes table.
ELF string table section.
Reference to memory locations.
An ordered list of registers.
CIL AssemblyProcessor tables.
Expression represting negation.
List of pointers to other AST nodes.
Expression representing a machine register.
CIL GenericParamConstraint tables.
Base class for integer values.
ELF file section containing symbols.
List of operands for an instruction.
Base class for dynamically linked library information.
Base class for a JVM attribute.
A single imported object.
Represents one PowerPC machine instruction.
One entry from an ELF symbol version definition table.
Represents a single ELF symbol.
Base class for strings related to binary specimens.
CIL MethodSemantics node.
Represents static data in an executable.
Represents a JVM attribute_info table/array.
Base class for unary expressions.
Represents one Intel x86 machine instruction.
Base class for CIL branch of binary analysis IR nodes.
Base class for statement-like subclasses.
Represents one entry of a segment table.
Expression representing sign extending.
Base class for expressions.
Expression that performs a logical left shift operation.
List of pointers to other nodes.
Expression that multiplies two operands.
Expression that performs a logical left shift operation filling low-order bits with one...
Represents one MIPS machine instruction.
Node to hold list of ELF note entries.
CIL CustomAttribute node.
List of entries from a symbol version table.
List of SgAsmPERVASizePair AST nodes.
Expression representing unsigned extending.
Base class for binary types.
Registers accessed indirectly.
A JVM InnerClasses attribute array entry.
CIL ManifestResource node.
JVM ConstantValue attribute.
Expression that subtracts the second operand from the first.
Represents a JVM field_info table/array.
Expression that represents an update to a storage location.
Base class for synthesized declarations.
Represents a JVM InnerClasses attribute.
One entry from the dynamic linking table.
Expression that concatenates two values to form a wider value.
Base class for JVM branch of binary analysis IR nodes.
CIL MethodSemantics tables.
The ELF symbol version table.
Represents one entry in an ELF section table.
Represents an ELF segment table.
Strings stored in an ELF or PE container.
Represents an ELF section table.
A list of imported items.
Represents an interpretation of a binary container.
List of symbol version needed entries.
Base class for binary files.
Base class for binary expressions.
Declaration-like nodes that encapsulate multiple instructions.
Base class for vector types.
CIL ManifestResource tables.
Base class for constants.
List of symbol version aux entries.
List of SgAsmInstruction nodes.
Static representation of instruction semantics.
CIL AssemblyRefOS tables.
A list of PE Import Directories.
ELF error handling frame entry, common information entry.