gh-149202: Don't use -fno-omit-frame-pointer on ppc64le (#149485)

The power ABI specification requires that compilers maintain a back
chain by default, so unwinding already works without a dedicated
frame pointer. Don't use -fno-omit-frame-pointer on ppc64le.
This commit is contained in:
Victor Stinner 2026-05-07 11:47:08 +02:00 committed by GitHub
parent 612140e7dd
commit b3cfd36ba4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 0 deletions

View file

@ -792,6 +792,8 @@ also be used to improve performance.
- ``-marm`` and/or ``-mno-thumb`` is added on 32-bit ARM when supported,
- on s390x platforms, when supported, ``-mbackchain`` is added *instead*.
of the above frame pointer flags.
- on ppc64le platforms, no compiler flags is needed since the power ABI
requires that compilers maintain a back chain by default.
Frame pointers enable profilers, debuggers, and system tracing tools
(``perf``, ``eBPF``, ``dtrace``, ``gdb``) to walk the C call stack

View file

@ -56,6 +56,12 @@ def _frame_pointers_expected(machine):
if sys.maxsize < 2**32:
return None
return True
if machine == "ppc64le":
# The power ABI specification requires that compilers maintain a
# back chain by default, so unwinding already works without a
# dedicated frame pointer.
# https://openpowerfoundation.org/specifications/64bitelfabi/
return True
if machine == "x86_64":
final_opt = ""
for opt in cflags.split():

8
configure generated vendored
View file

@ -10435,6 +10435,14 @@ fi
;; #(
*) :
;;
esac
case $host_cpu in #(
powerpc64le) :
frame_pointer_cflags=""
;; #(
*) :
;;
esac
case $host_cpu in #(
s390*) :

View file

@ -2557,6 +2557,9 @@ AS_VAR_IF([ac_cv_gcc_compat], [yes], [
frame_pointer_cflags="$frame_pointer_cflags -mno-thumb"
], [], [-Werror])
])
AS_CASE([$host_cpu], [powerpc64le], [
frame_pointer_cflags=""
])
AS_CASE([$host_cpu], [s390*], [
AX_CHECK_COMPILE_FLAG([-mbackchain], [
dnl Do not use no-omit-frame-pointer; see gh-149362