pygccxml.binary_parsers API

Overview

contains classes that allows to extract different information from binary files ( .map, .dll, .so ) and integrate it with existing declarations tree

The main function of this package is pygccxml.binary_parsers.parsers.merge_information().

pygccxml.binary_parsers.format_decl(decl, hint=None)

returns string, that represents formatted declaration, according to some rules :param hint: valid values are: “msvc” and “nm”

pygccxml.binary_parsers.undecorate_blob(blob)

Returns undecorated/unmangled string, created from blob(exported symbol name)

Modules

parsers

defines few simple classes( parsers ), which deals with .dll, .map, .so files.

Those classes extract decoratedmangled names from the files. Later the extracted symbols are used for:

  • building “dynamic library” public interface
  • extracting function calling convention
class pygccxml.binary_parsers.parsers.dll_file_parser_t(global_ns, map_file_path)

Bases: pygccxml.binary_parsers.parsers.formated_mapping_parser_t

parser for Windows .dll file

load_symbols()
merge(smbl)
class pygccxml.binary_parsers.parsers.dylib_file_parser_t(global_ns, binary_file)

Bases: pygccxml.binary_parsers.parsers.formated_mapping_parser_t

parser for Darwin .dylib file

cmd_demangled = ['-c', '%(nm)s -gfUn %(lib)s | sed "s/ _/ /" | c++filt']
cmd_mangled = ['-c', '%(nm)s -gfUn %(lib)s | sed "s/ _/ /"']
entry = <_sre.SRE_Pattern object>
load_symbols()
merge(smbl)
nm_executable = 'nm'
class pygccxml.binary_parsers.parsers.formated_mapping_parser_t(global_ns, binary_file, hint)

Bases: pygccxml.binary_parsers.parsers.libparser_t

convenience class, which formats existing declarations

formated_decls
formatter(decl, hint)
class pygccxml.binary_parsers.parsers.libparser_t(global_ns, binary_file)

Bases: object

base class for .dll, .map, .so parser classes

binary_file

binary file path

global_ns

reference to global namespace

load_symbols()

loads public( shared ) symbols from the binary file.

This method should be overridden in the derived classes.

loaded_symbols

list of symbols, which were loaded from the binary file. The actual type of return value defined by the derived class

merge(symbol)

extracts and merges information from the symbol to the declarations tree.

This method should be overridden in the derived classes.

parse()

the main method of the class

loads information from the binary file and merges it into the declarations tree.

The return value of the function is dictionary, where the key is decorated/mangled declaration name and the value is a declaration.

class pygccxml.binary_parsers.parsers.map_file_parser_t(global_ns, map_file_path)

Bases: pygccxml.binary_parsers.parsers.formated_mapping_parser_t

parser for MSVC .map file

c_entry = <_sre.SRE_Pattern object>
cpp_entry = <_sre.SRE_Pattern object>
load_symbols()

returns dictionary { decorated symbol : original declaration name }

merge(smbl)
pygccxml.binary_parsers.parsers.merge_information(global_ns, fname, runs_under_unittest=False)

high level function - select the appropriate binary file parser and integrates the information from the file to the declarations tree.

class pygccxml.binary_parsers.parsers.so_file_parser_t(global_ns, binary_file)

Bases: pygccxml.binary_parsers.parsers.formated_mapping_parser_t

parser for Linux .so file

cmd_demangled = ['%(nm)s', '--extern-only', '--dynamic', '--defined-only', '--demangle', '--numeric-sort', '%(lib)s']
cmd_mangled = ['%(nm)s', '--extern-only', '--dynamic', '--defined-only', '--numeric-sort', '%(lib)s']
entry = <_sre.SRE_Pattern object>
load_symbols()
merge(smbl)
nm_executable = 'nm'