git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Koji Nakamaru <koji.nakamaru@gree.net>
Cc: tboegi@web.de,  git@vger.kernel.org
Subject: Re: [PATCH/RFC v1 1/1] intialize false_but_the_compiler_does_not_know_it_
Date: Wed, 07 May 2025 09:27:45 -0700	[thread overview]
Message-ID: <xmqqikmce67y.fsf@gitster.g> (raw)
In-Reply-To: <CAOTNsDy4YcOP9H_xmUDKRdGuEu0GABDj8sM0Jt+oPEo7JVSQ9A@mail.gmail.com> (Koji Nakamaru's message of "Wed, 7 May 2025 10:22:51 +0900")

Koji Nakamaru <koji.nakamaru@gree.net> writes:

> On Wed, May 7, 2025 at 2:16 AM Junio C Hamano <gitster@pobox.com> wrote:
>> Just for reference (as the proposed log message refers to an "older
>> macOS"), do we know if the toolchain on a more recent release of
>> macOS work without this workaround already?  It may be nice to tell
>> users what version they need to avoid the same issue in their own
>> program.
>
> I tested further with Xcode 14.3.1 (the last version of 14.x) and 15,
> where the former still had the issue and the latter worked without the
> workaround. Xcode 15 introduces a new linker which seems to fix the bug.
>
> cf. https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Build-System
>
> Koji Nakamaru

Wonderful.  Thanks for a quick report.

Here is an updated patch with the above information.

Thanks.

--- >8 ---
From: Torsten Bögershausen <tboegi@web.de>
Date:   Tue May 6 14:06:44 2025 +0200

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.

 [*] https://developer.apple.com/news/upcoming-requirements/?id=02212025a

Helped-by: Koji Nakamaru <koji.nakamaru@gree.net>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
[jc: update version info with Koji's help]
Signed-off-by: Junio C Hamano <gitster@pobox.com>

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 <git-compat-util.h>
-int false_but_the_compiler_does_not_know_it_;
+int false_but_the_compiler_does_not_know_it_ = 0;

      reply	other threads:[~2025-05-07 16:27 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-04 19:04 Problems with 82e79c63642c, NOT_CONSTANT with sigfillset() Torsten Bögershausen
2025-05-05 20:47 ` Junio C Hamano
2025-05-06  6:14   ` Koji Nakamaru
2025-05-06 12:06 ` [PATCH/RFC v1 1/1] intialize false_but_the_compiler_does_not_know_it_ tboegi
2025-05-06 17:16   ` Junio C Hamano
2025-05-07  1:22     ` Koji Nakamaru
2025-05-07 16:27       ` Junio C Hamano [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqikmce67y.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=koji.nakamaru@gree.net \
    --cc=tboegi@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).