Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attempt plugin load from global symbol table #15

Merged
merged 11 commits into from
Apr 26, 2016
Merged

Conversation

JeroMiya
Copy link
Contributor

This change first exports the plugin's unique entry point so it can be loaded with dlsym, and also changes loadPluginByName to make an attempt to load a plugin's unique entry point symbol from the global symbol table before attempting to load the plugin file itself. This allows the function to work in places where the plugin is pre-loaded into the application (either statically linked or the .so is explicitly loaded beforehand, as on Android).

… with LIBFUNC_DETAIL_EP_DECORATION. Also updated LoadPluginLibdl.h to use dlsym(RTLD_DEFAULT, ...) in its attempt to check if the symbol is loaded into the global symbol table. This makes it now work on Android.
@rpavlik
Copy link
Member

rpavlik commented Apr 22, 2016

Looks reasonable to me. Grabbed it locally to my Linux VM, and I made a few changes (basically just factoring out common code) - if you could just test it again on your desired platform and Windows (just to be paranoid since we touched shared headers), to verify I didn't break what you wanted out of this patch, you're welcome to merge when you're ready.

rpavlik and others added 4 commits April 26, 2016 13:53
Needed so we get entry points that look like
libfunc_ep_com_sensics_libfunc_tests_dummyplugin (as before/expected)
and not like this (with an unexpanded macro in it)
LIBFUNC_DETAIL_EP_PREFIXcom_sensics_libfunc_tests_dummyplugin
…hat is only currently implemented in the libdl path.
@JeroMiya JeroMiya merged commit 3c8b1e4 into master Apr 26, 2016
@JeroMiya JeroMiya deleted the check-pre-loaded-lib branch April 26, 2016 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants