| #!/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])) |