def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) ir = gtirb.IR() m = gtirb.Module( binary_path="binary_path", file_format=gtirb.Module.FileFormat.RAW, isa=gtirb.Module.ISA.ValidButUnsupported, name="name", preferred_addr=1, rebase_delta=2, ) m.ir = ir s = gtirb.Section( name="name", flags=( gtirb.Section.Flag.Executable, gtirb.Section.Flag.Readable, gtirb.Section.Flag.Loaded, gtirb.Section.Flag.Initialized, ), ) s.module = m bi = gtirb.ByteInterval(address=0, size=10, contents=b"abcd") bi.section = s cb = gtirb.CodeBlock(size=4, offset=0, decode_mode=1) cb.byte_interval = bi db = gtirb.DataBlock(size=6, offset=4) db.byte_interval = bi sym = gtirb.Symbol(name="name", payload=cb) sym.module = m sac = gtirb.SymAddrConst(0, sym, {gtirb.SymbolicExpression.Attribute.Part1}) bi.symbolic_expressions[2] = sac p = gtirb.ProxyBlock() p.module = m ir.cfg.add( gtirb.Edge( cb, p, gtirb.Edge.Label(type=gtirb.Edge.Type.Branch, conditional=False, direct=True), )) ir.cfg.add(gtirb.Edge(p, p)) m.aux_data["key"] = gtirb.AuxData(gtirb.Offset(s, 777), "Offset") ir.aux_data["key"] = gtirb.AuxData("value", "string") self.ir = ir
def test_lazy_never_deserialized(self): serialized = gtirb.AuxData("testing 123", "string")._to_protobuf() ad1 = gtirb.AuxData._from_protobuf(serialized, self.fake_ir) # Peek inside: the data is not yet deserialized self.assertTrue(ad1._data is None) serialized2 = ad1._to_protobuf() self.assertTrue(ad1._data is None) self.assertEqual(serialized, serialized2)
def test_auxdata(self): node = gtirb.AuxData( type_name="mapping<string,set<UUID>>", data={ "a": set([uuid.uuid4(), uuid.uuid4()]), "b": set([uuid.uuid4()]), }, ) string = repr(node) new_node = eval(string) # auxdata has no deep_eq # (because how can we ensure "data" has a deep_eq?) self.assertEqual(node.type_name, new_node.type_name) self.assertEqual(node.data, new_node.data)
def test_lazy(self): ad1 = gtirb.AuxData("test1", "string") self.assertEqual(ad1.data, "test1") serialized = ad1._to_protobuf() ad2 = gtirb.AuxData._from_protobuf(serialized, self.fake_ir) # Peek inside: the data is not yet deserialized self.assertTrue(ad2._data is None) # Accessing the data should deserialize self.assertEqual(ad1.data, ad2.data) self.assertTrue(ad2._data is not None) # Just exercise repr self.assertEqual(repr(ad2), "AuxData(type_name='string', data='test1', )")
def make_pe_resource_data(self) -> gtirb.IR: ir, m = create_test_module( file_format=gtirb.Module.FileFormat.PE, isa=gtirb.Module.ISA.X64, binary_type=["EXEC", "EXE", "WINDOWS_GUI"], ) _, bi = add_section(m, ".text") entry = add_code_block(bi, b"\xC3") m.entry_point = entry resource_data = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x02\x00\x06\x00\x00\x00 \x00\x00\x80\ \x18\x00\x00\x008\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x01\x00\x07\x00\x00\x00P\x00\ \x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x01\x00\x01\x00\x00\x00h\x00\x00\x80\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\t\x04\ \x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x01\x00\t\x04\x00\x00\x90\x00\x00\x00\ \xa0`\x00\x00H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \xe8`\x00\x00}\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00T\x00e\x00s\ \x00t\x00 \x00r\x00e\x00s\x00o\x00u\x00r\x00c\x00e\x00 \x00s\ \x00t\x00r\x00i\x00n\x00g\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ <?xml version='1.0' encoding='UTF-8' standalone='yes'?>\ \r\n<assembly xmlns='urn:schemas-microsoft-com:asm.v1\ ' manifestVersion='1.0'>\r\n \ <trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v3\">\r\n\ <security>\r\n <requestedPrivileges>\r\n \ <requestedExecutionLevel level='asInvoker' uiAccess='false' />\r\n\ </requestedPrivileges>\r\n </security>\r\n </trustInfo>\ \r\n</assembly>\r\n\x00\x00\x00')" _, bi = add_section(m, ".rsrc") _ = add_byte_block(bi, gtirb.block.DataBlock, resource_data) off1 = gtirb.Offset(bi, 0) off2 = gtirb.Offset(bi, 72) entry1 = ( [ 72, 0, 0, 0, 32, 0, 0, 0, 255, 255, 6, 0, 255, 255, 7, 0, 0, 0, 0, 0, 48, 16, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, ], off1, 72, ) entry2 = ( [ 125, 1, 0, 0, 32, 0, 0, 0, 255, 255, 24, 0, 255, 255, 1, 0, 0, 0, 0, 0, 48, 16, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0, ], off2, 381, ) m.aux_data["peResources"] = gtirb.AuxData( [entry1, entry2], "sequence<tuple<sequence<uint8_t>,Offset,uint64_t>>", ) return ir
def test_module(self): id1 = uuid.uuid4() id2 = uuid.uuid4() id3 = uuid.uuid4() id4 = uuid.uuid4() id5 = uuid.uuid4() id6 = uuid.uuid4() id7 = uuid.uuid4() id8 = uuid.uuid4() m1 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertTrue(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("other_value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertTrue(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="other_binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.PE, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.ARM, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="other_name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=5, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=5, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=2, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id4), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id4), ), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym11", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=(gtirb.Symbol(name="sym1", uuid=id5), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect22", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=(gtirb.Section(name="sect2", uuid=id8), ), uuid=id1, ) self.assertFalse(m1.deep_eq(m2)) m2 = gtirb.Module( aux_data={"key": gtirb.AuxData("value", "string")}, binary_path="binary_path", file_format=gtirb.Module.FileFormat.ELF, isa=gtirb.Module.ISA.X64, name="name", preferred_addr=1, rebase_delta=2, entry_point=gtirb.CodeBlock(size=1, uuid=id2), proxies=(gtirb.ProxyBlock(uuid=id3), gtirb.ProxyBlock(uuid=id4)), symbols=( gtirb.Symbol(name="sym1", uuid=id5), gtirb.Symbol(name="sym2", uuid=id6), ), sections=( gtirb.Section(name="sect1", uuid=id7), gtirb.Section(name="sect2", uuid=id8), ), uuid=id2, ) self.assertFalse(m1.deep_eq(m2))
def test_ir(self): id1 = uuid.uuid4() id2 = uuid.uuid4() id3 = uuid.uuid4() id4 = uuid.uuid4() id5 = uuid.uuid4() ir1 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertTrue(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("other_value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertTrue(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m11", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertFalse(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=(gtirb.Module(name="m1", uuid=id2), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertFalse(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=55, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertFalse(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=(gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id1, ) self.assertFalse(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=5, uuid=id1, ) self.assertFalse(ir1.deep_eq(ir2)) ir2 = gtirb.IR( modules=( gtirb.Module(name="m1", uuid=id2), gtirb.Module(name="m2", uuid=id3), ), aux_data={"key": gtirb.AuxData("value", "string")}, cfg=( gtirb.Edge( gtirb.CodeBlock(size=1, uuid=id4), gtirb.CodeBlock(size=2, uuid=id4), None, ), gtirb.Edge( gtirb.CodeBlock(size=3, uuid=id4), gtirb.CodeBlock(size=4, uuid=id4), None, ), ), version=1, uuid=id5, ) self.assertFalse(ir1.deep_eq(ir2))
def add_standard_aux_data_tables(m: gtirb.Module) -> None: """ Adds aux data tables that ddisasm normally produces. This helps avoid every test needing to know the schemas. """ m.aux_data["binaryType"] = gtirb.AuxData(type_name="sequence<string>", data=list()) m.aux_data["cfiDirectives"] = gtirb.AuxData( type_name=( "mapping<Offset,sequence<tuple<string,sequence<int64_t>,UUID>>>"), data=dict(), ) m.aux_data["comments"] = gtirb.AuxData(type_name="mapping<Offset,string>", data=dict()) m.aux_data["sectionProperties"] = gtirb.AuxData( type_name="mapping<UUID,tuple<uint64_t,uint64_t>>", data=dict()) m.aux_data["encodings"] = gtirb.AuxData(type_name="mapping<UUID,string>", data=dict()) m.aux_data["functionBlocks"] = gtirb.AuxData( type_name="mapping<UUID,set<UUID>>", data=dict()) m.aux_data["functionEntries"] = gtirb.AuxData( type_name="mapping<UUID,set<UUID>>", data=dict()) m.aux_data["functionNames"] = gtirb.AuxData(type_name="mapping<UUID,UUID>", data=dict()) m.aux_data["libraries"] = gtirb.AuxData(type_name="sequence<string>", data=list()) m.aux_data["libraryPaths"] = gtirb.AuxData(type_name="sequence<string>", data=list()) m.aux_data["padding"] = gtirb.AuxData(type_name="mapping<Offset,uint64_t>", data=dict()) m.aux_data["symbolForwarding"] = gtirb.AuxData( type_name="mapping<UUID,UUID>", data=dict()) m.aux_data["symbolicExpressionSizes"] = gtirb.AuxData( type_name="mapping<Offset,uint64_t>", data=dict()) m.aux_data["SCCs"] = gtirb.AuxData(type_name="mapping<UUID,int64_t>", data=dict()) if m.file_format == gtirb.Module.FileFormat.ELF: m.aux_data["alignment"] = gtirb.AuxData( type_name="mapping<UUID,uint64_t>", data=dict()) m.aux_data["dynamicEntries"] = gtirb.AuxData( type_name="set<tuple<string,uint64_t>>", data=set()) m.aux_data["elfSymbolInfo"] = gtirb.AuxData( type_name=( "mapping<UUID,tuple<uint64_t,string,string,string,uint64_t>>"), data=dict(), ) m.aux_data["elfSymbolTabIdxInfo"] = gtirb.AuxData( type_name="mapping<UUID,sequence<tuple<string,uint64_t>>>", data=dict(), ) elif m.file_format == gtirb.Module.FileFormat.PE: m.aux_data["peExportEntries"] = gtirb.AuxData( type_name="sequence<tuple<uint64_t,int64_t,string>>", data=list()) m.aux_data["peExportedSymbols"] = gtirb.AuxData( type_name="sequence<UUID>", data=list()) m.aux_data["peImportEntries"] = gtirb.AuxData( type_name="sequence<tuple<uint64_t,int64_t,string,string>>", data=list(), ) m.aux_data["peImportedSymbols"] = gtirb.AuxData( type_name="sequence<UUID>", data=list()) m.aux_data["peResources"] = gtirb.AuxData( type_name="sequence<tuple<sequence<uint8_t>,Offset,uint64_t>>", data=list(), )
def create_floats(filename: str): ir = gtirb.IR() ir.aux_data["AFloat"] = gtirb.AuxData(0.5, "float") ir.aux_data["ADouble"] = gtirb.AuxData(2.0, "double") ir.save_protobuf(filename)