index 8bcf7fcc526e5a0a1bf3e8c3b7ce3ac74adcfae3..153b840366add234c2305ccea422477e6bcece70 100755 (executable)
if arch == 'aarch64':
arch = 'arm64'
+def GetSymbolsFromTxt(txt_file):
+ symbols = set()
+ f = open(txt_file, 'r')
+ for line in f.read().splitlines():
+ symbols.add(line)
+ f.close()
+ return symbols
+
def GetSymbolsFromSo(so_file):
# Example readelf output:
# 264: 0001623c 4 FUNC GLOBAL DEFAULT 8 cabsf
'__xpg_basename': '__gnu_basename',
}
-glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*')
+glibc = GetSymbolsFromSystemSo('libc.so.*', 'librt.so.*', 'libpthread.so.*', 'libresolv.so.*', 'libm.so.*', 'libutil.so.*')
bionic = GetSymbolsFromAndroidSo('libc.so', 'libm.so')
+posix = GetSymbolsFromTxt(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'posix-2013.txt'))
ndk_ignored = GetNdkIgnored()
-glibc = map(MangleGlibcNameToBionic, glibc)
+glibc = set(map(MangleGlibcNameToBionic, glibc))
# bionic includes various BSD symbols to ease porting other BSD-licensed code.
bsd_stuff = set([
])
if not only_unwanted:
- print 'glibc:'
- for symbol in sorted(glibc):
+ #print 'glibc:'
+ #for symbol in sorted(glibc):
+ # print symbol
+ #print
+
+ #print 'bionic:'
+ #for symbol in sorted(bionic):
+ # print symbol
+ #print
+
+ print 'in glibc (but not posix) but not bionic:'
+ for symbol in sorted((glibc - posix).difference(bionic)):
print symbol
-
print
- print 'bionic:'
- for symbol in sorted(bionic):
- print symbol
+ print 'in posix (and implemented in glibc) but not bionic:'
+ for symbol in sorted((posix.intersection(glibc)).difference(bionic)):
+ print symbol
print
+
print 'in bionic but not glibc:'
allowed_stuff = (bsd_stuff | FORTIFY_stuff | linux_stuff | macro_stuff |