they aren't used in libjit, and front ends will normally have
their own functions for this purpose.
+ * Makefile.am, configure.in, doc/Makefile.am, doc/libjit.texi,
+ include/jit/Makefile.am, include/jit/jit-dynamic.h,
+ include/jit/jit-util.h, jit/Makefile.am, jit/jit-dynlib.c,
+ jit/jit-mangle.c, jitdynamic/.cvsignore, jitdynamic/Makefile.am,
+ jitdynamic/jit-cpp-mangle.c, jitdynamic/jit-dynlib.c:
+ move the dynlib and C++ name mangling routines into a separate
+ "jitdynamic" library, which will handle all of the cross-language
+ naming and dynamic invocation logic.
+
2004-05-07 Rhys Weatherley <rweather@southern-storm.com.au>
* dpas/dpas-function.c, dpas/dpas-internal.h, dpas/dpas-main.c,
-SUBDIRS = include tools jit jitplus dpas tutorial doc
+SUBDIRS = include tools jit jitdynamic jitplus dpas tutorial doc
include/jit/jit-defs.h
tools/Makefile
jit/Makefile
+jitdynamic/Makefile
jitplus/Makefile
dpas/Makefile
tutorial/Makefile
$(srcdir)/libjitext-init.texi \
$(srcdir)/libjitext-insn.texi \
$(srcdir)/libjitext-intrinsic.texi \
- $(srcdir)/libjitext-mangle.texi \
+ $(srcdir)/libjitext-cpp-mangle.texi \
$(srcdir)/libjitext-memory.texi \
$(srcdir)/libjitext-meta.texi \
$(srcdir)/libjitext-reg-alloc.texi \
$(srcdir)/libjitext-context.texi: $(top_srcdir)/jit/jit-context.c
$(SHELL) $(srcdir)/extract-docs.sh $< >$@
-$(srcdir)/libjitext-dynlib.texi: $(top_srcdir)/jit/jit-dynlib.c
+$(srcdir)/libjitext-dynlib.texi: $(top_srcdir)/jitdynamic/jit-dynlib.c
$(SHELL) $(srcdir)/extract-docs.sh $< >$@
$(srcdir)/libjitext-elf-read.texi: $(top_srcdir)/jit/jit-elf-read.c
$(srcdir)/libjitext-intrinsic.texi: $(top_srcdir)/jit/jit-intrinsic.c
$(SHELL) $(srcdir)/extract-docs.sh $< >$@
-$(srcdir)/libjitext-mangle.texi: $(top_srcdir)/jit/jit-mangle.c
+$(srcdir)/libjitext-cpp-mangle.texi: $(top_srcdir)/jitdynamic/jit-cpp-mangle.c
$(SHELL) $(srcdir)/extract-docs.sh $< >$@
$(srcdir)/libjitext-memory.texi: $(top_srcdir)/jit/jit-memory.c
@include libjitext-apply.texi
@include libjitext-walk.texi
@include libjitext-dynlib.texi
-@include libjitext-mangle.texi
+@include libjitext-cpp-mangle.texi
@c -----------------------------------------------------------------------
jit-context.h \
jit-defs.h \
jit-dump.h \
+ jit-dynamic.h \
jit-elf.h \
jit-except.h \
jit-function.h \
--- /dev/null
+/*
+ * jit-dynamic.h - Managing dynamic libraries and cross-language invocation.
+ *
+ * Copyright (C) 2004 Southern Storm Software, Pty Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _JIT_DYNAMIC_H
+#define _JIT_DYNAMIC_H
+
+#include <jit/jit-common.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Dynamic library routines.
+ */
+typedef void *jit_dynlib_handle_t;
+jit_dynlib_handle_t jit_dynlib_open(const char *name) JIT_NOTHROW;
+void jit_dynlib_close(jit_dynlib_handle_t handle) JIT_NOTHROW;
+void *jit_dynlib_get_symbol
+ (jit_dynlib_handle_t handle, const char *symbol) JIT_NOTHROW;
+const char *jit_dynlib_get_suffix(void) JIT_NOTHROW;
+void jit_dynlib_set_debug(int flag) JIT_NOTHROW;
+
+/*
+ * C++ name mangling definitions.
+ */
+#define JIT_MANGLE_PUBLIC 0x0001
+#define JIT_MANGLE_PROTECTED 0x0002
+#define JIT_MANGLE_PRIVATE 0x0003
+#define JIT_MANGLE_STATIC 0x0008
+#define JIT_MANGLE_VIRTUAL 0x0010
+#define JIT_MANGLE_CONST 0x0020
+#define JIT_MANGLE_EXPLICIT_THIS 0x0040
+#define JIT_MANGLE_IS_CTOR 0x0080
+#define JIT_MANGLE_IS_DTOR 0x0100
+#define JIT_MANGLE_BASE 0x0200
+char *jit_mangle_global_function
+ (const char *name, jit_type_t signature, int form) JIT_NOTHROW;
+char *jit_mangle_member_function
+ (const char *class_name, const char *name,
+ jit_type_t signature, int form, int flags) JIT_NOTHROW;
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* _JIT_DYNAMIC_H */
int jit_snprintf
(char *str, unsigned int len, const char *format, ...) JIT_NOTHROW;
-/*
- * Dynamic library routines.
- */
-typedef void *jit_dynlib_handle_t;
-jit_dynlib_handle_t jit_dynlib_open(const char *name) JIT_NOTHROW;
-void jit_dynlib_close(jit_dynlib_handle_t handle) JIT_NOTHROW;
-void *jit_dynlib_get_symbol
- (jit_dynlib_handle_t handle, const char *symbol) JIT_NOTHROW;
-const char *jit_dynlib_get_suffix(void) JIT_NOTHROW;
-void jit_dynlib_set_debug(int flag) JIT_NOTHROW;
-
-/*
- * C++ name mangling definitions.
- */
-#define JIT_MANGLE_PUBLIC 0x0001
-#define JIT_MANGLE_PROTECTED 0x0002
-#define JIT_MANGLE_PRIVATE 0x0003
-#define JIT_MANGLE_STATIC 0x0008
-#define JIT_MANGLE_VIRTUAL 0x0010
-#define JIT_MANGLE_CONST 0x0020
-#define JIT_MANGLE_EXPLICIT_THIS 0x0040
-#define JIT_MANGLE_IS_CTOR 0x0080
-#define JIT_MANGLE_IS_DTOR 0x0100
-#define JIT_MANGLE_BASE 0x0200
-char *jit_mangle_global_function
- (const char *name, jit_type_t signature, int form) JIT_NOTHROW;
-char *jit_mangle_member_function
- (const char *class_name, const char *name,
- jit_type_t signature, int form, int flags) JIT_NOTHROW;
-
#ifdef __cplusplus
};
#endif
jit-cache.c \
jit-context.c \
jit-dump.c \
- jit-dynlib.c \
jit-elf-defs.h \
jit-elf-read.c \
jit-elf-write.c \
jit-interp.cpp \
jit-intrinsic.c \
jit-live.c \
- jit-mangle.c \
jit-memory.c \
jit-memory.h \
jit-meta.c \
--- /dev/null
+Makefile
+Makefile.in
+.deps
--- /dev/null
+
+lib_LIBRARIES = libjitdynamic.a
+
+libjitdynamic_a_SOURCES = \
+ jit-dynlib.c \
+ jit-cpp-mangle.c
+
+AM_CFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include \
+ -I. -I$(srcdir) -I$(top_srcdir)/jit -I$(top_builddir)/jit
/*
- * jit-mangle.c - Perform C++ name mangling.
+ * jit-cpp-mangle.c - Perform C++ name mangling.
*
* Copyright (C) 2004 Southern Storm Software, Pty Ltd.
*
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <jit/jit-dynamic.h>
#include "jit-internal.h"
#include <config.h>
#include <stdio.h>
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <jit/jit-dynamic.h>
+#include <jit/jit-util.h>
#include <stdio.h>
-#include "jit-internal.h"
+#include <config.h>
#ifdef JIT_WIN32_PLATFORM
#include <windows.h>
#ifndef JIT_WIN32_NATIVE
@code{dlopen}, @code{dlclose}, and @code{dlsym} functions, which
are not portable across operating systems.
+You must include @code{<jit/jit-dynamic.h>} to use these routines,
+and then link with @code{-ljitdynamic -ljit}.
+
@deftypefun jit_dynlib_handle_t jit_dynlib_open ({const char *} name)
Opens the dynamic library called @code{name}, returning a handle for it.
@end deftypefun