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

John David Anglin <danglin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jwakely.gcc at gmail dot com

--- Comment #1 from John David Anglin <danglin at gcc dot gnu.org> ---
bash-5.1$ find . -name '*.o'|xargs /opt/gnu64/bin/nm -AC|grep atomic
./src/c++98/pool_allocator.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/mt_allocator.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/ios_failure.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/ios_init.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/locale_init.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/locale.o:                 U __gnu_cxx::__atomic_add(int volatile*,
int)
./src/c++98/localename.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/stdexcept.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++98/messages_members_cow.o:                 U
__gnu_cxx::__atomic_add(int volatile*, int)
./src/c++11/cow-stdexcept.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/ios-inst.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/cow-locale_init.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/cow-shim_facets.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/cxx11-shim_facets.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/cow-string-inst.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++11/cow-wstring-inst.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++17/fs_dir.o:                 U __gnu_cxx::__atomic_add(int volatile*,
int)
./src/c++17/fs_ops.o:                 U __gnu_cxx::__atomic_add(int volatile*,
int)
./src/c++17/cow-fs_dir.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++17/cow-fs_ops.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++17/cow-fs_path.o:                 U __gnu_cxx::__atomic_add(int
volatile*, int)
./src/c++20/tzdb.o:                 U __gnu_cxx::__atomic_add(int volatile*,
int)
./src/c++20/tzdb.o:0000000000000000 t void
std::__atomic_notify_address<int>(int const*, bool) [clone .isra.0]
./src/c++20/tzdb.o:0000000000000000 W void std::__atomic_wait_address_v<int,
std::__atomic_base<int>::wait(int, std::memory_order) const::{lambda()#1}>(int
const*, int, std::__atomic_base<int>::wait(int, std::memory_order)
const::{lambda()#1})
./src/c++20/tzdb.o:                 U __atomic_compare_exchange_4
./src/c++20/tzdb.o:                 U __atomic_compare_exchange_8
./src/c++20/tzdb.o:                 U __atomic_exchange_8
./src/c++20/tzdb.o:                 U __atomic_fetch_add_4
./src/c++20/tzdb.o:                 U __atomic_fetch_add_8
./src/c++20/tzdb.o:                 U __atomic_fetch_sub_8
[...]

I believe the direct use of the above atomic symbols was introduced in the
following change:

commit 9fc61d45fa15fdd3b084d30998ecda164af33e95
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Thu Dec 22 00:37:54 2022 +0000

    libstdc++: Implement C++20 time zone support in <chrono>

I have the following patch to work around PR 108228:

diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 2a4e213d3d9..92752242096 100644
--- a/libstdc++-v3/src/c++20/tzdb.cc
+++ b/libstdc++-v3/src/c++20/tzdb.cc
@@ -64,8 +64,8 @@ namespace __gnu_cxx
 #else
   [[gnu::weak]] const char* zoneinfo_dir_override();

-#ifdef __APPLE__
-  // Need a weak definition for Mach-O.
+#if defined(__APPLE__) || defined(__hpux__)
+  // Need a weak definition for Mach-O and HP-UX.
   [[gnu::weak]] const char* zoneinfo_dir_override()
   { return _GLIBCXX_ZONEINFO_DIR; }
 #endif

Reply via email to