diff options
author | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-12 11:44:27 +0000 |
---|---|---|
committer | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-12 11:44:27 +0000 |
commit | 165fad29acd06b872c5a757a4a626e033e01af1f (patch) | |
tree | 565069e75562b4f5c9b3b6cd04f59d786ae6d7db /tools | |
parent | dd8deb70df0ac94eb5b508ebd534ab1f76a64443 (diff) | |
download | chromium_src-165fad29acd06b872c5a757a4a626e033e01af1f.zip chromium_src-165fad29acd06b872c5a757a4a626e033e01af1f.tar.gz chromium_src-165fad29acd06b872c5a757a4a626e033e01af1f.tar.bz2 |
Use Popen.communicate() to pass the symbol names to c++filt for demangling.
Passing symbol names via the command line parameters is tricky and requires additional escaping.
For example, it doesn't work with names starting with "-[".
BUG=none
R=timurrrr@chromium.org
Review URL: https://codereview.chromium.org/110443004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240277 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/valgrind/test_suppressions.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/tools/valgrind/test_suppressions.py b/tools/valgrind/test_suppressions.py index 8a09fc7..d02d0c9 100755 --- a/tools/valgrind/test_suppressions.py +++ b/tools/valgrind/test_suppressions.py @@ -50,16 +50,15 @@ def ReadReportsFromFile(filename): def Demangle(names): """ Demangle a list of C++ symbols, return a list of human-readable symbols. """ + # -n is not the default on Mac. args = ['c++filt', '-n'] - args.extend(names) pipe = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) - stdout, _ = pipe.communicate() + stdout, _ = pipe.communicate(input='\n'.join(names)) demangled = stdout.split("\n") - # Each line ends with a newline, so the final entry of the split output # will always be ''. - assert len(demangled) == len(names) + 1 - return demangled[:-1] + assert len(demangled) == len(names) + return demangled def GetSymbolsFromReport(report): """Extract all symbols from a suppression report.""" |