Skip to content

Commit

Permalink
Ruby: only link against specific version of memcpy if we're using glibc
Browse files Browse the repository at this point in the history
We have some special code in wrap_memcpy.c to ensure that we use the
2.2.5 version of memcpy, for compatibility with older versions of glibc.
However, we need to make sure we only attempt to do this when we are
actually building with glibc, so that the code can also build
successfully against other libc implementations such as musl.
  • Loading branch information
acozzette committed Mar 17, 2017
1 parent 44dc555 commit ea5ef14
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions ruby/ext/google/protobuf_c/wrap_memcpy.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@

#include <string.h>

// On x86-64 Linux, we link against the 2.2.5 version of memcpy so that we
// avoid depending on the 2.14 version of the symbol. This way, distributions
// that are using pre-2.14 versions of glibc can successfully use the gem we
// distribute (https://github.com/google/protobuf/issues/2783).
// On x86-64 Linux with glibc, we link against the 2.2.5 version of memcpy so
// that we avoid depending on the 2.14 version of the symbol. This way,
// distributions that are using pre-2.14 versions of glibc can successfully use
// the gem we distribute (https://github.com/google/protobuf/issues/2783).
//
// This wrapper is enabled by passing the linker flags -Wl,-wrap,memcpy in
// extconf.rb.
#ifdef __linux__
#ifdef __x86_64__
#if defined(__x86_64__) && defined(__GNU_LIBRARY__)
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
void *__wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
Expand Down

0 comments on commit ea5ef14

Please sign in to comment.