Source code

Revision control

Copy as Markdown

Other Tools

#!/usr/bin/env python
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import find_incompatible_glibc_symbols
import sys
if sys.version_info.major == 2:
from cStringIO import StringIO
else:
from io import StringIO
NM_DATA = """\
0000000000000001 W expf@GLIBC_2.2.5
0000000000000002 W expf@@GLIBC_2.27
0000000000000003 W foo@@GLIBC_2.2.5
0000000000000004 W bar@GLIBC_2.2.5
0000000000000005 W baz@GLIBC_2.2.5
0000000000000006 T foo2@GLIBC_2.2
0000000000000007 T foo2@GLIBC_2.3
0000000000000008 T foo2@GLIBC_2.30
0000000000000009 T foo2@@GLIBC_2.31
000000000000000a T bar2@GLIBC_2.30
000000000000000b T bar2@@GLIBC_2.31
000000000000000c T baz2@GLIBC_2.2
000000000000000d T baz2@@GLIBC_2.3
"""
EXPECTED_REPLACEMENTS = [
'__asm__(".symver expf, expf@GLIBC_2.2.5");',
'__asm__(".symver foo2, foo2@GLIBC_2.3");',
]
nm_file = StringIO()
nm_file.write(NM_DATA)
nm_file.seek(0)
assert (
EXPECTED_REPLACEMENTS == find_incompatible_glibc_symbols.get_replacements(
nm_file, [2, 17]))