Commit Graph

15666 Commits

Author SHA1 Message Date
Tobias Burnus 6f095babc2 sanitizer_common: Define FP_XSTATE_MAGIC1 for old glibc
D116208 (commit 1298273e82) added FP_XSTATE_MAGIC1.
However, when building with glibc < 2.16 for backward-dependency
compatibility, it is not defined - and the build breaks.

Note: The define comes from Linux's asm/sigcontext.h but the
file uses signal.h which includes glibc's bits/sigcontext.h - which
is synced from the kernel's file but lags behind.

Solution: For backward compatility with ancient systems, define
FP_XSTATE_MAGIC1 if undefined.

//For the old systems, we were building with Linux kernel 3.19 but to support really old glibc systems, we build with a sysroot of glibc 2.12. While our kernel (and the users' kernels) have FP_XSTATE_MAGIC1, glibc 2.12 is too old. – With this patch, building the sanitizer libs works again. This showed up for us today as GCC mainline/13 has now synced the sanitizer libs.//

Reviewed By: #sanitizers, vitalybuka

Differential Revision: https://reviews.llvm.org/D124927
2022-05-05 11:05:27 +01:00
Wael Yehia 2407c13aa4 [AIX][PGO] Enable linux style PGO on AIX
This patch switches the PGO implementation on AIX from using the runtime
registration-based section tracking to the __start_SECNAME/__stop_SECNAME
based. In order to enable the recognition of __start_SECNAME/__stop_SECNAME
symbols in the AIX linker, the -bdbg:namedsects:ss needs to be used.

Reviewed By: jsji, MaskRay, davidxl

Differential Revision: https://reviews.llvm.org/D124857
2022-05-05 04:10:39 +00:00
Ayke van Laethem 514371c370
[compiler-rt][AVR] Fix avr_SOURCES CMake variable
D123200 did not include the generic sources, which means that only the
AVR-specific sources were compiled. With this change, generic sources
are included as expected.

Tested with the following commands:

    cmake -G Ninja -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=avr -DCOMPILER_RT_BAREMETAL_BUILD=1 -DCMAKE_C_COMPILER=clang-14 -DCMAKE_C_FLAGS="--target=avr -mmcu=avr5 -nostdlibinc -mdouble=64" ../path/to/builtins

    ninja

Differential Revision: https://reviews.llvm.org/D124969
2022-05-05 02:29:04 +02:00
H.J. Lu f52e365092 [sanitizer] Use newfstatat for x32
Since newfstatat is supported on x32, use it for x32.

Differential Revision: https://reviews.llvm.org/D124968
2022-05-04 15:54:42 -07:00
Ayke van Laethem c1d6dca694
[compiler-rt][AVR] Use correct return value for __ledf2 etc
Previously the default was long, which is 32-bit on AVR. But avr-gcc
expects a smaller value: it reads the return value from r24.

This is actually a regression from https://reviews.llvm.org/D98205.
Before D98205, the return value was an enum (which was 2 bytes in size)
which was compatible with the 1-byte return value that avr-gcc was
expecting. But long is 4 bytes and thus places the significant return
value in a different register.

Differential Revision: https://reviews.llvm.org/D124939
2022-05-04 22:51:39 +02:00
Florian Mayer 1b2704f935 [HWASan] cleanup imports in hwasan_symbolize. 2022-05-04 11:22:36 -07:00
Martin Liska f1b9245199 tsan: fix GCC warnings
Fixes:

tsan/tsan_shadow.h:93:32: warning: enumerated and non-enumerated type in conditional expression [-Wextra]
tsan/tsan_shadow.h:94:44: warning: enumerated and non-enumerated type in conditional expression [-Wextra]

Differential Revision: https://reviews.llvm.org/D124828
2022-05-04 10:22:03 +02:00
Yuanfang Chen a61c8e1ebd tsan: for unittests, change to use test fixtures to clear racy stacks
After cd0a5889d7, unittest would run in shard mode where many tests
share a single process. Need to clear some global state to make the test
results stable.

Reviewed By: thetruestblue, rsundahl

Differential Revision: https://reviews.llvm.org/D124591
2022-05-03 10:18:00 -07:00
Martin Liska 903b8845fb sanitizer: Fix fallthrough detection.
First check for clang::fallthrough attribute that resolves:

sanitizer_stack_store.cpp:258:7: error: use of the 'fallthrough'
attribute is a C++17 extension [-Werror,-Wc++17-attribute-extensions]
2022-05-03 13:55:28 +02:00
Martin Liska 0a1bcab9f3 tsan: fix deadlock in libbacktrace
Fixes deadlock seen in GCC.

Fixes: #55226

Differential Revision: https://reviews.llvm.org/D124838
2022-05-03 12:51:20 +02:00
Martin Liska f496a0eba4 sanitizer: use pragma clang conditionally
Use the pragma only when __clang__ is defined.

Fixes:
sanitizer_common_libcdep.cpp:101: warning: ignoring ‘#pragma clang diagnostic’ [-Wunknown-pragmas]

Differential Revision: https://reviews.llvm.org/D124829
2022-05-03 11:34:30 +02:00
Martin Liska bc8e601257 sanitizer: support GCC's fallthrough attribute
Fixes:
sanitizer_stack_store.cpp:257:13: warning: this statement may fall through [-Wimplicit-fallthrough=]

when being built with GCC.

Differential Revision: https://reviews.llvm.org/D124832
2022-05-03 11:30:13 +02:00
Vitaly Buka eeccdd318d Revert "tsan: model atomic read for failing CAS"
https://lab.llvm.org/buildbot/#/builders/70/builds/21206 hangs.

This reverts commit 2fec52a402.
2022-05-02 22:26:56 -07:00
Evgenii Stepanov 696092c703 [sanitizer] Use canonical syscalls everywhere
These "new" syscalls have been added in 2.6.16, more than 16 years ago.
Surely that's enough time to migrate. Glibc 2.33 is using them on both
i386 and x86_64. Android has an selinux filter to block the legacy
syscalls in the apps.

Differential Revision: https://reviews.llvm.org/D124212
2022-05-02 13:54:01 -07:00
Dmitry Vyukov 2fec52a402 tsan: model atomic read for failing CAS
See the added test and https://github.com/google/sanitizers/issues/1520
for the description of the problem.
The standard says that failing CAS is a memory load only,
model it as such to avoid false positives.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D124507
2022-05-02 12:57:56 +02:00
Ben Shi fb7a435492 [compiler-rt][builtins] Add several helper functions for AVR
__mulqi3 : int8 multiplication
__mulhi3 : int16 multiplication
   _exit : golobal terminator

Reviewed By: MaskRay, aykevl

Differential Revision: https://reviews.llvm.org/D123200
2022-05-02 01:27:46 +00:00
Kito Cheng b5047c7329 [compiler-rt][profile][RISCV] Enable profile for RISC-V
Profile library are written by standard libraries or POSIX calls depend on target support, so there is no porting effort for the target, we could enable that for both RV32 and RV64, verified on the RV64 platform.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D124599
2022-04-30 11:00:39 +08:00
Vitaly Buka 7858219436 [asan] Enable detect_stack_use_after_return=1 by default on Linux
By default -fsanitize=address already compiles with this check, why not use it.
For compatibly it can be disabled with env ASAN_OPTIONS=detect_stack_use_after_return=0.

Reviewed By: eugenis, kda, #sanitizers, hans

Differential Revision: https://reviews.llvm.org/D124057
2022-04-28 21:08:16 -07:00
Blue Gaston 8b574a1e51 [Darwin][UBSan][Sanitizer] abort_on_error ubsan test fix for arm64
The current darwin abort_on_error test specifically tests for a division
by zero undefined behavior. However arm does not trap by default for this
behavior. x86 signals the abort, which is why the test passes on x86.
This patch updates the test to test for a case where the ubsan runtime
specifically calls Die() to trigger an abort by default.

rdar://92108564

Differential Revision: https://reviews.llvm.org/D124480
2022-04-27 12:23:03 -07:00
Dmitry Vyukov 16baf59c6d tsan: avoid false positives related to epoll
An application can use the mere fact of epoll_wait returning an fd
as synchronization with the write on the fd that triggered the notification.
This pattern come up in an internal networking server (b/229276331).

If an fd is added to epoll, setup a link from the fd to the epoll fd
and use it for synchronization as well.

Reviewed By: melver

Differential Revision: https://reviews.llvm.org/D124518
2022-04-27 16:59:46 +02:00
Vitaly Buka c1e94591bc Revert "[asan] Enable detect_stack_use_after_return=1 by default"
Temporarily revert the option to fix
https://bugs.chromium.org/p/chromium/issues/detail?id=1319387

This reverts option default and documentation of the commit. Test
changes are not being reverted as they are improvement and break
reliance on option defaults.

Additional memory usage is a problem on mobile devices with low memory.
Even heavy thread desktop programs may need some FakeStack tunning.

This reverts commit 4b4437c084.
2022-04-27 00:43:39 -07:00
Petr Hosek 0571af01df Revert "[CMake][compiler-rt] Use COMPILE_OPTIONS and LINK_OPTIONS"
This reverts commit d47565ed62.
2022-04-26 23:25:38 -07:00
Petr Hosek d47565ed62 [CMake][compiler-rt] Use COMPILE_OPTIONS and LINK_OPTIONS
This avoids the need for string-ification and lets CMake deduplicate
potentially duplicate flags.

Differential Revision: https://reviews.llvm.org/D122750
2022-04-26 23:19:16 -07:00
Martin Storsjö 1692c2fdaa Revert "[compiler-rt] Use C_STANDARD instead of custom logic for adding -std=c11"
This reverts commit 2f251925db.

This was reported to break the Builtins-powerpc64le-linux::qdiv_test.c
test on ppc64le buildbots, e.g. these:

https://lab.llvm.org/buildbot/#/builders/105/builds/24538
https://lab.llvm.org/buildbot/#/builders/121/builds/18755
2022-04-27 00:20:44 +03:00
Martin Storsjö 2f251925db [compiler-rt] Use C_STANDARD instead of custom logic for adding -std=c11
Apply this in add_compiler_rt_runtime instead of manually adding it
to the individual projects. This applies the option on more
parts of compiler-rt than before, but should ideally not make any
difference assuming the other runtimes that lacked the option
also were C11 compatible.

Not marking this as required, to match the existing behaviour (where
`-std=c11` was added only if supported by the compiler).

This was suggested during the review of D110005.

Differential Revision: https://reviews.llvm.org/D124343
2022-04-26 12:36:20 +03:00
Quinn Pham b3e8e43789 [compiler-rt][NFC] Inclusive language: remove use of sanity check/test
from compiler-rt/lib/tsan

[NFC] As part of using inclusive language within the llvm project, this
patch rewords comments to remove sanity check and sanity test.

Reviewed By: dvyukov

Differential Revision: https://reviews.llvm.org/D124390
2022-04-25 16:13:11 -05:00
Saleem Abdulrasool 07513605b2 CODE_OWNERS: update information for builtins
Mark myself as the code owner for the builtins library as per the
discussion at
https://discourse.llvm.org/t/code-owner-for-compiler-rt-builtins-library.

Differential Revision: https://reviews.llvm.org/D124263
Reviewed By: aaron.ballman, lattner
2022-04-25 15:36:52 +00:00
Nico Weber 36ba89b5b3 Revert "[sanitizer] Use canonical syscalls everywhere"
This reverts commit 34b676eb60.
Speculative, might have caused test problems on Android.
2022-04-25 08:49:16 -04:00
Petr Hosek b3df14b6c9 [runtimes] [CMake] Unify variable names
Avoid repeating CMake checks across runtimes by unifying names of
variables used for results to leverage CMake caching.

Differential Revision: https://reviews.llvm.org/D110005
2022-04-24 13:06:36 +03:00
Vitaly Buka 9b8a04313f [test] Don't rely on default of detect_stack_use_after_return 2022-04-22 23:28:27 -07:00
Vitaly Buka dd6350d937 Revert "[test] Don't rely on default of detect_stack_use_after_return"
Revent acidentally deleted lines.

This reverts commit ff25f69473.
2022-04-22 23:26:29 -07:00
Vitaly Buka a050033582 [test] Don't rely on default of detect_stack_use_after_return 2022-04-22 21:09:34 -07:00
Enna1 b99cf5f25a [ASan][test] Fix mismatched-new-delete in asan test unaligned_loads_and_stores.cpp
Fix mismatched-new-delete in asan test unaligned_loads_and_stores.cpp

Reviewed By: vitalybuka, MaskRay

Differential Revision: https://reviews.llvm.org/D124268
2022-04-23 11:57:59 +08:00
Vitaly Buka 588df1985c Revert "[nfc][asan][windows] Fix test after D124057"
The patch does not fix the bot.

This reverts commit 62b78a063a.
2022-04-22 19:10:30 -07:00
Vitaly Buka 72e00c45a4 [asan] Don't enable detect_stack_use_after_return on Windows
It's not clear how ready it's there.
2022-04-22 19:10:30 -07:00
Vitaly Buka ff25f69473 [test] Don't rely on default of detect_stack_use_after_return 2022-04-22 19:10:30 -07:00
Dan Liew a680c212cb Revert "Revert "[compiler-rt][Darwin] Add arm64 to simulator platforms""
This reverts commit 3469cb14e2.

Relanding the patch on behalf of Byoungchan Lee.

The original patch (8a3afc6da5) was
reverted because it appeared to be landed without the approval
of an Apple engineer.

After internal discussion we're happy for this to land and I've
formally approved the patch in phabricator
(https://reviews.llvm.org/D119174).

rdar://92134140
2022-04-22 18:48:49 -07:00
Vitaly Buka 9c8e93c1b5 [nfc][asan][android] Fix test after D124057 2022-04-22 17:16:11 -07:00
Vitaly Buka 62b78a063a [nfc][asan][windows] Fix test after D124057 2022-04-22 17:10:28 -07:00
Dan Liew 3469cb14e2 Revert "[compiler-rt][Darwin] Add arm64 to simulator platforms"
This reverts commit 8a3afc6da5.

The commit being was landed without review from any Apple engineers
which is problematic because the patch only affects Apple platforms.

rdar://92134140
2022-04-22 17:06:14 -07:00
Vitaly Buka 4b4437c084 [asan] Enable detect_stack_use_after_return=1 by default
By default -fsanitize=address already compiles with this check,
why not use it.
For compatibly it can be disabled with env ASAN_OPTIONS=detect_stack_use_after_return=0.

Reviewed By: eugenis, kda, #sanitizers, hans

Differential Revision: https://reviews.llvm.org/D124057
2022-04-22 15:31:43 -07:00
Petr Hosek 4466672861 [CMake] Update ARM32 list for CRT config-ix
This matches the behavior prior to b0e2ffe151.

Fixes: https://github.com/llvm/llvm-project/issues/55046

Differential Revision: https://reviews.llvm.org/D120682
2022-04-22 14:37:42 -07:00
Evgenii Stepanov 34b676eb60 [sanitizer] Use canonical syscalls everywhere
These "new" syscalls have been added in 2.6.16, more than 16 years ago.
Surely that's enough time to migrate. Glibc 2.33 is using them on both
i386 and x86_64. Android has an selinux filter to block the legacy
syscalls in the apps.

Differential Revision: https://reviews.llvm.org/D124212
2022-04-22 12:08:13 -07:00
Dominic Chen fcbca197f2 [scudo] Disable memory tagging on arm64_32
arm64_32 is an ILP32 platform

Differential Revision: https://reviews.llvm.org/D124135
2022-04-21 17:22:10 -07:00
Roy Sundahl d179627ef0 Fix sanitizer stack traces on aarch64.
Fixes llvm-project/compiler-rt/test/asan/TestCases/null_deref.cpp on
macOS/aarch64.

The bp (base pointer) variable was being loaded from register LR and
not FP on aarch64 (except for this narrow case):
defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0

Without a valid bp from the FP register, it is not possible to traverse
previous frames for a complete stack trace. The rationale for fetching
the LR as the bp for all cases except above is not clear but since the
FP register is the canonical register for use as the frame pointer, this
commit removes the restriction above for unconditional use all aarch64.

rdar://91587039

Differential Revision: https://reviews.llvm.org/D124140
2022-04-21 14:27:59 -07:00
Ulrich Weigand e4085a012c [sanitizer] Fix prctl unit test on non-SMT systems
On systems where the kernel supports the PR_SCHED_CORE
interface, but there is no SMT, the prctl call will set
errno to ENODEV, which currently causes the test to fail.

Fix by accepting ENODEV in addition to EINVAL.
2022-04-21 19:31:04 +02:00
Tyler Mandry d8c1d37ba3 [fuchsia] Don't include duplicate profiling symbols for Fuchsia
InstrProfilingPlatformLinux.c already provides these symbols. Linker order
saved us from noticing before.

Reviewed By: mcgrathr

Differential Revision: https://reviews.llvm.org/D124136
2022-04-21 15:44:37 +00:00
Byoungchan Lee 8a3afc6da5 [compiler-rt][Darwin] Add arm64 to simulator platforms
This patch is the reland of a8e5ce76b4,
which includes additional SDK version checks to ensure that
XCode's headers support arm64 builds.

Differential Revision: https://reviews.llvm.org/D119174
2022-04-21 17:42:31 +02:00
Aaron Ballman e5f025dad9 Speculatively fix build bot
This should fix the issue found by:
https://lab.llvm.org/buildbot/#/builders/37/builds/12606
2022-04-20 13:39:53 -04:00
Aaron Ballman 37a47aacba Speculatively fix build bot
This should address the issue in:
https://lab.llvm.org/buildbot/#/builders/77/builds/16683
2022-04-20 12:32:57 -04:00