added the dlfcn functions support
This commit is contained in:
@ -24,6 +24,8 @@ LIBADD_LIB_COMMON = $(LIBM)
|
||||
if ENABLE_LIBLTDL
|
||||
CPPFLAGS_LIB_COMMON += $(LTDLINCL)
|
||||
LIBADD_LIB_COMMON += $(LIBLTDL)
|
||||
else
|
||||
LIBADD_LIB_COMMON += $(DL_LIBS)
|
||||
endif
|
||||
|
||||
if WIN32
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -17,17 +17,7 @@
|
||||
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
@ -90,43 +80,46 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@ENABLE_LIBLTDL_TRUE@am__append_1 = $(LTDLINCL)
|
||||
@ENABLE_LIBLTDL_TRUE@am__append_2 = $(LIBLTDL)
|
||||
@ENABLE_LIBLTDL_FALSE@am__append_3 = $(DL_LIBS)
|
||||
|
||||
# you must adjust the value of DEFAULT_MODPOSTFIX according
|
||||
# to the first number in -version-info above
|
||||
@WIN32_TRUE@am__append_3 = -DMOO_DEFAULT_MODPREFIX=\"libmoo-\" -DMOO_DEFAULT_MODPOSTFIX=\"-1\"
|
||||
@WIN32_FALSE@am__append_4 = -DMOO_DEFAULT_MODPREFIX=\"$(libdir)/libmoo-\" -DMOO_DEFAULT_MODPOSTFIX=\"\"
|
||||
@ENABLE_STATIC_MODULE_TRUE@am__append_5 = -lmoo-stdio
|
||||
@WIN32_TRUE@am__append_4 = -DMOO_DEFAULT_MODPREFIX=\"libmoo-\" -DMOO_DEFAULT_MODPOSTFIX=\"-1\"
|
||||
@WIN32_FALSE@am__append_5 = -DMOO_DEFAULT_MODPREFIX=\"$(libdir)/libmoo-\" -DMOO_DEFAULT_MODPOSTFIX=\"\"
|
||||
@ENABLE_STATIC_MODULE_TRUE@am__append_6 = -lmoo-stdio
|
||||
@ENABLE_STATIC_MODULE_FALSE@libmoo_la_DEPENDENCIES = \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_3) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_4) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1)
|
||||
@ENABLE_MOD_CON_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_6 = -lmoo-con
|
||||
@ENABLE_MOD_CON_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_7 = $(abs_builddir)/../mod/libmoo-con.la
|
||||
@ENABLE_MOD_FFI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_8 = -lmoo-ffi
|
||||
@ENABLE_MOD_FFI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_9 = $(abs_builddir)/../mod/libmoo-ffi.la
|
||||
@ENABLE_MOD_SCK_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_10 = -lmoo-sck
|
||||
@ENABLE_MOD_SCK_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_11 = $(abs_builddir)/../mod/libmoo-sck.la
|
||||
@ENABLE_MOD_X11_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_12 = -lmoo-x11
|
||||
@ENABLE_MOD_X11_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_13 = $(abs_builddir)/../mod/libmoo-x11.la
|
||||
@ENABLE_MOD_CON_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_7 = -lmoo-con
|
||||
@ENABLE_MOD_CON_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_8 = $(abs_builddir)/../mod/libmoo-con.la
|
||||
@ENABLE_MOD_FFI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_9 = -lmoo-ffi
|
||||
@ENABLE_MOD_FFI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_10 = $(abs_builddir)/../mod/libmoo-ffi.la
|
||||
@ENABLE_MOD_SCK_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_11 = -lmoo-sck
|
||||
@ENABLE_MOD_SCK_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_12 = $(abs_builddir)/../mod/libmoo-sck.la
|
||||
@ENABLE_MOD_X11_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_13 = -lmoo-x11
|
||||
@ENABLE_MOD_X11_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_14 = $(abs_builddir)/../mod/libmoo-x11.la
|
||||
bin_PROGRAMS = moo$(EXEEXT)
|
||||
@ENABLE_STATIC_MODULE_FALSE@moo_DEPENDENCIES = $(am__DEPENDENCIES_3) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@moo_DEPENDENCIES = $(am__DEPENDENCIES_4) \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1)
|
||||
subdir = lib
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(srcdir)/moo-cfg.h.in $(top_srcdir)/ac/depcomp \
|
||||
$(noinst_HEADERS) $(pkginclude_HEADERS)
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/argz.m4 \
|
||||
$(top_srcdir)/m4/ax_check_sign.m4 \
|
||||
$(top_srcdir)/m4/ax_cxx_namespace.m4 \
|
||||
$(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltargz.m4 \
|
||||
$(top_srcdir)/m4/ltdl.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
|
||||
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
|
||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltdl.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
||||
$(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
|
||||
$(pkginclude_HEADERS) $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = moo-cfg.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -163,7 +156,9 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(bindir)" \
|
||||
LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
||||
am__DEPENDENCIES_1 =
|
||||
@ENABLE_LIBLTDL_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
|
||||
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
@ENABLE_LIBLTDL_FALSE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
|
||||
am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_3)
|
||||
am_libmoo_la_OBJECTS = libmoo_la-bigint.lo libmoo_la-comp.lo \
|
||||
libmoo_la-debug.lo libmoo_la-decode.lo libmoo_la-dic.lo \
|
||||
libmoo_la-err.lo libmoo_la-exec.lo libmoo_la-logfmt.lo \
|
||||
@ -247,8 +242,6 @@ am__define_uniq_tagged_files = \
|
||||
done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/moo-cfg.h.in \
|
||||
$(top_srcdir)/ac/depcomp
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgincludedir = $(includedir)
|
||||
pkglibdir = $(libdir)
|
||||
@ -256,6 +249,7 @@ ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
ARGZ_H = @ARGZ_H@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
@ -310,11 +304,9 @@ LTDLDEPS = @LTDLDEPS@
|
||||
LTDLINCL = @LTDLINCL@
|
||||
LTDLOPEN = @LTDLOPEN@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
LT_ARGZ_H = @LT_ARGZ_H@
|
||||
LT_CONFIG_H = @LT_CONFIG_H@
|
||||
LT_DLLOADERS = @LT_DLLOADERS@
|
||||
LT_DLPREOPEN = @LT_DLPREOPEN@
|
||||
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
@ -410,7 +402,6 @@ pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
runstatedir = @runstatedir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
@ -435,9 +426,9 @@ CPPFLAGS_ALL_COMMON = \
|
||||
# MAIN LIBRARY
|
||||
##################################################
|
||||
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(am__append_1) \
|
||||
$(am__append_3) $(am__append_4)
|
||||
$(am__append_4) $(am__append_5)
|
||||
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
|
||||
LIBADD_LIB_COMMON = $(LIBM) $(am__append_2)
|
||||
LIBADD_LIB_COMMON = $(LIBM) $(am__append_2) $(am__append_3)
|
||||
pkginclude_HEADERS = \
|
||||
moo-cmn.h \
|
||||
moo-opt.h \
|
||||
@ -472,12 +463,12 @@ libmoo_la_SOURCES = \
|
||||
|
||||
libmoo_la_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
|
||||
libmoo_la_LDFLAGS = $(LDFLAGS_LIB_COMMON)
|
||||
libmoo_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_5) \
|
||||
$(am__append_6) $(am__append_8) $(am__append_10) \
|
||||
$(am__append_12)
|
||||
libmoo_la_LIBADD = $(LIBADD_LIB_COMMON) $(am__append_6) \
|
||||
$(am__append_7) $(am__append_9) $(am__append_11) \
|
||||
$(am__append_13)
|
||||
@ENABLE_STATIC_MODULE_TRUE@libmoo_la_DEPENDENCIES = $(abs_builddir)/../mod/libmoo-stdio.la \
|
||||
@ENABLE_STATIC_MODULE_TRUE@ $(am__append_7) $(am__append_9) \
|
||||
@ENABLE_STATIC_MODULE_TRUE@ $(am__append_11) $(am__append_13)
|
||||
@ENABLE_STATIC_MODULE_TRUE@ $(am__append_8) $(am__append_10) \
|
||||
@ENABLE_STATIC_MODULE_TRUE@ $(am__append_12) $(am__append_14)
|
||||
moo_SOURCES = main.c
|
||||
moo_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
|
||||
moo_LDFLAGS = $(LDFLAGS_LIB_COMMON)
|
||||
@ -500,6 +491,7 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign lib/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -1062,8 +1054,6 @@ uninstall-am: uninstall-binPROGRAMS uninstall-pkgincludeHEADERS \
|
||||
uninstall-binPROGRAMS uninstall-hook \
|
||||
uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
install-data-hook:
|
||||
@echo "#ifndef _MOO_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/moo-cfg.h"
|
||||
|
@ -75,9 +75,19 @@
|
||||
# if defined(MOO_ENABLE_LIBLTDL)
|
||||
# include <ltdl.h>
|
||||
# define USE_LTDL
|
||||
# define sys_dl_error() lt_dlerror()
|
||||
# define sys_dl_open(x) lt_dlopen(x)
|
||||
# define sys_dl_openext(x) lt_dlopenext(x)
|
||||
# define sys_dl_close(x) lt_dlclose(x)
|
||||
# define sys_dl_sym(x,n) lt_dlsym(x,n)
|
||||
# elif defined(HAVE_DLFCN_H)
|
||||
# include <dlfcn.h>
|
||||
# error NOT IMPLEMENTED
|
||||
# define USE_DLFCN
|
||||
# define sys_dl_error() dlerror()
|
||||
# define sys_dl_open(x) dlopen(x,RTLD_NOW)
|
||||
# define sys_dl_openext(x) dlopen(x,RTLD_NOW)
|
||||
# define sys_dl_close(x) dlclose(x)
|
||||
# define sys_dl_sym(x,n) dlsym(x,n)
|
||||
# else
|
||||
# error UNSUPPORTED DYNAMIC LINKER
|
||||
# endif
|
||||
@ -154,7 +164,11 @@
|
||||
# elif defined(__DOS__)
|
||||
# define MOO_DEFAULT_PFMODPOSTFIX ""
|
||||
# else
|
||||
# define MOO_DEFAULT_PFMODPOSTFIX ""
|
||||
# if defined(USE_DLFCN)
|
||||
# define MOO_DEFAULT_PFMODPOSTFIX ".so"
|
||||
# else
|
||||
# define MOO_DEFAULT_PFMODPOSTFIX ""
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@ -467,7 +481,7 @@ static moo_ooi_t input_handler (moo_t* moo, moo_iocmd_t cmd, moo_ioarg_t* arg)
|
||||
|
||||
static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
{
|
||||
#if defined(USE_LTDL)
|
||||
#if defined(USE_LTDL) || defined(USE_DLFCN)
|
||||
moo_bch_t stabuf[128], * bufptr;
|
||||
moo_oow_t ucslen, bcslen, bufcapa;
|
||||
void* handle;
|
||||
@ -478,14 +492,14 @@ static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
* and MOO_COUNTOF(MOO_DEFAULT_PFMODPOSTIFX) include the terminating nulls. Never mind about
|
||||
* the extra 2 characters. */
|
||||
#else
|
||||
bufcapa = moo_countbcstr (name);
|
||||
bufcapa = moo_countbcstr(name);
|
||||
#endif
|
||||
bufcapa += MOO_COUNTOF(MOO_DEFAULT_PFMODPREFIX) + MOO_COUNTOF(MOO_DEFAULT_PFMODPOSTFIX) + 1;
|
||||
|
||||
if (bufcapa <= MOO_COUNTOF(stabuf)) bufptr = stabuf;
|
||||
else
|
||||
{
|
||||
bufptr = moo_allocmem (moo, bufcapa * MOO_SIZEOF(*bufptr));
|
||||
bufptr = moo_allocmem(moo, bufcapa * MOO_SIZEOF(*bufptr));
|
||||
if (!bufptr) return MOO_NULL;
|
||||
}
|
||||
|
||||
@ -494,13 +508,13 @@ static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
moo_oow_t len, i, xlen;
|
||||
|
||||
/* opening a primitive function module - mostly libmoo-xxxx */
|
||||
len = moo_copybcstr (bufptr, bufcapa, MOO_DEFAULT_PFMODPREFIX);
|
||||
len = moo_copybcstr(bufptr, bufcapa, MOO_DEFAULT_PFMODPREFIX);
|
||||
|
||||
bcslen = bufcapa - len;
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
moo_convootobcstr (moo, name, &ucslen, &bufptr[len], &bcslen);
|
||||
moo_convootobcstr(moo, name, &ucslen, &bufptr[len], &bcslen);
|
||||
#else
|
||||
bcslen = moo_copybcstr (&bufptr[len], bcslen, name);
|
||||
bcslen = moo_copybcstr(&bufptr[len], bcslen, name);
|
||||
#endif
|
||||
|
||||
/* length including the prefix and the name. but excluding the postfix */
|
||||
@ -516,19 +530,19 @@ static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
moo_copybcstr (&bufptr[xlen], bufcapa - xlen, MOO_DEFAULT_PFMODPOSTFIX);
|
||||
|
||||
/* both prefix and postfix attached. for instance, libmoo-xxx */
|
||||
handle = lt_dlopenext (bufptr);
|
||||
handle = sys_dl_openext(bufptr);
|
||||
if (!handle)
|
||||
{
|
||||
MOO_DEBUG3 (moo, "Failed to open(ext) DL %hs[%js] - %hs\n", bufptr, name, lt_dlerror());
|
||||
MOO_DEBUG3 (moo, "Failed to open(ext) DL %hs[%js] - %hs\n", bufptr, name, dlerror());
|
||||
|
||||
/* try without prefix and postfix */
|
||||
bufptr[xlen] = '\0';
|
||||
handle = lt_dlopenext (&bufptr[len]);
|
||||
handle = sys_dl_openext(&bufptr[len]);
|
||||
if (!handle)
|
||||
{
|
||||
moo_bch_t* dash;
|
||||
MOO_DEBUG3 (moo, "Failed to open(ext) DL %hs[%js] - %s\n", &bufptr[len], name, lt_dlerror());
|
||||
dash = moo_rfindbchar (bufptr, moo_countbcstr(bufptr), '-');
|
||||
MOO_DEBUG3 (moo, "Failed to open(ext) DL %hs[%js] - %s\n", &bufptr[len], name, dlerror());
|
||||
dash = moo_rfindbchar(bufptr, moo_countbcstr(bufptr), '-');
|
||||
if (dash)
|
||||
{
|
||||
/* remove a segment at the back.
|
||||
@ -551,21 +565,21 @@ static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
/* opening a raw shared object without a prefix and/or a postfix */
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
bcslen = bufcapa;
|
||||
moo_convootobcstr (moo, name, &ucslen, bufptr, &bcslen);
|
||||
moo_convootobcstr(moo, name, &ucslen, bufptr, &bcslen);
|
||||
#else
|
||||
bcslen = moo_copybcstr (bufptr, bufcapa, name);
|
||||
bcslen = moo_copybcstr(bufptr, bufcapa, name);
|
||||
#endif
|
||||
|
||||
if (moo_findbchar (bufptr, bcslen, '.'))
|
||||
{
|
||||
handle = lt_dlopen (bufptr);
|
||||
if (!handle) MOO_DEBUG2 (moo, "Failed to open DL %hs - %s\n", bufptr, lt_dlerror());
|
||||
handle = sys_dl_open(bufptr);
|
||||
if (!handle) MOO_DEBUG2 (moo, "Failed to open DL %hs - %s\n", bufptr, dlerror());
|
||||
else MOO_DEBUG2 (moo, "Opened DL %hs handle %p\n", bufptr, handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
handle = lt_dlopenext (bufptr);
|
||||
if (!handle) MOO_DEBUG2 (moo, "Failed to open(ext) DL %hs - %s\n", bufptr, lt_dlerror());
|
||||
handle = sys_dl_openext(bufptr);
|
||||
if (!handle) MOO_DEBUG2 (moo, "Failed to open(ext) DL %hs - %s\n", bufptr, dlerror());
|
||||
else MOO_DEBUG2 (moo, "Opened(ext) DL %hs handle %p\n", bufptr, handle);
|
||||
}
|
||||
}
|
||||
@ -585,9 +599,9 @@ static void* dl_open (moo_t* moo, const moo_ooch_t* name, int flags)
|
||||
|
||||
static void dl_close (moo_t* moo, void* handle)
|
||||
{
|
||||
#if defined(USE_LTDL)
|
||||
#if defined(USE_LTDL) | defined(USE_DLFCN)
|
||||
MOO_DEBUG1 (moo, "Closed DL handle %p\n", handle);
|
||||
lt_dlclose (handle);
|
||||
sys_dl_close (handle);
|
||||
|
||||
#else
|
||||
/* TODO: implemenent this */
|
||||
@ -597,14 +611,14 @@ static void dl_close (moo_t* moo, void* handle)
|
||||
|
||||
static void* dl_getsym (moo_t* moo, void* handle, const moo_ooch_t* name)
|
||||
{
|
||||
#if defined(USE_LTDL)
|
||||
#if defined(USE_LTDL) || defined(USE_DLFCN)
|
||||
moo_bch_t stabuf[64], * bufptr;
|
||||
moo_oow_t bufcapa, ucslen, bcslen, i;
|
||||
const moo_bch_t* symname;
|
||||
void* sym;
|
||||
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
if (moo_convootobcstr (moo, name, &ucslen, MOO_NULL, &bcslen) <= -1) return MOO_NULL;
|
||||
if (moo_convootobcstr(moo, name, &ucslen, MOO_NULL, &bcslen) <= -1) return MOO_NULL;
|
||||
#else
|
||||
bcslen = moo_countbcstr (name);
|
||||
#endif
|
||||
@ -612,7 +626,7 @@ static void* dl_getsym (moo_t* moo, void* handle, const moo_ooch_t* name)
|
||||
if (bcslen >= MOO_COUNTOF(stabuf) - 2)
|
||||
{
|
||||
bufcapa = bcslen + 3;
|
||||
bufptr = moo_allocmem (moo, bufcapa * MOO_SIZEOF(*bufptr));
|
||||
bufptr = moo_allocmem(moo, bufcapa * MOO_SIZEOF(*bufptr));
|
||||
if (!bufptr) return MOO_NULL;
|
||||
}
|
||||
else
|
||||
@ -625,30 +639,31 @@ static void* dl_getsym (moo_t* moo, void* handle, const moo_ooch_t* name)
|
||||
#if defined(MOO_OOCH_IS_UCH)
|
||||
moo_convootobcstr (moo, name, &ucslen, &bufptr[1], &bcslen);
|
||||
#else
|
||||
bcslen = moo_copybcstr (&bufptr[1], bcslen, name);
|
||||
bcslen = moo_copybcstr(&bufptr[1], bcslen, name);
|
||||
#endif
|
||||
|
||||
/* convert a period(.) to an underscore(_) */
|
||||
for (i = 1; i <= bcslen; i++) if (bufptr[i] == '.') bufptr[i] = '_';
|
||||
|
||||
symname = &bufptr[1]; /* try the name as it is */
|
||||
sym = lt_dlsym (handle, symname);
|
||||
sym = sys_dl_sym(handle, symname);
|
||||
if (!sym)
|
||||
{
|
||||
bufptr[0] = '_';
|
||||
symname = &bufptr[0]; /* try _name */
|
||||
sym = lt_dlsym (handle, symname);
|
||||
sym = sys_dl_sym(handle, symname);
|
||||
if (!sym)
|
||||
{
|
||||
bufptr[bcslen + 1] = '_';
|
||||
bufptr[bcslen + 2] = '\0';
|
||||
|
||||
symname = &bufptr[1]; /* try name_ */
|
||||
sym = lt_dlsym (handle, symname);
|
||||
sym = sys_dl_sym(handle, symname);
|
||||
|
||||
if (!sym)
|
||||
{
|
||||
symname = &bufptr[0]; /* try _name_ */
|
||||
sym = lt_dlsym (handle, symname);
|
||||
sym = sys_dl_sym(handle, symname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -656,6 +671,7 @@ static void* dl_getsym (moo_t* moo, void* handle, const moo_ooch_t* name)
|
||||
if (sym) MOO_DEBUG3 (moo, "Loaded module symbol %js from handle %p - %hs\n", name, handle, symname);
|
||||
if (bufptr != stabuf) moo_freemem (moo, bufptr);
|
||||
return sym;
|
||||
|
||||
#else
|
||||
/* TODO: IMPLEMENT THIS */
|
||||
MOO_DEBUG2 (moo, "Dynamic loading not implemented - Cannot load module symbol %js from handle %p\n", name, handle);
|
||||
|
@ -377,15 +377,13 @@
|
||||
module search path. */
|
||||
#undef LT_MODULE_PATH_VAR
|
||||
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to the shared library suffix, say, ".dylib". */
|
||||
#undef LT_SHARED_EXT
|
||||
|
||||
/* Define to the shared archive member specification, say "(shr.o)". */
|
||||
#undef LT_SHARED_LIB_MEMBER
|
||||
|
||||
/* enable dynamic module capability */
|
||||
#undef MOO_ENABLE_DYNAMIC_MODULE
|
||||
|
||||
@ -687,5 +685,5 @@
|
||||
/* Define so that glibc/gnulib argp.h does not typedef error_t. */
|
||||
#undef __error_t_defined
|
||||
|
||||
/* Define to a type to use for 'error_t' if it is not otherwise available. */
|
||||
/* Define to a type to use for `error_t' if it is not otherwise available. */
|
||||
#undef error_t
|
||||
|
Reference in New Issue
Block a user