diff options
author | Adam Cozzette <acozzette@google.com> | 2017-03-17 11:23:01 -0700 |
---|---|---|
committer | Adam Cozzette <acozzette@google.com> | 2017-03-17 11:23:01 -0700 |
commit | ea5ef14aa01701f686c52de4e724f66101c8e163 (patch) | |
tree | 46d633de91fce6fb78d8690a924f49b4389430a3 /ruby/ext/google/protobuf_c/wrap_memcpy.c | |
parent | 44dc55587ebbf79912615c8bbcd0947e7ebaa33a (diff) | |
download | protobuf-ea5ef14aa01701f686c52de4e724f66101c8e163.tar.gz protobuf-ea5ef14aa01701f686c52de4e724f66101c8e163.tar.bz2 protobuf-ea5ef14aa01701f686c52de4e724f66101c8e163.zip |
Ruby: only link against specific version of memcpy if we're using glibc
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.
Diffstat (limited to 'ruby/ext/google/protobuf_c/wrap_memcpy.c')
-rw-r--r-- | ruby/ext/google/protobuf_c/wrap_memcpy.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ruby/ext/google/protobuf_c/wrap_memcpy.c b/ruby/ext/google/protobuf_c/wrap_memcpy.c index 158952a8..394a52f9 100644 --- a/ruby/ext/google/protobuf_c/wrap_memcpy.c +++ b/ruby/ext/google/protobuf_c/wrap_memcpy.c @@ -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); |