blob: 18c53d9933fee586cf80706fc6a5e1ca7595b980 [file] [log] [blame]
#!/usr/bin/env python
import subprocess
import sys
def script_symbols(script):
symbols = []
in_symbols = False
with open(script, 'r') as f:
for line in f.readlines():
if in_symbols:
if line.lstrip() == '};\n':
break
line = line.lstrip()
line = line.rstrip('\n')
line = line.rstrip(';')
symbols.append(line.strip('"'))
elif line.lstrip() == 'extern "C++" {\n':
in_symbols = True
return symbols
if len(sys.argv) < 3:
print "Usage: %s script lib" % sys.argv[0]
sys.exit(1)
symbols = script_symbols(sys.argv[1])
p = subprocess.Popen(['objdump', '-t', '-C', sys.argv[2]], stdout=subprocess.PIPE)
data = p.communicate()[0]
symbols = []
for symbol in script_symbols(sys.argv[1]):
if symbol not in data:
symbols.append(symbol)
if symbols:
print 'The following symbols are in version script %s and not in library %s' % (sys.argv[1], sys.argv[2])
print '\n'.join(sorted(symbols))
sys.exit(1)
sys.exit(0)