Skip to content

Instantly share code, notes, and snippets.

@wbreeze
Last active July 27, 2019 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wbreeze/51cfaae4f0356a0d5a4781238a4f09f0 to your computer and use it in GitHub Desktop.
Save wbreeze/51cfaae4f0356a0d5a4781238a4f09f0 to your computer and use it in GitHub Desktop.
Comparison of unique global symbols in libdavenport.so.0 and davenport_ruby.so; gem environment verification
Commands to generate the comparison:
~/dvt$ nm -f posix -u /home/deploy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/davenport-1.0.2.pre/lib/davenport_ruby/davenport_ruby.so | awk '{ print $0, "X" }' >contX
~/dvt$ nm -f posix -u /usr/local/lib/libdavenport.so.0 | awk '{ print $0, "L" }' >contL
~/dvt$ cat contX contL | sort > contCompare
From `man nm`:
"u" The symbol is a unique global symbol. This is a GNU extension to the standard set
of ELF symbol bindings. For such a symbol the dynamic linker will make sure that
in the entire process there is just one symbol with this name and type in use.
The symbols with X at the end are from the extension library. The symbols with L are from the library it binds to.
aggregate_solution_add_solution U X
aggregate_solution_create U X
aggregate_solution_destroy U X
aggregate_solution_ranking U X
__assert_fail@@GLIBC_2.2.5 U L
calloc@@GLIBC_2.2.5 U L
calloc@@GLIBC_2.2.5 U X
__cxa_finalize@@GLIBC_2.2.5 w L
__cxa_finalize@@GLIBC_2.2.5 w X
davenport_compute U X
davenport_create U X
davenport_destroy U X
davenport_set_solution_callback U X
free@@GLIBC_2.2.5 U L
free@@GLIBC_2.2.5 U X
__gmon_start__ w L
__gmon_start__ w X
_ITM_deregisterTMCloneTable w L
_ITM_deregisterTMCloneTable w X
_ITM_registerTMCloneTable w L
_ITM_registerTMCloneTable w X
_Jv_RegisterClasses w L
_Jv_RegisterClasses w X
malloc@@GLIBC_2.2.5 U L
malloc@@GLIBC_2.2.5 U X
memset@@GLIBC_2.2.5 U L
preference_graph_add_preference U X
preference_graph_to_majority_graph U X
printf@@GLIBC_2.2.5 U L
putchar@@GLIBC_2.2.5 U L
rb_ary_entry U X
rb_ary_new U X
rb_ary_push U X
rb_cData U X
rb_check_typeddata U X
rb_check_type U X
rb_data_typed_object_wrap U X
rb_define_alloc_func U X
rb_define_class_under U X
rb_define_method U X
rb_define_module U X
rb_eStandardError U X
rb_fix2int U X
rb_raise U X
~/dvt$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 3.0.3
- RUBY VERSION: 2.6.3 (2019-04-16 patchlevel 62) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/deploy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0
- USER INSTALLATION DIRECTORY: /home/deploy/.gem/ruby/2.6.0
- RUBY EXECUTABLE: /home/deploy/.rbenv/versions/2.6.3/bin/ruby
- GIT EXECUTABLE: /usr/bin/git
- EXECUTABLE DIRECTORY: /home/deploy/.rbenv/versions/2.6.3/bin
- SPEC CACHE DIRECTORY: /home/deploy/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/deploy/.rbenv/versions/2.6.3/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/deploy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0
- /home/deploy/.gem/ruby/2.6.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /home/deploy/.rbenv/versions/2.6.3/bin
- /home/deploy/.rbenv/libexec
- /home/deploy/.rbenv/plugins/ruby-build/bin
- /home/deploy/.rbenv/shims
- /home/deploy/.rbenv/bin
- /usr/local/bin
- /usr/bin
- /bin
- /usr/local/games
- /usr/games
~/dvt$ ruby -e 'puts $:.join("\n")'
/home/deploy/.rbenv/rbenv.d/exec/gem-rehash
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/did_you_mean-1.3.0/lib
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/site_ruby/2.6.0
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/site_ruby/2.6.0/x86_64-linux
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/site_ruby
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/vendor_ruby/2.6.0
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/vendor_ruby/2.6.0/x86_64-linux
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/vendor_ruby
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/2.6.0
/home/deploy/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-linux
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment