work around gcc libstdc++ time64 incompatibility

with the default --enable-libstdcxx-time, libstdc++'s configure probes
for the existence of a clock_gettime syscall and sets up the time API
implementation to make direct syscalls, presumably as a workaround for
old glibc tucking away the clock_gettime function in librt, which in
turn depends on libpthread. this breaks since struct timespec does not
match the syscall's interface on 32-bit archs.

passing --enable-libstdcxx-time=rt forces different configure paths
that correctly use the public clock_gettime function and librt if
needed.

this issue should be patched in gcc rather than worked around via
configure options, but I'd rather wait to patch until I understand how
to fix it correctly and produce a patch that's acceptable to upstream
and distros.
This commit is contained in:
Rich Felker 2020-01-19 12:40:04 -05:00
parent 38e52db835
commit c9d96aeae7
1 changed files with 1 additions and 1 deletions

View File

@ -76,7 +76,7 @@ FULL_GCC_CONFIG = --enable-languages=c,c++ \
--disable-libmudflap --disable-libsanitizer \ --disable-libmudflap --disable-libsanitizer \
--disable-gnu-indirect-function \ --disable-gnu-indirect-function \
--disable-libmpx \ --disable-libmpx \
--enable-libstdcxx-time --enable-libstdcxx-time=rt
FULL_MUSL_CONFIG = $(MUSL_CONFIG) \ FULL_MUSL_CONFIG = $(MUSL_CONFIG) \
--prefix= --host=$(TARGET) --prefix= --host=$(TARGET)