This is an archive of the discontinued LLVM Phabricator instance.

[CMake] Use `LLVM_ENABLE_ASSERTIONS` to enable the hardened mode in libc++.
ClosedPublic

Authored by var-const on Jul 26 2023, 2:54 PM.

Details

Summary

Use the new libc++ hardened mode instead of the deprecated safe mode.

Diff Detail

Event Timeline

var-const created this revision.Jul 26 2023, 2:54 PM
Herald added a project: Restricted Project. · View Herald TranscriptJul 26 2023, 2:54 PM
Herald added a subscriber: ekilmer. · View Herald Transcript
var-const requested review of this revision.Jul 26 2023, 2:54 PM
Herald added a project: Restricted Project. · View Herald TranscriptJul 26 2023, 2:54 PM
benlangmuir accepted this revision.Jul 26 2023, 3:29 PM
This revision is now accepted and ready to land.Jul 26 2023, 3:29 PM

For potential future reference: this was reported by @dblaikie and @cjdb on https://reviews.llvm.org/D154997. The following command:

CC=clang CXX=clang++ cmake -G Ninja -DLLVM_ENABLE_WERROR=true -DLIBCXX_ENABLE_WERROR=true -DLLVM_BUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=true -DLLVM_USE_SPLIT_DWARF=true -DLLVM_OPTIMIZED_TABLEGEN=true  -DLLVM_ENABLE_LLD=true -DLLVM_ENABLE_PROJECTS='llvm;clang;clang-tools-extra;lld;lldb;cross-project-tests' -DLLVM_ENABLE_RUNTIMES='libcxxabi;libcxx;compiler-rt'  -DLLDB_ENABLE_PYTHON=On  ~/dev/llvm/src/llvm
ninja check-all

was triggering the warning about _LIBCPP_ENABLE_ASSERTIONS being deprecated, which becomes an error due to -Werror. I verified locally that with this patch, the command now succeeds. The behavior is unchanged because using _LIBCPP_ENABLE_ASSERTIONS now enables the hardened mode instead.

The CI failure appears unrelated:

_bk;t=1690424766404******************** TEST 'Clang :: AST/Interp/literals.cpp' FAILED ********************
_bk;t=1690424766404Script:
_bk;t=1690424766404--
_bk;t=1690424766404: 'RUN: at line 1';   c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -fexperimental-new-constant-interpreter -fms-extensions -std=c++11 -verify C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp
_bk;t=1690424766404: 'RUN: at line 2';   c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -fexperimental-new-constant-interpreter -fms-extensions -std=c++20 -verify C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp
_bk;t=1690424766404: 'RUN: at line 3';   c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -std=c++11 -fms-extensions -verify=ref C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp
_bk;t=1690424766404: 'RUN: at line 4';   c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe -cc1 -internal-isystem c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include -nostdsysteminc -std=c++20 -fms-extensions -verify=ref C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp
_bk;t=1690424766404--
_bk;t=1690424766404Exit Code: 1
_bk;t=1690424766404
_bk;t=1690424766404Command Output (stdout):
_bk;t=1690424766404--
_bk;t=1690424766404$ ":" "RUN: at line 1"
_bk;t=1690424768343$ "c:\ws\w3\llvm-project\premerge-checks\build\bin\clang.exe" "-cc1" "-internal-isystem" "c:\ws\w3\llvm-project\premerge-checks\build\lib\clang\18\include" "-nostdsysteminc" "-fexperimental-new-constant-interpreter" "-fms-extensions" "-std=c++11" "-verify" "C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp"
_bk;t=1690424768347# command stderr:
_bk;t=1690424768347error: 'warning' diagnostics seen but not expected: 
_bk;t=1690424768347  File C:\ws\w3\llvm-project\premerge-checks\clang\test\AST\Interp\literals.cpp Line 946: cast to smaller integer type 'long' from 'char *'
_bk;t=16904247683471 error generated.
_bk;t=1690424768347
_bk;t=1690424768347error: command failed with exit status: 1

I will go ahead and merge this patch.

This revision was landed with ongoing or failed builds.Jul 26 2023, 11:09 PM
This revision was automatically updated to reflect the committed changes.