From: Torsten Bögershausen Date: Tue, 6 May 2025 12:06:44 +0000 (+0200) Subject: intialize false_but_the_compiler_does_not_know_it_ X-Git-Tag: v2.50.0-rc0~37^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bebc728d7457023699667f2e9fde2e5d740b67e9;p=thirdparty%2Fgit.git intialize false_but_the_compiler_does_not_know_it_ Compiling/linking 82e79c63642c on an older MacOs machine (like Xcode 14.3.1, the last version of 14.x series) leads to this: Undefined symbols for architecture x86_64: "_false_but_the_compiler_does_not_know_it_", referenced from: _start_command in libgit.a(run-command.o) The linker fails to pick up compiler-tricks/not-constant.o that defines the needed false_but_the_compiler_does_not_know_it_ symbol, which is the only thing defined in that object file, from the libgit.a archive. Initializing the variable explicitly to 0 works around the linker bug; the symbol type changes from 'C' to 'S' and is picked up by the linker. Xcode 15 introduces a new linker, which seems to fix the bug, making the workaround here unnecessary, and Apple requires to build with Xcode 16 or later in order to upload to their App Store Connect since April 24, 2025, but not everybody is expected to upgrade their toolchain immediately. Helped-by: Koji Nakamaru Signed-off-by: Torsten Bögershausen Signed-off-by: Junio C Hamano --- diff --git a/compiler-tricks/not-constant.c b/compiler-tricks/not-constant.c index 1da3ffc2f5..9fb4f275b1 100644 --- a/compiler-tricks/not-constant.c +++ b/compiler-tricks/not-constant.c @@ -1,2 +1,2 @@ #include -int false_but_the_compiler_does_not_know_it_; +int false_but_the_compiler_does_not_know_it_ = 0;