Re: Compiler baselines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



update:

* Building on CentOS 6 with DeveloperToolset (DTS) 7 (GCC 7.3.1) runs into a linker issue with an unresolved _ZN9__gnu_cxx32__throw_concurrence_unlock_errorEv when linking Library_unoexceptionprotector in an --enable-dbgutil (i.e., -D_GLIBCXX_DEBUG libstdc++ debug mode) build (see <https://tinderbox.libreoffice.org/cgi-bin/gunzip.cgi?tree=MASTER&brief-log=1536396604.27182>). Smells like a bug in DTS's libstdc++_nonshared.a, but I learned off-list that there is little hope that that would get fixed for DTS 7. A hack-around I found to get at least Library_unoexceptionprotector linked is to modify devtoolset-7-gcc-c++-7.3.1-5.10.el6.x86_64's /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/libstdc++.so linker script, doubling the -lstdc++_nonshared entry on the INPUT line.

* Also saw that on CentOS 6 gperf-3.0.3-9.1.el6.x86_64 is too old, still emitting register keywords in C++ mode, so that our configure.ac falls back to using -std=gnu++14 instead of -std=gnu++17. So the relevant machines would also need a newer gperf (e.g., built from gperf-3.1.tar.gz sources and passed into the LO build via a GPERF=... line in autogen.input).

* On Windows, found out that guaranteed copy elision support isn't good enough for our needs (see <https://cgit.freedesktop.org/libreoffice/core/commit/?id=62bfe29f9045127d479c42376f599ddfb0fbb2ca> "Already set MSVC's -std:c++17 during the configure.ac feature checks") even in latest MSVC 2017 15.8, even though <https://en.cppreference.com/w/cpp/compiler_support#C.2B.2B17_features> advertises it as supported since MSVC 2017 15.6. Apparently a reminder to treat the feature matrix at <https://en.cppreference.com/w/cpp/compiler_support> with a grain of salt...

* On macOS, our baseline is Xcode 8 according to <https://cgit.freedesktop.org/libreoffice/core/commit/?id=1079893be5593268eff0867be87b0291546d88c7> "Document baselines". According to <https://en.wikipedia.org/wiki/Xcode#Latest_versions> that means the oldest Apple Clang we need to support corresponds roughly to Clang 3.9. (Unfortunately, the information about what plain Clang the Apple Clang shipped with Xcode corresponds to ends with Xcode 8.2.1 at <https://en.wikipedia.org/wiki/Xcode#Latest_versions>, so it is not immediately clear what benefit any update of our Xcode baseline would bring us Clang-version wise.)

* Regarding Clang on Linux, I saw the other day that e.g. Jenkins tb75 is still using Clang 3.8. With macOS limiting us to 3.9, it would be great if Linux would not limit us even more severely. Does anybody have a problem with upgrading the Clang-on-Linux baseline to at least 3.9 for LO master in the near future?

* A real-life example I came across today at <https://gerrit.libreoffice.org/#/c/60394/3..4/xmloff/source/draw/animexp.cxx> of a benefit we would get from a baseline bump is the current lack of support for inline variables with some compilers (necessitating those !HAVE_CPP_INLINE_VARIABLES extra variable definitions to be sprinkled throughout the code). Per <https://en.cppreference.com/w/cpp/compiler_support#C.2B.2B17_features>, inline variables are supported by GCC 7, Clang 3.9, and MSVC 2017 15.5 (and, I can confirm, are indeed supported fine for our needs with at least MSVC 2017 15.8).
_______________________________________________
LibreOffice mailing list
LibreOffice@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/libreoffice




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux