Skip to content

Commit

Permalink
[compiler-rt][darwin] check for strcmp to test interceptors instead o…
Browse files Browse the repository at this point in the history
…f pthread_create

If `pthread_create` is not available on a platform, we won't be able to check if interceptors work. Use `strcmp` instead.

Reviewed By: yln

Differential Revision: https://reviews.llvm.org/D116989
  • Loading branch information
aralisza committed Jan 13, 2022
1 parent 32d5634 commit 1e36bd8
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1050,13 +1050,13 @@ void MaybeReexec() {
RAW_CHECK("execv failed" && 0);
}

// Verify that interceptors really work. We'll use dlsym to locate
// "pthread_create", if interceptors are working, it should really point to
// "wrap_pthread_create" within our own dylib.
Dl_info info_pthread_create;
void *dlopen_addr = dlsym(RTLD_DEFAULT, "pthread_create");
RAW_CHECK(dladdr(dlopen_addr, &info_pthread_create));
if (internal_strcmp(info.dli_fname, info_pthread_create.dli_fname) != 0) {
// Verify that interceptors really work. We'll use dlsym to locate
// "strcmp", if interceptors are working, it should really point to
// "wrap_strcmp" within our own dylib.
Dl_info info_strcmp;
void *dlopen_addr = dlsym(RTLD_DEFAULT, "strcmp");
RAW_CHECK(dladdr(dlopen_addr, &info_strcmp));
if (internal_strcmp(info.dli_fname, info_strcmp.dli_fname) != 0) {
Report(
"ERROR: Interceptors are not working. This may be because %s is "
"loaded too late (e.g. via dlopen). Please launch the executable "
Expand Down

0 comments on commit 1e36bd8

Please sign in to comment.