FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-146479: Skip test_frame_pointer_unwind for gcc -O3 --enable-shared by vstinner · Pull Request #147947 · python/cpython · GitHub

Repository navigation

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .py  (1) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
24 changes: 24 additions & 0 deletions Lib/test/test_frame_pointer_unwind.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,41 @@ def _frame_pointers_expected(machine):
)
if value
)

if "no-omit-frame-pointer" in cflags:
# For example, configure adds -fno-omit-frame-pointer if Python
# has perf trampoline (PY_HAVE_PERF_TRAMPOLINE) and Python is built
# in debug mode.
return True
if "omit-frame-pointer" in cflags:
return False

if sys.platform == "darwin":
# macOS x86_64/ARM64 always have frame pointer by default.
return True

if sys.platform == "linux":
if machine in {"aarch64", "arm64"}:
# 32-bit Linux is not supported
if sys.maxsize < 2**32:
return None
return True
if machine == "x86_64":
final_opt = ""
for opt in cflags.split():
if opt.startswith('-O'):
final_opt = opt
if final_opt in ("-O0", "-Og", "-O1"):
# Unwinding works if the optimization level is low
return True

Py_ENABLE_SHARED = int(sysconfig.get_config_var('Py_ENABLE_SHARED') or '0')
if Py_ENABLE_SHARED:
# Unwinding does crash using gcc -O2 or gcc -O3
# when Python is built with --enable-shared
return "crash"
return False

if sys.platform == "win32":
# MSVC ignores /Oy and /Oy- on x64/ARM64.
if machine == "arm64":
Expand Down Expand Up @@ -153,10 +173,14 @@ class FramePointerUnwindTests(unittest.TestCase):

def setUp(self):
super().setUp()

machine = platform.machine().lower()
expected = _frame_pointers_expected(machine)
if expected is None:
self.skipTest(f"unsupported architecture for frame pointer check: {machine}")
if expected == "crash":
self.skipTest(f"test does crash on {machine}")

try:
_testinternalcapi.manual_frame_pointer_unwind()
except RuntimeError as exc:
Expand Down
Loading

Back | FazBrowse Home | New Git URL