• Adam Cozzette's avatar
    Ruby: wrap calls to memcpy so that gem is compatible with pre-2.14 glibc · 9fa40314
    Adam Cozzette authored
    This commit adds a __wrap_memcpy function and a linker flag to use that
    in place of memcpy for our Ruby gem C extension. This allows us to
    always use the 2.2.5 version of memcpy, making it possible to use the
    gem on distributions with pre-2.14 versions of glibc.
    
    Before this change:
    $ objdump -T protobuf_c.so | grep memcpy
    0000000000000000      DF *UND*  0000000000000000  GLIBC_2.3.4 __memcpy_chk
    0000000000000000      DF *UND*  0000000000000000  GLIBC_2.14  memcpy
    
    After:
    $ objdump -T protobuf_c.so | grep memcpy
    0000000000000000      DF *UND*  0000000000000000  GLIBC_2.2.5 memcpy
    0000000000000000      DF *UND*  0000000000000000  GLIBC_2.3.4 __memcpy_chk
    0000000000042450 g    DF .text  0000000000000005  Base __wrap_memcpy
    
    This is based on gRPC's solution to a similar problem:
    https://github.com/grpc/grpc/blob/5098508d2d41a116113f7e333c516cd9ef34a943/src/core/lib/support/wrap_memcpy.c
    
    This fixes issue #2783.
    9fa40314
Name
Last commit
Last update
benchmarks Loading commit data...
cmake Loading commit data...
conformance Loading commit data...
csharp Loading commit data...
docs Loading commit data...
editors Loading commit data...
examples Loading commit data...
java Loading commit data...
javanano Loading commit data...
jenkins Loading commit data...
js Loading commit data...
m4 Loading commit data...
more_tests Loading commit data...
objectivec Loading commit data...
php Loading commit data...
protoc-artifacts Loading commit data...
python Loading commit data...
ruby Loading commit data...
src Loading commit data...
third_party Loading commit data...
util/python Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.travis.yml Loading commit data...
BUILD Loading commit data...
CHANGES.txt Loading commit data...
CONTRIBUTORS.txt Loading commit data...
LICENSE Loading commit data...
Makefile.am Loading commit data...
Protobuf.podspec Loading commit data...
README.md Loading commit data...
WORKSPACE Loading commit data...
appveyor.bat Loading commit data...
appveyor.yml Loading commit data...
autogen.sh Loading commit data...
composer.json Loading commit data...
configure.ac Loading commit data...
generate_changelog.py Loading commit data...
generate_descriptor_proto.sh Loading commit data...
gmock.BUILD Loading commit data...
post_process_dist.sh Loading commit data...
protobuf-lite.pc.in Loading commit data...
protobuf.bzl Loading commit data...
protobuf.pc.in Loading commit data...
six.BUILD Loading commit data...
tests.sh Loading commit data...
update_file_lists.sh Loading commit data...