[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.
|