Commit Graph

1318 Commits

Author SHA1 Message Date
Azat Khuzhin
65cd040d15 Better workaround for emitting .debug_aranges section
Note, that this is just a syntastic change, that should not makes any
difference (well the only difference is that now it supports gold and
other links, since the option is handled by the plugin itself instead of
the linker).

Refs: https://reviews.llvm.org/D133092
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-10-18 21:09:07 +02:00
Alexey Milovidov
8e4531d135 Preparation for Musl build, part 4 2022-10-01 16:29:41 +02:00
Alexey Milovidov
7099602d5e
Merge pull request #41778 from danlark1/master
Add ldapr to AArch64 server builds
2022-09-28 14:23:33 +03:00
Robert Schulze
de3264691c
Merge pull request #41790 from ClickHouse/print-git-hash
Log git hash during startup
2022-09-28 09:43:17 +02:00
Robert Schulze
1f3f86e5bf
Cosmetics 2022-09-27 11:46:56 +00:00
Robert Schulze
823d8fb6cd
Move git calls back into git.cmake
+ renamed the file from originally "git_status.cmake" to "git.cmake"
  (because we not longer run only "git status")
2022-09-27 11:45:58 +00:00
Daniel Kutenin
9825b4d1f9
Move unused command line arguments to a proper place 2022-09-26 20:56:52 +01:00
Daniel Kutenin
46d45607c8
Disable unused command line as it does not work for assembly files 2022-09-26 15:53:03 +01:00
Robert Schulze
ec35ff9cd6
Log git hash during startup
We currently only log a compiler-generated "build id" at startup which
is different for each build. That makes it useless to determine the
exact source code state in tests (e.g. BC test) and from user log files
(e.g. if someone compiled an intermediate version of ClickHouse).

Current log message:
  Starting ClickHouse 22.10.1.1 with revision 54467, build id: 6F35820328F89C9F36E91C447FF9E61CAF0EF019, PID 42633

New log message:
  Starting ClickHouse 22.10.1.1 (revision 54467, git hash: b6b1f7f763f94ffa12133679a6f80342dd1c3afe, build id: 47B12BE61151926FBBD230DE42F3B7A6652AC482), PID 981813
2022-09-26 14:12:36 +00:00
Daniel Kutenin
cec641a71b
Add ldapr for Arm instances 2022-09-26 13:00:18 +01:00
Alexey Milovidov
62ebf397d2
Merge pull request #41610 from ClickHouse/upgrade-arm-requirement
Bump minimum required ARM ISA to v8.2 and add v8.0 compat build
2022-09-26 14:08:48 +03:00
Alexey Milovidov
93ed8e0c7b Update version to 22.10.1.1 2022-09-22 09:32:38 +02:00
Robert Schulze
49c4f1f9c6
Document flags 2022-09-21 21:18:53 +00:00
Robert Schulze
cfd8d4e1f1
Add CRC32 to compat build 2022-09-21 14:52:27 +00:00
Robert Schulze
971cef8bd2
Provide x86 SIMD flag options only on x86 2022-09-21 09:30:51 +00:00
Alexey Milovidov
84f42e0874 Fix 3/4 of trash 2022-09-19 08:50:53 +02:00
Azat Khuzhin
64bb490460 Add a note about why sentry turned off for musl
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-10 21:38:34 +02:00
Azat Khuzhin
ced30a2072 Switch to llvm/clang 15
It had been released few hours ago, and I want to check how clang-15
generates DWARF-5

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-10 21:38:34 +02:00
Robert Schulze
9d4de0cbaa
Merge pull request #40999 from ClickHouse/sse2-special-build
Add special x86-SSE2-only build
2022-09-08 09:06:29 +02:00
Robert Schulze
e1def723f8
Add special x86-SSE2-only build 2022-09-05 12:51:44 +00:00
Azat Khuzhin
26f1c1504a Do not compress debug sections (internal DWARF parser cannot handle such)
Although this increase debug symbol size from 510MB to 1.8GB, but it is
not a problem for packages, since they are compressed anyway.
Checked deb package, and size slightly increased though, 834M -> 962M.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-02 23:22:25 +02:00
Azat Khuzhin
2d3fb36a62 Fix debug symbols (Add a quirk to force clang emit .debug_aranges with ThinLTO)
Wrap a linker into a script that will add some settings (`-mllvm
-generate-arange-section`) in case of ThinLTO to emit `.debug_aranges`
symbols.

Dicussion in the LLVM can be found here [1].

  [1]: https://discourse.llvm.org/t/clang-does-not-produce-full-debug-aranges-section-with-thinlto/64898

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-09-02 23:22:25 +02:00
Alexey Milovidov
6fbff6d1f6
Revert "Avx enablement" 2022-08-21 15:47:02 +03:00
Alexey Milovidov
d62d3ad461 Update version to 22.9.1.1 2022-08-18 19:39:03 +02:00
Alexey Milovidov
5ce6c07005 Set linker for RISC-V 64 2022-08-14 05:57:55 +02:00
Alexey Milovidov
a6a51f4fb8 Minor build changes 2022-08-13 06:39:20 +02:00
Alexey Milovidov
a716d78264 Support build with clang-16 2022-08-13 06:06:01 +02:00
Raúl Marín
11a274e990 Clean up constinit usage and add a comment 2022-08-11 13:27:53 +02:00
Maksim Kita
64b41e8676
Performance check build AVX 2022-07-22 11:53:16 +00:00
Mikhail f. Shiryaev
cf0b01b189
Update version to 22.8.1.1 2022-07-21 19:21:28 +02:00
Azat Khuzhin
40d5627510
Avoid loading toolchain file multiple times to avoid confusing ccache (#39387)
During first run of cmake the toolchain file will be loaded twice,
- /usr/share/cmake-3.23/Modules/CMakeDetermineSystem.cmake
- /bld/CMakeFiles/3.23.2/CMakeSystem.cmake

But once you already have non-empty cmake cache it will be loaded only
once:
- /bld/CMakeFiles/3.23.2/CMakeSystem.cmake

This has no harm except for double load of toolchain will add
--gcc-toolchain multiple times that will not allow ccache to reuse the
cache.

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-07-21 01:26:28 +02:00
Alexey Milovidov
f1256c3aef
Merge pull request #37891 from guowangy/lz4-decompress-vbmi
LZ4 decompress: add VBMI optimized copyOverlap32Shuffle
2022-07-18 00:37:59 +03:00
Robert Schulze
74fc53e5c2
Enable -Wc99-extension 2022-07-15 10:58:09 +00:00
Robert Schulze
1276bfdffd
Enable -Wsign-conversion 2022-07-15 08:54:21 +00:00
Robert Schulze
22abb97b91
Enable -Wc11-extensions 2022-07-14 14:36:23 +00:00
Robert Schulze
97aa9a7371
Enable -Wpacked 2022-07-14 12:36:57 +00:00
Robert Schulze
e7bc973ffb
Enable -Wshift-sign-overflow 2022-07-14 12:36:56 +00:00
Robert Schulze
3d734a0640
Enable -Wnested-anon-types 2022-07-14 12:36:55 +00:00
Robert Schulze
72d45bdff3
Enable -Wvla-extension 2022-07-14 12:36:53 +00:00
Robert Schulze
439b786156
Enable -Wunused-command-line-argument 2022-07-14 12:36:52 +00:00
Robert Schulze
da4724e7f5
Enable -Wreturn-std-move-in-c++11 2022-07-14 12:36:48 +00:00
Robert Schulze
87197f8f60
Enable -Wdeprecated-dynamic-exception-spec 2022-07-13 13:49:40 +00:00
mergify[bot]
62c62a2df7
Merge branch 'master' into lz4-decompress-vbmi 2022-07-11 14:23:17 +00:00
Robert Schulze
bb358617e1
Better naming for stuff related to splitted debug symbols
The previous name was slightly misleading, e.g. it is not about
"intalling stripped binaries" but about splitting debug symbols from the
binary.
2022-06-30 23:41:27 +02:00
Robert Schulze
fa6deaa0f7
Merge pull request #38294 from ClickHouse/fix_system_dot_licences_on_mac
Fix system.licenses on mac
2022-06-23 09:33:07 +02:00
Robert Schulze
a26aba792e
Assume GNU tools are installed when crosscompiling 2022-06-22 20:07:26 +02:00
Robert Schulze
1030dd305a
Correct brew install command 2022-06-22 16:59:03 +02:00
Robert Schulze
287a7f6e98
Let CMake check the presence of GNU utils
In list-licenses.sh it's too late ... the build simply continues if
list-licenses.sh returns with a non-zero exit code.
2022-06-21 23:49:29 +02:00
Robert Schulze
55b39e709d
Merge remote-tracking branch 'origin/master' into clang-tsa 2022-06-20 16:39:32 +02:00
Robert Schulze
5a4f21c50f
Support for Clang Thread Safety Analysis (TSA)
- TSA is a static analyzer build by Google which finds race conditions
  and deadlocks at compile time.

- It works by associating a shared member variable with a
  synchronization primitive that protects it. The compiler can then
  check at each access if proper locking happened before. A good
  introduction are [0] and [1].

- TSA requires some help by the programmer via annotations. Luckily,
  LLVM's libcxx already has annotations for std::mutex, std::lock_guard,
  std::shared_mutex and std::scoped_lock. This commit enables them
  (--> contrib/libcxx-cmake/CMakeLists.txt).

- Further, this commit adds convenience macros for the low-level
  annotations for use in ClickHouse (--> base/defines.h). For
  demonstration, they are leveraged in a few places.

- As we compile with "-Wall -Wextra -Weverything", the required compiler
  flag "-Wthread-safety-analysis" was already enabled. Negative checks
  are an experimental feature of TSA and disabled
  (--> cmake/warnings.cmake). Compile times did not increase noticeably.

- TSA is used in a few places with simple locking. I tried TSA also
  where locking is more complex. The problem was usually that it is
  unclear which data is protected by which lock :-(. But there was
  definitely some weird code where locking looked broken. So there is
  some potential to find bugs.

*** Limitations of TSA besides the ones listed in [1]:

- The programmer needs to know which lock protects which piece of shared
  data. This is not always easy for large classes.

- Two synchronization primitives used in ClickHouse are not annotated in
  libcxx:
  (1) std::unique_lock: A releaseable lock handle often together with
      std::condition_variable, e.g. in solve producer-consumer problems.
  (2) std::recursive_mutex: A re-entrant mutex variant. Its usage can be
      considered a design flaw + typically it is slower than a standard
      mutex. In this commit, one std::recursive_mutex was converted to
      std::mutex and annotated with TSA.

- For free-standing functions (e.g. helper functions) which are passed
  shared data members, it can be tricky to specify the associated lock.
  This is because the annotations use the normal C++ rules for symbol
  resolution.

[0] https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
[1] https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42958.pdf
2022-06-20 16:13:25 +02:00