8031968: Mac OS X: VM starts the agent by calling both Agent_OnAttach and Agent_OnAttach_L functions if its agent library is dynamically linked

Make sure we only look for statically linked agents in the main process image

Reviewed-by: dsamersoff, bpittore, dcubed
This commit is contained in:
Staffan Larsen 2014-01-23 09:06:21 +01:00
parent 869722e816
commit 6f46c5c2f0
4 changed files with 18 additions and 4 deletions

View file

@ -1557,6 +1557,17 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen)
}
#endif /* !__APPLE__ */
void* os::get_default_process_handle() {
#ifdef __APPLE__
// MacOS X needs to use RTLD_FIRST instead of RTLD_LAZY
// to avoid finding unexpected symbols on second (or later)
// loads of a library.
return (void*)::dlopen(NULL, RTLD_FIRST);
#else
return (void*)::dlopen(NULL, RTLD_LAZY);
#endif
}
// XXX: Do we need a lock around this as per Linux?
void* os::dll_lookup(void* handle, const char* name) {
return dlsym(handle, name);