document ├── build_info = '' <str> [Information about the build] ├── configuration [Boolean flags that configure what is supposed to be displayed and how] │ ├── debug_info_available = 'None' <NoneType> [True if Dwarf debugging information was found in both binaries] │ ├── display_appeared_symbols_overview = 'True' <bool> [True if an overview about appeared symbols is supposed to be displayed] │ ├── display_binary_details = 'False' <bool> [True if details about binaries are supposed to be displayed] │ ├── display_build_info = 'False' <bool> [True if build information is supposed to be displayed] │ ├── display_details = 'True' <bool> [True if symbol detail information is supposed to be displayed] │ ├── display_disappeared_symbols_overview = 'True' <bool> [True if an overview about disappeared symbols is supposed to be displayed] │ ├── display_migrated_symbols = 'True' <bool> [True if migrated symbols are supposed to be displayed] │ ├── display_migrated_symbols_overview = 'True' <bool> [True if an overview about migrated symbols is supposed to be displayed] │ ├── display_new_binary_info = 'False' <bool> [True if new binary info is supposed to be displayed] │ ├── display_old_binary_info = 'False' <bool> [True if old binary info is supposed to be displayed] │ ├── display_persisting_symbols_overview = 'True' <bool> [True if an overview about persisting symbols is supposed to be displayed] │ ├── display_similar_symbols = 'True' <bool> [True if similar symbols are supposed to be displayed] │ ├── display_similar_symbols_overview = 'True' <bool> [True if an overview about similar symbols is supposed to be displayed] │ └── instructions_available = 'True' <bool> [True if instructions could be read from both binary files] ├── files [Information about relevant files] │ └── input [Information about relevant input files] │ ├── new [Information about relevant input files] │ │ ├── binary_path = '../../tests/x86_64/libelf_diff_test2_debug_new.a' <str> [The path to the binary file] │ │ ├── debug_info_available = 'True' <bool> [True if Dwarf debug info avaiable in the elf binary] │ │ └── source_files [Source file by file id (dict values of type SourceFile)] │ └── old [Information about relevant input files] │ ├── binary_path = '../../tests/x86_64/libelf_diff_test2_debug_old.a' <str> [The path to the binary file] │ ├── debug_info_available = 'True' <bool> [True if Dwarf debug info avaiable in the elf binary] │ └── source_files [Source file by file id (dict values of type SourceFile)] ├── general [General information about the document] │ ├── doc_title = 'ELF Binary Comparison' <str> [Document title] │ ├── document_version = '1' <int> [The document version of this document] │ ├── elf_diff_repo_root = '/home/runner/work/elf_diff/elf_diff/src/elf_diff' <str> [Path to the root of the elf_diff git repo] │ ├── elf_diff_version = 'aa6129c742ab24ee634fce4c7ca988d6ee8652c9' <str> [The elf_diff version that generated the page] │ ├── generation_date = '2024-07-24 15:21:01' <str> [The document generation date] │ └── page_title = 'ELF Binary Comparison - (c) 2021 by noseglasses' <str> [The title of the document page] ├── new_binary_info = '' <str> [Info about the new binary] ├── old_binary_info = '' <str> [Info about the old binary] ├── statistics │ ├── overall [Overall statistics] │ │ ├── delta │ │ │ └── resource_consumption [Information about resource consumption] │ │ │ ├── bss = '0' <int> [bss section memory consumption] │ │ │ ├── code = '11' <int> [Memory required to store code] │ │ │ ├── data = '0' <int> [data section memory consumption] │ │ │ ├── static_ram = '0' <int> [Static RAM consumption] │ │ │ └── text = '11' <int> [text section memory consumption] │ │ ├── new │ │ │ └── resource_consumption [Information about resource consumption] │ │ │ ├── bss = '0' <int> [bss section memory consumption] │ │ │ ├── code = '450' <int> [Memory required to store code] │ │ │ ├── data = '36' <int> [data section memory consumption] │ │ │ ├── static_ram = '36' <int> [Static RAM consumption] │ │ │ └── text = '414' <int> [text section memory consumption] │ │ └── old │ │ └── resource_consumption [Information about resource consumption] │ │ ├── bss = '0' <int> [bss section memory consumption] │ │ ├── code = '439' <int> [Memory required to store code] │ │ ├── data = '36' <int> [data section memory consumption] │ │ ├── static_ram = '36' <int> [Static RAM consumption] │ │ └── text = '403' <int> [text section memory consumption] │ └── symbols [Statistics of symbols] │ ├── appeared │ │ └── count = '6' <int> [Number of symbols] │ ├── disappeared │ │ └── count = '6' <int> [Number of symbols] │ ├── new [Overall statistics about symbols considered] │ │ ├── count [Number of symbols] │ │ │ ├── dropped = '0' <int> [Number of symbols dropped] │ │ │ ├── selected = '17' <int> [Number of symbols selected] │ │ │ └── total = '17' <int> [Number of total symbols in binary] │ │ └── regex [Overall statistics about symbols considered] │ │ ├── exclusion = '' <str> [Regular expression used to exclude symbols found in binary] │ │ └── selection = '.*' <str> [Regular expression used to select symbols found in binary] │ ├── old [Overall statistics about symbols considered] │ │ ├── count [Number of symbols] │ │ │ ├── dropped = '0' <int> [Number of symbols dropped] │ │ │ ├── selected = '17' <int> [Number of symbols selected] │ │ │ └── total = '17' <int> [Number of total symbols in binary] │ │ └── regex [Overall statistics about symbols considered] │ │ ├── exclusion = '' <str> [Regular expression used to exclude symbols found in binary] │ │ └── selection = '.*' <str> [Regular expression used to select symbols found in binary] │ ├── persisting │ │ ├── assembly_differs_count = '1' <int> [Number of persisting symbols with assembly differences] │ │ ├── count = '11' <int> [Number of symbols] │ │ └── resource_consumption [Total resource consumption of considered symbols of given class] │ │ ├── delta = '8' <int> [Change to number of bytes consumed (only for persisting and similar)] │ │ ├── new = '179' <int> [Overall number of bytes consumed in the old version] │ │ └── old = '171' <int> [Overall number of bytes consumed in the old version] │ └── similar │ └── count = '16' <int> [Number of symbols] └── symbols [Symbols by id/table id ] ├── appeared [Dict of appeared symbols by symbol id (dict values of type AppearedSymbol)] ├── disappeared [Disappeared symbols by symbol id (dict values of type DisappearedSymbol)] ├── migrated [Migrated symbols by symbol id (dict values of type MigratedSymbol)] ├── new [Dict of selected symbols of the new binary by symbol id (dict values of type Symbol)] ├── old [Dict of selected symbols of the old binary by symbol id (dict values of type Symbol)] ├── persisting [Persisting symbols by symbol id (dict values of type PersistingSymbol)] └── similar [Similar symbols by symbol id (dict values of type SimilarSymbols)]
Please note: The actual node representations are not listed due to space constraints.
source_file ├── id <int> [The id of the source file] ├── path <str> [The full path of the source file as reported by binutils/nm] └── path_wo_prefix <str> [The name of the source file with user defined prefix stripped]
symbol ├── id <int> [Unique symbol identifier] ├── instructions <str> [Code instructions (assembly with possibly high level language code intermixed)] ├── is_demangled <bool> [True if the symbol name is demangled] ├── is_stored_in_program_memory <bool> [True if the symbol is stored in program memory] ├── name <str> [The symbol name (demangled if supported)] ├── name_mangled <str> [The mangled symbol name] ├── size <int> [Number of bytes occupied by the symbol] ├── source │ ├── file_id <int> [The id of the source file] │ └── line <int> [The line number in the source file where the symbol is defined] └── type <str> [Type character matching the characters used by the nm binutils tool]
persisting_symbol ├── display_info [Information that configures how things are displayed] │ ├── anchor_id <str> [Unique string identifier token that can be used to generate a HTML anchor for cross references] │ ├── display_symbol_details <bool> [True if symbol details are supposed to be displayed] │ └── symbol_class <str> [The class of symbol old/new/appeared/disappeared/persisting/similar] └── related_symbols [A relation between two symbols] ├── new <Symbol> [The new symbol] ├── old <Symbol> [The old symbol] └── size_delta <int> [Difference in bytes between the resource occupation of the two symbols]
appeared_symbol ├── actual <Symbol> [The actual symbol] └── display_info [Information that configures how things are displayed] ├── anchor_id <str> [Unique string identifier token that can be used to generate a HTML anchor for cross references] ├── display_symbol_details <bool> [True if symbol details are supposed to be displayed] └── symbol_class <str> [The class of symbol old/new/appeared/disappeared/persisting/similar]
disappeared_symbol ├── actual <Symbol> [The actual symbol] └── display_info [Information that configures how things are displayed] ├── anchor_id <str> [Unique string identifier token that can be used to generate a HTML anchor for cross references] ├── display_symbol_details <bool> [True if symbol details are supposed to be displayed] └── symbol_class <str> [The class of symbol old/new/appeared/disappeared/persisting/similar]
similar_symbols ├── display_info [Information that configures how things are displayed] │ ├── anchor_id <str> [Unique string identifier token that can be used to generate a HTML anchor for cross references] │ ├── display_symbol_details <bool> [True if symbol details are supposed to be displayed] │ └── symbol_class <str> [The class of symbol old/new/appeared/disappeared/persisting/similar] ├── id <int> [The id of the symbol pair] ├── new │ └── signature_tagged <str> [A tagged version of the symbol signature. Taggs '...HIGHLIGHT_START...' and '...HIGHLIGHT_END...' must be replaced accordingly, e.g. for highlighting.] ├── old │ └── signature_tagged <str> [A tagged version of the symbol signature. Taggs '...HIGHLIGHT_START...' and '...HIGHLIGHT_END...' must be replaced accordingly, e.g. for highlighting.] ├── related_symbols [A relation between two symbols] │ ├── new <Symbol> [The new symbol] │ ├── old <Symbol> [The old symbol] │ └── size_delta <int> [Difference in bytes between the resource occupation of the two symbols] └── similarities [Symbol similarity ratios] ├── instruction <float> [The percentage of symbol instruction similarity] └── signature <float> [The percentage of symbol signature similarity]
migrated_symbol ├── display_info [Information that configures how things are displayed] │ ├── anchor_id <str> [Unique string identifier token that can be used to generate a HTML anchor for cross references] │ ├── display_symbol_details <bool> [True if symbol details are supposed to be displayed] │ └── symbol_class <str> [The class of symbol old/new/appeared/disappeared/persisting/similar] └── related_symbols [A relation between two symbols] ├── new <Symbol> [The new symbol] ├── old <Symbol> [The old symbol] └── size_delta <int> [Difference in bytes between the resource occupation of the two symbols]
document.build_info = '' document.configuration.debug_info_available = 'None' document.configuration.display_appeared_symbols_overview = 'True' document.configuration.display_binary_details = 'False' document.configuration.display_build_info = 'False' document.configuration.display_details = 'True' document.configuration.display_disappeared_symbols_overview = 'True' document.configuration.display_migrated_symbols = 'True' document.configuration.display_migrated_symbols_overview = 'True' document.configuration.display_new_binary_info = 'False' document.configuration.display_old_binary_info = 'False' document.configuration.display_persisting_symbols_overview = 'True' document.configuration.display_similar_symbols = 'True' document.configuration.display_similar_symbols_overview = 'True' document.configuration.instructions_available = 'True' document.files.input.new.binary_path = '../../tests/x86_64/libelf_diff_test2_debug_new.a' document.files.input.new.debug_info_available = 'True' document.files.input.new.source_files = '{8: <elf_diff.value_tree.Node object at 0x7ff10bb63190>, 9: <elf_diff.value_tree.Node object at 0x7ff10bb631c0>, 10: <elf_diff.value_tree.Node object at 0x7ff10bb631f0>, 11: <elf_diff.value_tree.Node object at 0x7ff10bb63220>, 12: <elf_diff.value_tree.Node object at 0x7ff10bb63280>, 13: <elf_diff.value_tree.Node object at 0x7ff10bb632b0>, 14: <elf_diff.value_tree.Node object at 0x7ff10bb632e0>, 15: <elf_diff.value_tree.Node object at 0x7ff10bb63310>}' document.files.input.old.binary_path = '../../tests/x86_64/libelf_diff_test2_debug_old.a' document.files.input.old.debug_info_available = 'True' document.files.input.old.source_files = '{0: <elf_diff.value_tree.Node object at 0x7ff10bb62a70>, 1: <elf_diff.value_tree.Node object at 0x7ff10bb62aa0>, 2: <elf_diff.value_tree.Node object at 0x7ff10bb62ad0>, 3: <elf_diff.value_tree.Node object at 0x7ff10bb62b00>, 4: <elf_diff.value_tree.Node object at 0x7ff10bb62b60>, 5: <elf_diff.value_tree.Node object at 0x7ff10bb62b90>, 6: <elf_diff.value_tree.Node object at 0x7ff10bb62bc0>, 7: <elf_diff.value_tree.Node object at 0x7ff10bb62bf0>}' document.general.doc_title = 'ELF Binary Comparison' document.general.document_version = '1' document.general.elf_diff_repo_root = '/home/runner/work/elf_diff/elf_diff/src/elf_diff' document.general.elf_diff_version = 'aa6129c742ab24ee634fce4c7ca988d6ee8652c9' document.general.generation_date = '2024-07-24 15:21:01' document.general.page_title = 'ELF Binary Comparison - (c) 2021 by noseglasses' document.new_binary_info = '' document.old_binary_info = '' document.statistics.overall.delta.resource_consumption.bss = '0' document.statistics.overall.delta.resource_consumption.code = '11' document.statistics.overall.delta.resource_consumption.data = '0' document.statistics.overall.delta.resource_consumption.static_ram = '0' document.statistics.overall.delta.resource_consumption.text = '11' document.statistics.overall.new.resource_consumption.bss = '0' document.statistics.overall.new.resource_consumption.code = '450' document.statistics.overall.new.resource_consumption.data = '36' document.statistics.overall.new.resource_consumption.static_ram = '36' document.statistics.overall.new.resource_consumption.text = '414' document.statistics.overall.old.resource_consumption.bss = '0' document.statistics.overall.old.resource_consumption.code = '439' document.statistics.overall.old.resource_consumption.data = '36' document.statistics.overall.old.resource_consumption.static_ram = '36' document.statistics.overall.old.resource_consumption.text = '403' document.statistics.symbols.appeared.count = '6' document.statistics.symbols.disappeared.count = '6' document.statistics.symbols.new.count.dropped = '0' document.statistics.symbols.new.count.selected = '17' document.statistics.symbols.new.count.total = '17' document.statistics.symbols.new.regex.exclusion = '' document.statistics.symbols.new.regex.selection = '.*' document.statistics.symbols.old.count.dropped = '0' document.statistics.symbols.old.count.selected = '17' document.statistics.symbols.old.count.total = '17' document.statistics.symbols.old.regex.exclusion = '' document.statistics.symbols.old.regex.selection = '.*' document.statistics.symbols.persisting.assembly_differs_count = '1' document.statistics.symbols.persisting.count = '11' document.statistics.symbols.persisting.resource_consumption.delta = '8' document.statistics.symbols.persisting.resource_consumption.new = '179' document.statistics.symbols.persisting.resource_consumption.old = '171' document.statistics.symbols.similar.count = '16' document.symbols.appeared = '{17: <elf_diff.value_tree.Node object at 0x7ff10bb50970>, 21: <elf_diff.value_tree.Node object at 0x7ff10bb509a0>, 24: <elf_diff.value_tree.Node object at 0x7ff10bb50a00>, 27: <elf_diff.value_tree.Node object at 0x7ff10bb50a90>, 30: <elf_diff.value_tree.Node object at 0x7ff10bb50af0>, 31: <elf_diff.value_tree.Node object at 0x7ff10bb50b50>}' document.symbols.disappeared = '{0: <elf_diff.value_tree.Node object at 0x7ff10bb51420>, 4: <elf_diff.value_tree.Node object at 0x7ff10bb51450>, 7: <elf_diff.value_tree.Node object at 0x7ff10bb514b0>, 8: <elf_diff.value_tree.Node object at 0x7ff10bb51540>, 11: <elf_diff.value_tree.Node object at 0x7ff10bb515a0>, 14: <elf_diff.value_tree.Node object at 0x7ff10bb51600>}' document.symbols.migrated = '{1: <elf_diff.value_tree.Node object at 0x7ff10bb62200>, 2: <elf_diff.value_tree.Node object at 0x7ff10bb62230>, 3: <elf_diff.value_tree.Node object at 0x7ff10bb622f0>, 15: <elf_diff.value_tree.Node object at 0x7ff10bb62380>, 16: <elf_diff.value_tree.Node object at 0x7ff10bb62410>}' document.symbols.new = '{22: <elf_diff.value_tree.Node object at 0x7ff10bb3ba60>, 23: <elf_diff.value_tree.Node object at 0x7ff10bb3ba90>, 24: <elf_diff.value_tree.Node object at 0x7ff10bb3baf0>, 25: <elf_diff.value_tree.Node object at 0x7ff10bb3bb80>, 26: <elf_diff.value_tree.Node object at 0x7ff10bb3bbe0>, 27: <elf_diff.value_tree.Node object at 0x7ff10bb3bc40>, 28: <elf_diff.value_tree.Node object at 0x7ff10bb3bca0>, 29: <elf_diff.value_tree.Node object at 0x7ff10bb3bd00>, 30: <elf_diff.value_tree.Node object at 0x7ff10bb3bd60>, 31: <elf_diff.value_tree.Node object at 0x7ff10bb3bdc0>, 32: <elf_diff.value_tree.Node object at 0x7ff10bb3be20>, 33: <elf_diff.value_tree.Node object at 0x7ff10bb3be80>, 18: <elf_diff.value_tree.Node object at 0x7ff10bb3bee0>, 17: <elf_diff.value_tree.Node object at 0x7ff10bb3bf40>, 21: <elf_diff.value_tree.Node object at 0x7ff10bb3bfa0>, 20: <elf_diff.value_tree.Node object at 0x7ff10bb50040>, 19: <elf_diff.value_tree.Node object at 0x7ff10bb500a0>}' document.symbols.old = '{5: <elf_diff.value_tree.Node object at 0x7ff10bb3a320>, 6: <elf_diff.value_tree.Node object at 0x7ff10bb3a350>, 7: <elf_diff.value_tree.Node object at 0x7ff10bb3a3b0>, 8: <elf_diff.value_tree.Node object at 0x7ff10bb3a440>, 9: <elf_diff.value_tree.Node object at 0x7ff10bb3a4a0>, 10: <elf_diff.value_tree.Node object at 0x7ff10bb3a500>, 11: <elf_diff.value_tree.Node object at 0x7ff10bb3a560>, 12: <elf_diff.value_tree.Node object at 0x7ff10bb3a5c0>, 13: <elf_diff.value_tree.Node object at 0x7ff10bb3a620>, 14: <elf_diff.value_tree.Node object at 0x7ff10bb3a680>, 15: <elf_diff.value_tree.Node object at 0x7ff10bb3a6e0>, 16: <elf_diff.value_tree.Node object at 0x7ff10bb3a740>, 1: <elf_diff.value_tree.Node object at 0x7ff10bb3a7a0>, 4: <elf_diff.value_tree.Node object at 0x7ff10bb3a800>, 0: <elf_diff.value_tree.Node object at 0x7ff10bb3a860>, 3: <elf_diff.value_tree.Node object at 0x7ff10bb3a8c0>, 2: <elf_diff.value_tree.Node object at 0x7ff10bb3a920>}' document.symbols.persisting = '{1: <elf_diff.value_tree.Node object at 0x7ff10bb52380>, 2: <elf_diff.value_tree.Node object at 0x7ff10bb523b0>, 3: <elf_diff.value_tree.Node object at 0x7ff10bb52470>, 5: <elf_diff.value_tree.Node object at 0x7ff10bb52500>, 6: <elf_diff.value_tree.Node object at 0x7ff10bb52590>, 9: <elf_diff.value_tree.Node object at 0x7ff10bb52620>, 10: <elf_diff.value_tree.Node object at 0x7ff10bb526b0>, 12: <elf_diff.value_tree.Node object at 0x7ff10bb52740>, 13: <elf_diff.value_tree.Node object at 0x7ff10bb527d0>, 15: <elf_diff.value_tree.Node object at 0x7ff10bb52860>, 16: <elf_diff.value_tree.Node object at 0x7ff10bb528f0>}' document.symbols.similar = '{0: <elf_diff.value_tree.Node object at 0x7ff10bb60310>, 1: <elf_diff.value_tree.Node object at 0x7ff10bb60370>, 2: <elf_diff.value_tree.Node object at 0x7ff10bb604c0>, 3: <elf_diff.value_tree.Node object at 0x7ff10bb605e0>, 4: <elf_diff.value_tree.Node object at 0x7ff10bb60700>, 5: <elf_diff.value_tree.Node object at 0x7ff10bb60820>, 6: <elf_diff.value_tree.Node object at 0x7ff10bb60940>, 7: <elf_diff.value_tree.Node object at 0x7ff10bb60a60>, 8: <elf_diff.value_tree.Node object at 0x7ff10bb60b80>, 9: <elf_diff.value_tree.Node object at 0x7ff10bb60ca0>, 10: <elf_diff.value_tree.Node object at 0x7ff10bb60dc0>, 11: <elf_diff.value_tree.Node object at 0x7ff10bb60ee0>, 12: <elf_diff.value_tree.Node object at 0x7ff10bb61000>, 13: <elf_diff.value_tree.Node object at 0x7ff10bb61120>, 14: <elf_diff.value_tree.Node object at 0x7ff10bb61240>, 15: <elf_diff.value_tree.Node object at 0x7ff10bb61360>}'