]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Avoid useless dependency on read_symlink from tzdb
authorJonathan Wakely <jwakely@redhat.com>
Thu, 31 Aug 2023 17:31:32 +0000 (18:31 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Fri, 1 Sep 2023 11:13:34 +0000 (12:13 +0100)
commitf2eb6132c6951edf7960a82828c571a1b98a1a09
tree6c44c7db3d8fbba3ea98a3388b43069b7c6a8df2
parentfcede95472ceb4b63d0c131ed2f98bd79e0e360d
libstdc++: Avoid useless dependency on read_symlink from tzdb

chrono::tzdb::current_zone uses filesystem::read_symlink, which creates
a dependency on the fs_ops.o object in libstdc++.a, which then creates
dependencies on several OS functions if --gc-sections isn't used. For
more details see PR libstdc++/104167 comment 8 and comment 11.

In the cases where that causes linker failures, we probably don't have
readlink anyway, so the filesystem::read_symlink call will always fail.
Repeat the preprocessor conditions for filesystem::read_symlink in the
body of chrono::tzdb::current_zone so that we don't create a
dependency on fs_ops.o for a function that will always fail.

libstdc++-v3/ChangeLog:

* src/c++20/tzdb.cc (tzdb::current_zone): Check configure macros
for POSIX readlink before using filesystem::read_symlink.
libstdc++-v3/src/c++20/tzdb.cc