Skip to content

Commit 26bda9e

Browse files
committed
Revert "[compiler-rt] Avoid memintrinsic calls inserted by the compiler"
This reverts commit e614d56. Build bot failures: | FAILED: lib/clang/17/lib/linux/libclang_rt.ubsan_minimal-i386.so | : && /usr/bin/clang++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -Wno-unused-parameter -O3 -DNDEBUG -Wl,-z,defs -Wl,-z,nodelete -m32 -nodefaultlibs -Wl,-z,text -nostdlib++ -shared -Wl,-soname,libclang_rt.ubsan_minimal-i386.so -o lib/clang/17/lib/linux/libclang_rt.ubsan_minimal-i386.so projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o -lgcc_s -lc && : | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o: in function `__ubsan_handle_type_mismatch_minimal': | /b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:120: undefined reference to `__sanitizer_internal_memcpy' | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o: in function `__ubsan_handle_type_mismatch_minimal_abort': | /b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:120: undefined reference to `__sanitizer_internal_memcpy' | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o: in function `__ubsan_handle_alignment_assumption_minimal': | /b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:121: undefined reference to `__sanitizer_internal_memcpy' | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o: in function `__ubsan_handle_alignment_assumption_minimal_abort': | /b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:121: undefined reference to `__sanitizer_internal_memcpy' | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o: in function `__ubsan_handle_add_overflow_minimal': | /b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:122: undefined reference to `__sanitizer_internal_memcpy' | /usr/bin/ld: projects/compiler-rt/lib/ubsan_minimal/CMakeFiles/RTUbsan_minimal.i386.dir/ubsan_minimal_handlers.cpp.o:/b/sanitizer-x86_64-linux-bootstrap-msan/build/llvm-project/compiler-rt/lib/ubsan_minimal/ubsan_minimal_handlers.cpp:122: more undefined references to `__sanitizer_internal_memcpy' follow Link: https://lab.llvm.org/buildbot#builders/74/builds/19569
1 parent f40e8f1 commit 26bda9e

15 files changed

+13
-88
lines changed

compiler-rt/lib/asan/asan_interceptors_memintrinsics.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
// ASan versions of memcpy, memmove, and memset.
1212
//===---------------------------------------------------------------------===//
1313

14-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
15-
1614
#include "asan_interceptors_memintrinsics.h"
1715

1816
#include "asan_interceptors.h"

compiler-rt/lib/hwasan/hwasan_interceptors.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
// sanitizer_common/sanitizer_common_interceptors.h
1515
//===----------------------------------------------------------------------===//
1616

17-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
18-
1917
#include "hwasan.h"
2018
#include "hwasan_allocator.h"
2119
#include "hwasan_checks.h"

compiler-rt/lib/interception/tests/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ set(INTERCEPTION_TEST_CFLAGS_COMMON
1717
-I${COMPILER_RT_SOURCE_DIR}/include
1818
-I${COMPILER_RT_SOURCE_DIR}/lib
1919
-I${COMPILER_RT_SOURCE_DIR}/lib/interception
20-
-DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
2120
-fno-rtti
2221
-O2
2322
-Werror=sign-compare)

compiler-rt/lib/memprof/memprof_interceptors_memintrinsics.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
// MemProf versions of memcpy, memmove, and memset.
1212
//===---------------------------------------------------------------------===//
1313

14-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
15-
1614
#include "memprof_interceptors_memintrinsics.h"
1715

1816
#include "memprof_interceptors.h"

compiler-rt/lib/msan/msan_interceptors.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
// sanitizer_common/sanitizer_common_interceptors.h
1515
//===----------------------------------------------------------------------===//
1616

17-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
18-
1917
#include "interception/interception.h"
2018
#include "msan.h"
2119
#include "msan_chained_origin_depot.h"

compiler-rt/lib/sanitizer_common/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ set(SANITIZER_IMPL_HEADERS
172172
sanitizer_procmaps.h
173173
sanitizer_ptrauth.h
174174
sanitizer_quarantine.h
175-
sanitizer_redefine_builtins.h
176175
sanitizer_report_decorator.h
177176
sanitizer_ring_buffer.h
178177
sanitizer_signal_interceptors.inc

compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors_memintrinsics.inc

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
// Memintrinsic function interceptors for tools like AddressSanitizer,
1010
// ThreadSanitizer, MemorySanitizer, etc.
1111
//
12-
// These interceptors are part of the common interceptors, but separated out so
13-
// that implementations may add them, if necessary, to a separate source file
14-
// that should define SANITIZER_COMMON_NO_REDEFINE_BUILTINS at the top.
15-
//
1612
// This file should be included into the tool's memintrinsic interceptor file,
1713
// which has to define its own macros:
1814
// COMMON_INTERCEPTOR_ENTER
@@ -24,10 +20,6 @@
2420
// COMMON_INTERCEPTOR_NOTHING_IS_INITIALIZED
2521
//===----------------------------------------------------------------------===//
2622

27-
#ifdef SANITIZER_REDEFINE_BUILTINS_H
28-
#error "Define SANITIZER_COMMON_NO_REDEFINE_BUILTINS in .cpp file"
29-
#endif
30-
3123
#include "interception/interception.h"
3224
#include "sanitizer_platform_interceptors.h"
3325

compiler-rt/lib/sanitizer_common/sanitizer_common_interface.inc

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,3 @@ INTERFACE_FUNCTION(__sanitizer_purge_allocator)
4646
INTERFACE_FUNCTION(__sanitizer_print_memory_profile)
4747
INTERFACE_WEAK_FUNCTION(__sanitizer_free_hook)
4848
INTERFACE_WEAK_FUNCTION(__sanitizer_malloc_hook)
49-
// Memintrinsic functions.
50-
INTERFACE_FUNCTION(__sanitizer_internal_memcpy)
51-
INTERFACE_FUNCTION(__sanitizer_internal_memmove)
52-
INTERFACE_FUNCTION(__sanitizer_internal_memset)

compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#define SANITIZER_DEFS_H
1414

1515
#include "sanitizer_platform.h"
16-
#include "sanitizer_redefine_builtins.h"
1716

1817
#ifndef SANITIZER_DEBUG
1918
# define SANITIZER_DEBUG 0

compiler-rt/lib/sanitizer_common/sanitizer_libc.cpp

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
// run-time libraries. See sanitizer_libc.h for details.
1111
//===----------------------------------------------------------------------===//
1212

13-
// Do not redefine builtins; this file is defining the builtin replacements.
14-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
15-
1613
#include "sanitizer_allocator_internal.h"
1714
#include "sanitizer_common.h"
1815
#include "sanitizer_libc.h"
@@ -49,23 +46,15 @@ int internal_memcmp(const void* s1, const void* s2, uptr n) {
4946
return 0;
5047
}
5148

52-
void *internal_memcpy(void *dest, const void *src, uptr n)
53-
ALIAS(__sanitizer_internal_memcpy);
54-
SANITIZER_INTERFACE_ATTRIBUTE
55-
extern "C" void *__sanitizer_internal_memcpy(void *dest, const void *src,
56-
uptr n) {
49+
void *internal_memcpy(void *dest, const void *src, uptr n) {
5750
char *d = (char*)dest;
5851
const char *s = (const char *)src;
5952
for (uptr i = 0; i < n; ++i)
6053
d[i] = s[i];
6154
return dest;
6255
}
6356

64-
void *internal_memmove(void *dest, const void *src, uptr n)
65-
ALIAS(__sanitizer_internal_memmove);
66-
SANITIZER_INTERFACE_ATTRIBUTE
67-
extern "C" void *__sanitizer_internal_memmove(void *dest, const void *src,
68-
uptr n) {
57+
void *internal_memmove(void *dest, const void *src, uptr n) {
6958
char *d = (char*)dest;
7059
const char *s = (const char *)src;
7160
sptr i, signed_n = (sptr)n;
@@ -83,10 +72,7 @@ extern "C" void *__sanitizer_internal_memmove(void *dest, const void *src,
8372
return dest;
8473
}
8574

86-
void *internal_memset(void *s, int c, uptr n)
87-
ALIAS(__sanitizer_internal_memset);
88-
SANITIZER_INTERFACE_ATTRIBUTE
89-
extern "C" void *__sanitizer_internal_memset(void *s, int c, uptr n) {
75+
void *internal_memset(void* s, int c, uptr n) {
9076
// Optimize for the most performance-critical case:
9177
if ((reinterpret_cast<uptr>(s) % 16) == 0 && (n % 16) == 0) {
9278
u64 *p = reinterpret_cast<u64*>(s);

compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h

Lines changed: 0 additions & 27 deletions
This file was deleted.

compiler-rt/lib/tsan/rtl/tsan_interceptors_memintrinsics.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#define SANITIZER_COMMON_NO_REDEFINE_BUILTINS
14-
1513
#include "tsan_interceptors.h"
1614
#include "tsan_interface.h"
1715

compiler-rt/test/asan/TestCases/Linux/check_memcpy.c

Lines changed: 0 additions & 8 deletions
This file was deleted.

compiler-rt/test/msan/Linux/check_memcpy.c

Lines changed: 0 additions & 8 deletions
This file was deleted.

compiler-rt/test/tsan/Linux/check_memcpy.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@
55
// This could fail if using a static libunwind because that static libunwind
66
// could be uninstrumented and contain memcpy/memmove calls not intercepted by
77
// tsan.
8-
// REQUIRES: shared_unwind, x86_64-target-arch
8+
// REQUIRES: shared_unwind
99

1010
// RUN: %clang_tsan -O1 %s -o %t
11-
// RUN: llvm-objdump -d -l %t | FileCheck --implicit-check-not="{{(callq|jmpq) .*<(__interceptor_.*)?mem(cpy|set|move)>}}" %s
11+
// RUN: llvm-objdump -d -l %t | FileCheck %s
12+
13+
int main() {
14+
return 0;
15+
}
16+
17+
// CHECK-NOT: callq {{.*<(__interceptor_)?mem(cpy|set)>}}
18+
// tail calls:
19+
// CHECK-NOT: jmpq {{.*<(__interceptor_)?mem(cpy|set)>}}
1220

13-
int main() { return 0; }

0 commit comments

Comments
 (0)