4141 standards : ' 20'
4242 latest-factors : |
4343 msvc Optimized-Debug
44- gcc Coverage
44+ gcc UBSan Coverage
45+ clang UBSan
4546 factors : ' '
4647 runs-on : |
4748 apple-clang: macos-15
@@ -65,21 +66,23 @@ jobs:
6566 msvc: ''
6667 extra-values : |
6768 llvm-hash: dd7a3d4d798e30dfe53b5bbbbcd9a23c24ea1af9
68- llvm-id: {{ substr llvm-hash 0 7 }}
69- llvm-build-preset-prefix: {{#if optimized-debug}}debwithopt{{else}}{{lowercase build-type}}{{/if}}
70- llvm-build-preset-suffix: {{#if (ieq os 'windows') }}win{{else}}unix{{/if}}
71- llvm-build-preset: {{ llvm-build-preset-prefix }}-{{ llvm-build-preset-suffix }}
72- llvm-compiler-key: {{ compiler }}-{{ version }}
73- llvm-cache-key: llvm-libcxx-{{ lowercase os }}-{{ llvm-compiler-key }}-{{ llvm-build-preset-prefix }}-{{ llvm-hash }}
69+ llvm-id: {{{ substr llvm-hash 0 7 }}}
70+ llvm-build-preset-prefix: {{#if optimized-debug}}debwithopt{{else}}{{{lowercase build-type}}}{{/if}}
71+ llvm-build-preset-os: {{#if (ieq os 'windows') }}win{{else}}unix{{/if}}
72+ llvm-build-preset-sanitizer: {{#if ubsan}}-UBSan{{else if asan}}-ASan{{else if msan}}MSan{{/if}}
73+ llvm-build-preset: {{{ llvm-build-preset-prefix }}}-{{{ llvm-build-preset-os }}}{{{ llvm-build-preset-sanitizer }}}
74+ llvm-compiler-key: {{{ compiler }}}-{{{ version }}}
75+ llvm-cache-key: llvm-libcxx-{{{ lowercase os }}}-{{{ llvm-compiler-key }}}-{{{ llvm-build-preset-prefix }}}-{{{ ubsan }}}-{{{ asan }}}-{{{ msan }}}-{{{ llvm-hash }}}
7476 llvm-root: ../third-party/llvm-project/install
75- llvm-archive-basename: llvm-{{ os }}-{{ llvm-build-preset-prefix }}-{{ llvm-id }}
77+ llvm-archive-basename: llvm-{{{ os }}} -{{{ llvm-build-preset-prefix }}} -{{{ llvm-id } }}
7678 llvm-archive-extension: {{#if (ieq os 'windows') }}7z{{else}}tar.bz2{{/if}}
77- llvm-archive-filename: {{ llvm-archive-basename }}.{{ llvm-archive-extension }}
78- mrdocs-ccflags: {{ ccflags }} {{#if (eq compiler 'gcc') }}-static{{/if}} {{#if asan }}-static-libasan{{/if}} {{#if tsan }}-static-libtsan {{/if}}
79- mrdocs-cxxflags: {{ cxxflags }} {{#if (eq compiler 'gcc') }}-static{{/if}} {{#if asan }}-static-libasan{{/if}} {{#if tsan }}-static-libtsan {{/if}}
79+ llvm-archive-filename: {{{ llvm-archive-basename }}} .{{{ llvm-archive-extension } }}
80+ mrdocs-ccflags: {{{ ccflags }}} {{#if (and ( eq compiler 'gcc') (not asan)) }}-static{{/if}}
81+ mrdocs-cxxflags: {{{ cxxflags }}} {{#if (and ( eq compiler 'gcc') (not asan)) }}-static{{/if}}
8082 mrdocs-package-generators: {{#if (ieq os 'windows') }}7Z ZIP WIX{{else}}TGZ TXZ{{/if}}
81- mrdocs-release-package-artifact: release-packages-{{ lowercase os }}
83+ mrdocs-release-package-artifact: release-packages-{{{ lowercase os } }}
8284 output-file : matrix.json
85+ trace-commands : true
8386
8487 # Set up the version as expected by the LLVM matrix script and @actions/core
8588 - name : Setup Node.js
@@ -260,6 +263,10 @@ jobs:
260263 build-type : ${{ matrix.build-type }}
261264 extra-args : |
262265 ${{ runner.os == 'Windows' && '-DLLVM_ENABLE_RUNTIMES=libcxx' || '-DLLVM_ENABLE_RUNTIMES=libcxx;libcxxabi;libunwind' }}
266+ # The UBSan vptr sanitizer needs RTTI.
267+ ${{ matrix.ubsan && '-DLLVM_ENABLE_RTTI=ON' }}
268+ # The LLVM_USE_SANITIZER option doesn't support GCC.
269+ ${{ !matrix.compiler == 'gcc' && matrix.ubsan && '-DLLVM_USE_SANITIZER=Undefined' }}
263270 cc : ${{ steps.setup-cpp.outputs.cc }}
264271 cxx : ${{ steps.setup-cpp.outputs.cxx }}
265272 generator : Ninja
0 commit comments