[pygccxml-commit] SF.net SVN: pygccxml:[1763] pygccxml_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-10-04 19:41:50
|
Revision: 1763 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1763&view=rev Author: roman_yakovenko Date: 2009-10-04 19:41:39 +0000 (Sun, 04 Oct 2009) Log Message: ----------- "nm" utility invocation was fixed. Now it handles right relative paths and paths with spaces Modified Paths: -------------- pygccxml_dev/docs/history/history.rest pygccxml_dev/pygccxml/binary_parsers/parsers.py Modified: pygccxml_dev/docs/history/history.rest =================================================================== --- pygccxml_dev/docs/history/history.rest 2009-10-01 22:59:08 UTC (rev 1762) +++ pygccxml_dev/docs/history/history.rest 2009-10-04 19:41:39 UTC (rev 1763) @@ -22,6 +22,7 @@ * Ben Schleimer * Gustavo Carneiro * Christopher Bruns +* Alejandro Dubrovsky ----------- SVN Version @@ -50,7 +51,11 @@ 8. "explicit" property was added to ``declarations.constructor_t`` class. Many thanks to Christopher Bruns, for finding out how this property works in `GCC-XML`_. - + +9. "List symbols" (`nm`) utility invocation was improved and now handles + right relative paths and paths with spaces. Many thanks to Alejandro Dubrovsky + for providing the patch. + ----------- Version 1.0 ----------- Modified: pygccxml_dev/pygccxml/binary_parsers/parsers.py =================================================================== --- pygccxml_dev/pygccxml/binary_parsers/parsers.py 2009-10-01 22:59:08 UTC (rev 1762) +++ pygccxml_dev/pygccxml/binary_parsers/parsers.py 2009-10-04 19:41:39 UTC (rev 1763) @@ -216,8 +216,9 @@ """parser for Linux .so file""" nm_executable = 'nm' #numeric-sort used for mapping between mangled and unmangled name - cmd_mangled = '%(nm)s --extern-only --dynamic --defined-only --numeric-sort %(lib)s' - 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'.split() + cmd_demangled = '%(nm)s --extern-only --dynamic --defined-only --demangle --numeric-sort %(lib)s'.split() + entry = re.compile( r'^(?P<address>(?:\w|\d)+)\s\w\s(?P<symbol>.+)$' ) def __init__( self, global_ns, binary_file ): @@ -225,11 +226,9 @@ def __execute_nm( self, cmd ): process = subprocess.Popen( args=cmd - , shell=True , stdin=subprocess.PIPE , stdout=subprocess.PIPE - , stderr=subprocess.STDOUT - , cwd=os.path.dirname( self.binary_file ) ) + , stderr=subprocess.STDOUT ) process.stdin.close() output = [] @@ -254,8 +253,9 @@ def load_symbols( self ): tmpl_args = dict( nm=self.nm_executable, lib=self.binary_file ) - mangled_smbls = self.__extract_symbols( self.cmd_mangled % tmpl_args ) - demangled_smbls = self.__extract_symbols( self.cmd_demangled % tmpl_args ) + mangled_smbls = self.__extract_symbols( [part % tmpl_args for part in self.cmd_mangled] ) + demangled_smbls = self.__extract_symbols( [part % tmpl_args for part in self.cmd_demangled] ) + result = [] for address, blob in mangled_smbls.iteritems(): if address in demangled_smbls: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |