Skip to content

Conversation

@DanBlackwell
Copy link
Contributor

This currently generates many linker warnings of this form, due to defining mem(cpy|move|set) in every object file:

ld: warning: '.../build/projects/compiler-rt/lib/interception/CMakeFiles/RTInterception.ios.dir/interception_linux.cpp.o' has malformed LC_DYSYMTAB, expected 6 undefined symbols to start at index 1, found 3 undefined symbols starting at index 1

In order for this to actually replace these symbols on mach-o, they would need a leading underscore, e.g. .set _memcpy, ___sanitizer_internal_memcpy. However doing so does not fix the warnings, and furthermore it ends up replacing REAL(memcpy) calls with __sanitizer_internal_memcpy in places such as __asan::Allocator::Reallocate. There is no way on Apple platforms to recreate the intended behaviour, so let's just disable this on them to reduce warning noise.

rdar://123771479

…orms

This currently generates many linker warnings of this form, due to defining mem(cpy|move|set) in every object file:
```
ld: warning: '.../build/projects/compiler-rt/lib/interception/CMakeFiles/RTInterception.ios.dir/interception_linux.cpp.o' has malformed LC_DYSYMTAB, expected 6 undefined symbols to start at index 1, found 3 undefined symbols starting at index 1
```

In order for this to actually replace these symbols on mach-o, they would need a leading underscore, e.g. `.set _memcpy, ___sanitizer_internal_memcpy`. However doing so does not fix the warnings, and furthermore it ends up replacing `REAL(memcpy)` calls with `__sanitizer_internal_memcpy` in places such as `__asan::Allocator::Reallocate`. There is no way on Apple platforms to recreate the intended behaviour, so let's just disable this on them.
@llvmbot
Copy link
Member

llvmbot commented Aug 13, 2025

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Dan Blackwell (DanBlackwell)

Changes

This currently generates many linker warnings of this form, due to defining mem(cpy|move|set) in every object file:

ld: warning: '.../build/projects/compiler-rt/lib/interception/CMakeFiles/RTInterception.ios.dir/interception_linux.cpp.o' has malformed LC_DYSYMTAB, expected 6 undefined symbols to start at index 1, found 3 undefined symbols starting at index 1

In order for this to actually replace these symbols on mach-o, they would need a leading underscore, e.g. .set _memcpy, ___sanitizer_internal_memcpy. However doing so does not fix the warnings, and furthermore it ends up replacing REAL(memcpy) calls with __sanitizer_internal_memcpy in places such as __asan::Allocator::Reallocate. There is no way on Apple platforms to recreate the intended behaviour, so let's just disable this on them to reduce warning noise.

rdar://123771479


Full diff: https://github.com/llvm/llvm-project/pull/153381.diff

1 Files Affected:

  • (modified) compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h (+1-1)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h b/compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h
index bda0f04687693..7d88911176577 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_redefine_builtins.h
@@ -15,7 +15,7 @@
 #    define SANITIZER_REDEFINE_BUILTINS_H
 
 // The asm hack only works with GCC and Clang.
-#    if !defined(_WIN32) && !defined(_AIX)
+#    if !defined(_WIN32) && !defined(_AIX) && !defined(__APPLE__)
 
 asm(R"(
     .set memcpy, __sanitizer_internal_memcpy

@DanBlackwell
Copy link
Contributor Author

@thurstond If I make the sanitizer_redefine_builtins work as intended, it replaces REAL(memcpy) calls such as [this] with the internal implementation. Perhaps it's worth checking whether the same happens on Linux, and whether this is intended behaviour?

@DanBlackwell DanBlackwell merged commit cfdbbb8 into llvm:main Aug 15, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants