mirror of
https://github.com/python/cpython.git
synced 2024-11-27 03:45:08 +08:00
5360cb3d56
Apply BOLT optimizations to libpython for shared builds. Most of the C code is in libpython so it is critical to apply BOLT there fully realize BOLT benefits. This change also reworks how BOLT instrumentation is applied. It effectively removes the readelf based logic added in gh-101525 and replaces it with a mechanism that saves a copy of the pre-bolt binary and restores that copy when necessary. This allows us to perform BOLT optimizations without having to manually delete the output binary to force a new bolt run. Also: - add a clean-bolt target for purging BOLT files and hook that up to the clean target - .gitignore BOLT related files Before and after this refactor, `make` will no-op after a previous run. Both versions should also share common make DAG deficiencies where targets fail to trigger as often as they need to or can trigger prematurely in certain scenarios. e.g. after this change you may need to `rm profile-bolt-stamp` to force a BOLT run because there aren't appropriate non-phony targets for BOLT's make target to depend on. To make it easier to iterate on custom BOLT settings, the flags to pass to instrumentation and application are now defined in configure and can be overridden by passing BOLT_INSTRUMENT_FLAGS and BOLT_APPLY_FLAGS.
162 lines
2.7 KiB
Plaintext
162 lines
2.7 KiB
Plaintext
#####
|
|
# First, rules intended to apply in all subdirectories.
|
|
# These contain no slash, or only a trailing slash.
|
|
|
|
*.cover
|
|
*.iml
|
|
*.o
|
|
*.lto
|
|
*.a
|
|
*.so
|
|
*.so.*
|
|
*.dylib
|
|
*.dSYM
|
|
*.dll
|
|
*.wasm
|
|
*.orig
|
|
*.pyc
|
|
*.pyd
|
|
*.pyo
|
|
*.rej
|
|
*.swp
|
|
*~
|
|
*.gc??
|
|
*.profclang?
|
|
*.profraw
|
|
# Copies of binaries before BOLT optimizations.
|
|
*.prebolt
|
|
# BOLT profile data.
|
|
*.fdata
|
|
*.dyn
|
|
.gdb_history
|
|
.purify
|
|
__pycache__
|
|
.hg/
|
|
.svn/
|
|
.idea/
|
|
tags
|
|
TAGS
|
|
.vs/
|
|
.vscode/
|
|
gmon.out
|
|
.coverage
|
|
.mypy_cache/
|
|
.pytest_cache/
|
|
.DS_Store
|
|
|
|
*.exe
|
|
|
|
# Ignore core dumps... but not Tools/msi/core/ or the like.
|
|
core
|
|
!core/
|
|
|
|
|
|
#####
|
|
# Then, rules meant for a specific location relative to the repo root.
|
|
# These must contain a non-trailing slash (and may also have a trailing slash.)
|
|
|
|
Doc/build/
|
|
Doc/venv/
|
|
Doc/.venv/
|
|
Doc/env/
|
|
Doc/.env/
|
|
Include/pydtrace_probes.h
|
|
Lib/lib2to3/*.pickle
|
|
Lib/site-packages/*
|
|
!Lib/site-packages/README.txt
|
|
Lib/test/data/*
|
|
!Lib/test/data/README
|
|
/_bootstrap_python
|
|
/Makefile
|
|
/Makefile.pre
|
|
Mac/Makefile
|
|
Mac/PythonLauncher/Info.plist
|
|
Mac/PythonLauncher/Makefile
|
|
Mac/PythonLauncher/Python Launcher
|
|
Mac/PythonLauncher/Python Launcher.app/*
|
|
Mac/Resources/app/Info.plist
|
|
Mac/Resources/framework/Info.plist
|
|
Mac/pythonw
|
|
/*.framework/
|
|
Misc/python.pc
|
|
Misc/python-embed.pc
|
|
Misc/python-config.sh
|
|
Modules/Setup.bootstrap
|
|
Modules/Setup.config
|
|
Modules/Setup.local
|
|
Modules/Setup.stdlib
|
|
Modules/config.c
|
|
Modules/ld_so_aix
|
|
Programs/_freeze_module
|
|
Programs/_testembed
|
|
PC/python_nt*.h
|
|
PC/pythonnt_rc*.h
|
|
Modules/python.exp
|
|
PC/*/*.exp
|
|
PC/*/*.lib
|
|
PC/*/*.bsc
|
|
PC/*/*.dll
|
|
PC/*/*.pdb
|
|
PC/*/*.user
|
|
PC/*/*.ncb
|
|
PC/*/*.suo
|
|
PC/*/Win32-temp-*
|
|
PC/*/x64-temp-*
|
|
PC/*/amd64
|
|
PCbuild/*.user
|
|
PCbuild/*.suo
|
|
PCbuild/*.*sdf
|
|
PCbuild/*-pgi
|
|
PCbuild/*-pgo
|
|
PCbuild/*.VC.db
|
|
PCbuild/*.VC.opendb
|
|
PCbuild/amd64/
|
|
PCbuild/arm32/
|
|
PCbuild/arm64/
|
|
PCbuild/obj/
|
|
PCbuild/win32/
|
|
Tools/unicode/data/
|
|
/autom4te.cache
|
|
/build/
|
|
/builddir/
|
|
/config.cache
|
|
/config.log
|
|
/config.status
|
|
/config.status.lineno
|
|
# hendrikmuhs/ccache-action@v1
|
|
/.ccache
|
|
/platform
|
|
/profile-clean-stamp
|
|
/profile-run-stamp
|
|
/profile-bolt-stamp
|
|
/Python/deepfreeze/*.c
|
|
/pybuilddir.txt
|
|
/pyconfig.h
|
|
/python-config
|
|
/python-config.py
|
|
/python.bat
|
|
/python-gdb.py
|
|
/python.exe-gdb.py
|
|
/reflog.txt
|
|
/coverage/
|
|
/externals/
|
|
/htmlcov/
|
|
Tools/msi/obj
|
|
Tools/ssl/amd64
|
|
Tools/ssl/win32
|
|
Tools/freeze/test/outdir
|
|
|
|
# The frozen modules are always generated by the build so we don't
|
|
# keep them in the repo. Also see Tools/build/freeze_modules.py.
|
|
Python/frozen_modules/*.h
|
|
# The manifest can be generated at any time with "make regen-frozen".
|
|
Python/frozen_modules/MANIFEST
|
|
|
|
# Two-trick pony for OSX and other case insensitive file systems:
|
|
# Ignore ./python binary on Unix but still look into ./Python/ directory.
|
|
/python
|
|
!/Python/
|
|
|
|
# main branch only: ABI files are not checked/maintained
|
|
Doc/data/python*.abi
|