summaryrefslogtreecommitdiffstats
path: root/Tools/scripts/nm2def.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-10-11 08:07:57 (GMT)
committerGitHub <noreply@github.com>2022-10-11 08:07:57 (GMT)
commite0ae9ddffe0a708d0d3f5b8cc10488d466fc43c4 (patch)
treebc97c042724b8c89a29d36f81b1f804070622784 /Tools/scripts/nm2def.py
parentb399115ef18945f7526492225d72a512048ad20d (diff)
downloadcpython-e0ae9ddffe0a708d0d3f5b8cc10488d466fc43c4.zip
cpython-e0ae9ddffe0a708d0d3f5b8cc10488d466fc43c4.tar.gz
cpython-e0ae9ddffe0a708d0d3f5b8cc10488d466fc43c4.tar.bz2
gh-97669: Remove outdated example scripts (#97675) (#98167)
Remove outdated example scripts of the Tools/scripts/ directory: * gprof2html.py * md5sum.py * nm2def.py * pathfix.py * win_add2path.py Remove test_gprof2html, test_md5sum and test_pathfix of test_tools.
Diffstat (limited to 'Tools/scripts/nm2def.py')
-rwxr-xr-xTools/scripts/nm2def.py104
1 files changed, 0 insertions, 104 deletions
diff --git a/Tools/scripts/nm2def.py b/Tools/scripts/nm2def.py
deleted file mode 100755
index a885ebd..0000000
--- a/Tools/scripts/nm2def.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#! /usr/bin/env python3
-"""nm2def.py
-
-Helpers to extract symbols from Unix libs and auto-generate
-Windows definition files from them. Depends on nm(1). Tested
-on Linux and Solaris only (-p option to nm is for Solaris only).
-
-By Marc-Andre Lemburg, Aug 1998.
-
-Additional notes: the output of nm is supposed to look like this:
-
-acceler.o:
-000001fd T PyGrammar_AddAccelerators
- U PyGrammar_FindDFA
-00000237 T PyGrammar_RemoveAccelerators
- U _IO_stderr_
- U exit
- U fprintf
- U free
- U malloc
- U printf
-
-grammar1.o:
-00000000 T PyGrammar_FindDFA
-00000034 T PyGrammar_LabelRepr
- U _PyParser_TokenNames
- U abort
- U printf
- U sprintf
-
-...
-
-Even if this isn't the default output of your nm, there is generally an
-option to produce this format (since it is the original v7 Unix format).
-
-"""
-import os, sys
-
-PYTHONLIB = 'libpython%d.%d.a' % sys.version_info[:2]
-PC_PYTHONLIB = 'Python%d%d.dll' % sys.version_info[:2]
-NM = 'nm -p -g %s' # For Linux, use "nm -g %s"
-
-def symbols(lib=PYTHONLIB,types=('T','C','D')):
-
- with os.popen(NM % lib) as pipe:
- lines = pipe.readlines()
- lines = [s.strip() for s in lines]
- symbols = {}
- for line in lines:
- if len(line) == 0 or ':' in line:
- continue
- items = line.split()
- if len(items) != 3:
- continue
- address, type, name = items
- if type not in types:
- continue
- symbols[name] = address,type
- return symbols
-
-def export_list(symbols):
-
- data = []
- code = []
- for name,(addr,type) in symbols.items():
- if type in ('C','D'):
- data.append('\t'+name)
- else:
- code.append('\t'+name)
- data.sort()
- data.append('')
- code.sort()
- return ' DATA\n'.join(data)+'\n'+'\n'.join(code)
-
-# Definition file template
-DEF_TEMPLATE = """\
-EXPORTS
-%s
-"""
-
-# Special symbols that have to be included even though they don't
-# pass the filter
-SPECIALS = (
- )
-
-def filter_Python(symbols,specials=SPECIALS):
-
- for name in list(symbols.keys()):
- if name[:2] == 'Py' or name[:3] == '_Py':
- pass
- elif name not in specials:
- del symbols[name]
-
-def main():
-
- s = symbols(PYTHONLIB)
- filter_Python(s)
- exports = export_list(s)
- f = sys.stdout # open('PC/python_nt.def','w')
- f.write(DEF_TEMPLATE % (exports))
- # f.close()
-
-if __name__ == '__main__':
- main()