diff options
author | KWSys Robot <kwrobot@kitware.com> | 2013-01-31 13:21:49 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-02-01 14:27:46 (GMT) |
commit | 23ae48412093e4acbd5270536aace226d5869679 (patch) | |
tree | 9824f19802c2b88a6b1124ac0c20ba0eb4516fa1 /DynamicLoader.cxx | |
parent | 4ba0ac7be4bbe38a7cb3334504e69db039288ad8 (diff) | |
download | CMake-23ae48412093e4acbd5270536aace226d5869679.zip CMake-23ae48412093e4acbd5270536aace226d5869679.tar.gz CMake-23ae48412093e4acbd5270536aace226d5869679.tar.bz2 |
KWSys 2013-01-31 (5b0d1bd9)
Extract upstream KWSys using the following shell commands.
$ git archive --prefix=upstream-kwsys/ 5b0d1bd9 | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' 6fa1c99f..5b0d1bd9
Alan Hourihane (2):
e81e2b72 DynamicLoader: Implement on Atari FreeMINT
5c4dcb2b ProcessUNIX: No select on Atari FreeMINT
Sean McBride (2):
bff2ea07 Glob: Fix clang -Wdocumentation warning
5b0d1bd9 Fix clang -Weverything warnings
Change-Id: I8b342bea8bc9c7b92a856ddc948e1b56f5e74b98
Diffstat (limited to 'DynamicLoader.cxx')
-rw-r--r-- | DynamicLoader.cxx | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/DynamicLoader.cxx b/DynamicLoader.cxx index c4ee095..fd83752 100644 --- a/DynamicLoader.cxx +++ b/DynamicLoader.cxx @@ -428,6 +428,58 @@ const char* DynamicLoader::LastError() } // namespace KWSYS_NAMESPACE #endif +#ifdef __MINT__ +#define DYNAMICLOADER_DEFINED 1 +#define _GNU_SOURCE /* for program_invocation_name */ +#include <string.h> +#include <malloc.h> +#include <errno.h> +#include <dld.h> + +namespace KWSYS_NAMESPACE +{ + +//---------------------------------------------------------------------------- +DynamicLoader::LibraryHandle DynamicLoader::OpenLibrary(const char* libname ) +{ + char *name = (char *)calloc(1, strlen(libname) + 1); + dld_init(program_invocation_name); + strncpy(name, libname, strlen(libname)); + dld_link(libname); + return (void *)name; +} + +//---------------------------------------------------------------------------- +int DynamicLoader::CloseLibrary(DynamicLoader::LibraryHandle lib) +{ + dld_unlink_by_file((char *)lib, 0); + free(lib); + return 0; +} + +//---------------------------------------------------------------------------- +DynamicLoader::SymbolPointer DynamicLoader::GetSymbolAddress( + DynamicLoader::LibraryHandle lib, const char* sym) +{ + // Hack to cast pointer-to-data to pointer-to-function. + union + { + void* pvoid; + DynamicLoader::SymbolPointer psym; + } result; + result.pvoid = dld_get_symbol(sym); + return result.psym; +} + +//---------------------------------------------------------------------------- +const char* DynamicLoader::LastError() +{ + return dld_strerror(dld_errno); +} + +} // namespace KWSYS_NAMESPACE +#endif + // --------------------------------------------------------------- // 6. Implementation for default UNIX machines. // if nothing has been defined then use this |