Changes from Git (git http://labmaster3.local/git/llvm-project.git)


  1. Disallow use of __has_c_attribute in C++ mode. (details)
  2. Fix sanitizer-common build with glibc 2.31 (details)
Commit d930ed1acc0ea49d4b3aae7e95b4c6d9cd310578 by aaron
Disallow use of __has_c_attribute in C++ mode.
__has_cpp_attribute is not available in C mode, and __has_c_attribute
should not be available in C++ mode. This also adds a test to
demonstrate that we properly handle scoped attribute tokens even in C
The file was modifiedclang/test/Preprocessor/has_c_attribute.c
The file was modifiedclang/lib/Lex/PPMacroExpansion.cpp
The file was addedclang/test/Preprocessor/has_c_attribute.cpp
Commit 947f9692440836dcb8d88b74b69dd379d85974ce by eugenis
Fix sanitizer-common build with glibc 2.31
Summary: As mentioned in D69104, glibc changed ABI recently with the [[;a=commitdiff;h=2f959dfe849e0646e27403f2e4091536496ac0f0|
2f959dfe ]] change. D69104 dealt with just 32-bit ARM, but that is just
one of the many affected architectures. E.g. x86_64, i?86, riscv64,
sparc 32-bit, s390 31-bit are affected too (and various others).
This patch instead of adding a long list of further architectures that
wouldn't be checked ever next to arm 32-bit changes the structures to
match the 2.31 layout and performs the checking on Linux for ipc_perm
mode position/size only on non-Linux or on Linux with glibc 2.31 or
later.  I think this matches what is done for aarch64 already. If
needed, we could list architectures that haven't changed ABI (e.g.
powerpc), so that they would be checked even with older glibcs.  AFAIK
sanitizers don't actually use ipc_perm.mode and so all they care about
is the size and alignment of the whole structure.
Note, s390 31-bit and arm 32-bit big-endian changed ABI even further,
there will now be shmctl with old symbol version and shmctl@@GLIBC_2.31
which will be incompatible.  I'm afraid this isn't really solvable
unless the sanitizer libraries are symbol versioned and use matching
symbol versions to glibc symbols for stuff they intercept, plus use
dlvsym. This patch doesn't try to address that.
Patch by Jakub Jelinek.
Reviewers: kcc, eugenis, dvyukov
Reviewed By: eugenis
Subscribers: jyknight, kristof.beyls, fedor.sergeev, simoncook, PkmX,
s.egerton, steven.zhang, #sanitizers, llvm-commits
Tags: #sanitizers, #llvm
Differential Revision:
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp