python / cpython

The Python programming language
https://www.python.org
Other
62.37k stars 29.96k forks source link

Lots of new compiler warnings: `unknown warning option '-Wtrampolines' [-Wunknown-warning-option]` #121026

Closed sobolevn closed 2 months ago

sobolevn commented 2 months ago

Bug report

I am building CPython on macos 14.5, m2 chip, gcc:

» gcc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: arm64-apple-darwin23.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

I have lots of warnings like

gcc  -fno-strict-overflow -Wimplicit-fallthrough -fstack-protector-strong -Wtrampolines -Wsign-compare -g -Og -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include  -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include -I/opt/homebrew/opt/openssl/include -I/opt/homebrew/opt/openssl/include   -c ./Modules/_testmultiphase.c -o Modules/_testmultiphase.o
gcc  -fno-strict-overflow -Wimplicit-fallthrough -fstack-protector-strong -Wtrampolines -Wsign-compare -g -Og -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include  -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include -I/opt/homebrew/opt/openssl/include -I/opt/homebrew/opt/openssl/include   -c ./Modules/_testsinglephase.c -o Modules/_testsinglephase.o
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
1 warning generated.
1 warning generated.
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
gcc  -fno-strict-overflow -Wimplicit-fallthrough -fstack-protector-strong -Wtrampolines -Wsign-compare -g -Og -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include  -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include -I/opt/homebrew/opt/openssl/include -I/opt/homebrew/opt/openssl/include   -c ./Modules/_testexternalinspection.c -o Modules/_testexternalinspection.o
gcc  -fno-strict-overflow -Wimplicit-fallthrough -fstack-protector-strong -Wtrampolines -Wsign-compare -g -Og -Wall -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include  -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include -I/opt/homebrew/opt/openssl/include -I/opt/homebrew/opt/openssl/include   -c ./Modules/_ctypes/_ctypes_test.c -o Modules/_ctypes/_ctypes_test.o
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
warning: unknown warning option '-Wtrampolines' [-Wunknown-warning-option]
1 warning generated.
1 warning generated.

Things I've tried:

Looks like https://github.com/python/cpython/pull/120975 is the cause. Please, note that buildbots of m1 workers also failed on this PR.

CC @nohlson @corona10

Linked PRs

corona10 commented 2 months ago

ah this is because apple gcc is alias of clang, we should exclude macOS case. I will submit the patch today.

nohlson commented 2 months ago

ah this is because apple gcc is alias of clang, we should exclude macOS case. I will submit the patch today.

I was wondering if simply using the fourth argument of AX_CHECK_COMPILE_FLAG to include -Werror would be a better solution than making the special case for apple gcc. That way any system compiling with clang would not include -Wtrampolines and could remove the check for $CC that wraps it:

AX_CHECK_COMPILE_FLAG([-Wtrampolines], [BASECFLAGS="$BASECFLAGS -Wtrampolines"], [AC_MSG_WARN([-Wtrampolines not supported])], [-Werror])

mokko commented 2 months ago

Related commit?

https://github.com/python/cpython/commit/7fb32e02092922b0256d7be91bbf80767eb2ca46

corona10 commented 2 months ago

@nohlson You can submit the patch if you want!

nohlson commented 2 months ago

@corona10 I will submit a patch that makes all these additions to BASEFLAGS include -Werror when checking for each flag.

corona10 commented 2 months ago

@nohlson Please ping me once you submit the patch, we should run build bot too :)

nohlson commented 2 months ago

@corona10 new PR https://github.com/python/cpython/pull/121030