https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126723

--- Comment #2 from Sergey Shumakov <skarnproject at gmail dot com> ---
Thanks.  On the first point: understood, about aarch64 not being upstream. I am
now not sure this needs to be mirrored to
https://github.com/iains/gcc-darwin-arm64 as well, because:

On the second: yes, x86_64-darwin is affected too, and the defective code is
upstream.

The introducing commit r16-2939-g4db9571488eb touches only
gcc/config/darwin.cc and gcc/config/darwin-sections.def (plus testsuite), i.e.
shared Darwin files on master. So this is a GCC 16
regression affecting every Darwin target and does not originate in the
aarch64 branch.


Regarding "GCC does not include an assembler": agreed, and the hand-written .s
is only there to make the ld64 half deterministic. The part GCC owns is solely
the choice of name in
darwin_encode_section_info: any temporary-label ("L"-prefixed) name on a
literal that GCC places in a *regular* section -- __TEXT,__const in practice,
e.g. non-NUL-terminated char arrays such as libstdc++'s to_chars tables -- is
subject to this, on any Darwin target.  __TEXT,__cstring is a literal section
and is safe.  The suggested one-line fix ("*l.str.%s" unconditionally) is
equally correct for both targets, and is what the asan branch already takes.

Reply via email to