orc: decorate public symbols with ORC_API
authorTim-Philipp Müller <tim@centricular.com>
Fri, 27 Apr 2018 15:56:11 +0000 (16:56 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 28 Apr 2018 00:09:54 +0000 (01:09 +0100)
We'll use that later to control symbol visibility and
exported symbols.

28 files changed:
orc/Makefile.am
orc/meson.build
orc/orc.h
orc/orcarm.h
orc/orcbytecode.h
orc/orccode.h
orc/orccompiler.h
orc/orccpu.h
orc/orcdebug.h
orc/orcexecutor.h
orc/orcfunctions.h
orc/orcinternal.h
orc/orcmips.c
orc/orcmips.h
orc/orcmmx.h
orc/orcneon.h
orc/orconce.h
orc/orcopcode.h
orc/orcparse.h
orc/orcpowerpc.h
orc/orcprogram.h
orc/orcrule.h
orc/orcrules-mips.c
orc/orcsse.h
orc/orctarget.h
orc/orcutils.h
orc/orcx86.h
orc/orcx86insn.h

index 07e8af4..c1731c7 100644 (file)
@@ -76,6 +76,8 @@ if HAVE_MIPSEL
 liborc_@ORC_MAJORMINOR@_la_SOURCES += orccpu-mips.c
 endif
 
+# FIXME: orcemulateopcodes.h probably shouldn't be installed, symbols are not exported or useful
+# FIXME: orcinternal.h should probably also not be installed
 pkginclude_HEADERS = \
        orc-stdint.h \
        orc.h \
@@ -125,7 +127,7 @@ generate_bytecode_DEPENDENCIES = liborc-0.4.la
 
 update: generate-emulation generate-bytecode
        $(top_builddir)/tools/orcc$(EXEEXT) --implementation -o orcfunctions.c orcfunctions.orc
-       $(top_builddir)/tools/orcc$(EXEEXT) --header -o orcfunctions.h orcfunctions.orc
+       $(top_builddir)/tools/orcc$(EXEEXT) --decorator ORC_API --header -o orcfunctions.h orcfunctions.orc
        ./generate-emulation$(EXEEXT) -o orcemulateopcodes.c
        ./generate-emulation$(EXEEXT) --header -o orcemulateopcodes.h
        ./generate-bytecode$(EXEEXT) --header -o orcbytecodes.h
index 03ed4f6..138c4d4 100644 (file)
@@ -28,11 +28,11 @@ orc_headers = [
   'orccpu.h',
   'orccpuinsn.h',
   'orcdebug.h',
-  'orcemulateopcodes.h',
+  'orcemulateopcodes.h', # FIXME: this probably shouldn't be installed, symbols are not exported or useful
   'orcexecutor.h',
   'orcfunctions.h',
   'orcinstruction.h',
-  'orcinternal.h',
+  'orcinternal.h', # FIXME: this probably shouldn't be installed, symbols are not exported or useful
   'orclimits.h',
   'orcmmx.h',
   'orcneon.h',
index b34650d..a3e4039 100644 (file)
--- a/orc/orc.h
+++ b/orc/orc.h
@@ -2,15 +2,19 @@
 #ifndef _ORC_ORC_H_
 #define _ORC_ORC_H_
 
+#ifndef ORC_API
+#define ORC_API extern
+#endif
+
+#include <orc/orcutils.h>
 #include <orc/orcprogram.h>
 #include <orc/orcdebug.h>
 #include <orc/orcfunctions.h>
 #include <orc/orconce.h>
 #include <orc/orcparse.h>
-#include <orc/orcutils.h>
 #include <orc/orccpu.h>
 
-const char * orc_version_string (void);
+ORC_API const char * orc_version_string (void);
 
 #endif
 
index 1187aa3..69087aa 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_ARM_H_
 #define _ORC_ARM_H_
 
-#include <orc/orcprogram.h>
+#include <orc/orc.h>
 
 ORC_BEGIN_DECLS
 
@@ -71,60 +71,60 @@ typedef enum {
   ORC_ARM_ROR
 } OrcArmShift;
 
-unsigned long orc_arm_get_cpu_flags (void);
-
-void orc_arm_emit (OrcCompiler *compiler, orc_uint32 insn);
-void orc_arm_emit_bx_lr (OrcCompiler *compiler);
-const char * orc_arm_reg_name (int reg);
-const char * orc_arm_cond_name (OrcArmCond cond);
-void orc_arm_emit_load_imm (OrcCompiler *compiler, int dest, int imm);
-
-void orc_arm_emit_add (OrcCompiler *compiler, int dest, int src1, int src2);
-void orc_arm_emit_sub (OrcCompiler *compiler, int dest, int src1, int src2);
-void orc_arm_emit_add_imm (OrcCompiler *compiler, int dest, int src1, int value);
-void orc_arm_emit_and_imm (OrcCompiler *compiler, int dest, int src1, int value);
-void orc_arm_emit_sub_imm (OrcCompiler *compiler, int dest, int src1, int value, int record);
-void orc_arm_emit_asr_imm (OrcCompiler *compiler, int dest, int src1, int value);
-void orc_arm_emit_lsl_imm (OrcCompiler *compiler, int dest, int src1, int value);
-void orc_arm_emit_cmp_imm (OrcCompiler *compiler, int src1, int value);
-void orc_arm_emit_cmp (OrcCompiler *compiler, int src1, int src2);
-void orc_arm_emit_mov (OrcCompiler *compiler, int dest, int src);
-
-void orc_arm_emit_align (OrcCompiler *compiler, int align_shift);
-void orc_arm_emit_label (OrcCompiler *compiler, int label);
-void orc_arm_emit_push (OrcCompiler *compiler, int regs, orc_uint32 vregs);
-void orc_arm_emit_pop (OrcCompiler *compiler, int regs, orc_uint32 vregs);
-void orc_arm_emit_branch (OrcCompiler *compiler, int cond, int label);
-void orc_arm_emit_data (OrcCompiler *compiler, orc_uint32 data);
-
-void orc_arm_loadb (OrcCompiler *compiler, int dest, int src1, int offset);
-void orc_arm_storeb (OrcCompiler *compiler, int dest, int offset, int src1);
-void orc_arm_loadw (OrcCompiler *compiler, int dest, int src1, int offset);
-void orc_arm_storew (OrcCompiler *compiler, int dest, int offset, int src1);
-void orc_arm_loadl (OrcCompiler *compiler, int dest, int src1, int offset);
-void orc_arm_storel (OrcCompiler *compiler, int dest, int offset, int src1);
-
-void orc_arm_emit_load_reg (OrcCompiler *compiler, int dest, int src1, int offset);
-void orc_arm_emit_store_reg (OrcCompiler *compiler, int src, int dest, int offset);
-
-void orc_arm_add_fixup (OrcCompiler *compiler, int label, int type);
-void orc_arm_do_fixups (OrcCompiler *compiler);
-
-void orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode,
+ORC_API unsigned long orc_arm_get_cpu_flags (void);
+
+ORC_API void orc_arm_emit (OrcCompiler *compiler, orc_uint32 insn);
+ORC_API void orc_arm_emit_bx_lr (OrcCompiler *compiler);
+ORC_API const char * orc_arm_reg_name (int reg);
+ORC_API const char * orc_arm_cond_name (OrcArmCond cond);
+ORC_API void orc_arm_emit_load_imm (OrcCompiler *compiler, int dest, int imm);
+
+ORC_API void orc_arm_emit_add (OrcCompiler *compiler, int dest, int src1, int src2);
+ORC_API void orc_arm_emit_sub (OrcCompiler *compiler, int dest, int src1, int src2);
+ORC_API void orc_arm_emit_add_imm (OrcCompiler *compiler, int dest, int src1, int value);
+ORC_API void orc_arm_emit_and_imm (OrcCompiler *compiler, int dest, int src1, int value);
+ORC_API void orc_arm_emit_sub_imm (OrcCompiler *compiler, int dest, int src1, int value, int record);
+ORC_API void orc_arm_emit_asr_imm (OrcCompiler *compiler, int dest, int src1, int value);
+ORC_API void orc_arm_emit_lsl_imm (OrcCompiler *compiler, int dest, int src1, int value);
+ORC_API void orc_arm_emit_cmp_imm (OrcCompiler *compiler, int src1, int value);
+ORC_API void orc_arm_emit_cmp (OrcCompiler *compiler, int src1, int src2);
+ORC_API void orc_arm_emit_mov (OrcCompiler *compiler, int dest, int src);
+
+ORC_API void orc_arm_emit_align (OrcCompiler *compiler, int align_shift);
+ORC_API void orc_arm_emit_label (OrcCompiler *compiler, int label);
+ORC_API void orc_arm_emit_push (OrcCompiler *compiler, int regs, orc_uint32 vregs);
+ORC_API void orc_arm_emit_pop (OrcCompiler *compiler, int regs, orc_uint32 vregs);
+ORC_API void orc_arm_emit_branch (OrcCompiler *compiler, int cond, int label);
+ORC_API void orc_arm_emit_data (OrcCompiler *compiler, orc_uint32 data);
+
+ORC_API void orc_arm_loadb (OrcCompiler *compiler, int dest, int src1, int offset);
+ORC_API void orc_arm_storeb (OrcCompiler *compiler, int dest, int offset, int src1);
+ORC_API void orc_arm_loadw (OrcCompiler *compiler, int dest, int src1, int offset);
+ORC_API void orc_arm_storew (OrcCompiler *compiler, int dest, int offset, int src1);
+ORC_API void orc_arm_loadl (OrcCompiler *compiler, int dest, int src1, int offset);
+ORC_API void orc_arm_storel (OrcCompiler *compiler, int dest, int offset, int src1);
+
+ORC_API void orc_arm_emit_load_reg (OrcCompiler *compiler, int dest, int src1, int offset);
+ORC_API void orc_arm_emit_store_reg (OrcCompiler *compiler, int src, int dest, int offset);
+
+ORC_API void orc_arm_add_fixup (OrcCompiler *compiler, int label, int type);
+ORC_API void orc_arm_do_fixups (OrcCompiler *compiler);
+
+ORC_API void orc_arm_emit_dp (OrcCompiler *p, int type, OrcArmCond cond, OrcArmDP opcode,
     int S, int Rd, int Rn, int Rm, int shift, orc_uint32 val);
-void orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond,
+ORC_API void orc_arm_emit_par (OrcCompiler *p, int op, int mode, OrcArmCond cond,
     int Rd, int Rn, int Rm);
-void orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond,
+ORC_API void orc_arm_emit_xt (OrcCompiler *p, int op, OrcArmCond cond,
     int Rd, int Rn, int Rm, int r8);
-void orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond,
+ORC_API void orc_arm_emit_pkh (OrcCompiler *p, int op, OrcArmCond cond,
     int Rd, int Rn, int Rm, int sh);
-void orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond,
+ORC_API void orc_arm_emit_sat (OrcCompiler *p, int op, OrcArmCond cond,
     int Rd, int sat, int Rm, int sh, int asr);
-void orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond,
+ORC_API void orc_arm_emit_rv (OrcCompiler *p, int op, OrcArmCond cond,
     int Rd, int Rm);
-void orc_arm_emit_nop (OrcCompiler *compiler);
+ORC_API void orc_arm_emit_nop (OrcCompiler *compiler);
 
-void orc_arm_flush_cache (OrcCode *code);
+ORC_API void orc_arm_flush_cache (OrcCode *code);
 
 /* ALL cpus */
 /* data procesing instructions */
index 6dfd6de..876c7e3 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_BYTECODE_H_
 #define _ORC_BYTECODE_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orcbytecodes.h>
 
 ORC_BEGIN_DECLS
@@ -19,10 +19,13 @@ struct _OrcBytecode {
 
 #ifdef ORC_ENABLE_UNSTABLE_API
 
-OrcBytecode * orc_bytecode_new (void);
-void orc_bytecode_free (OrcBytecode *bytecode);
-OrcBytecode * orc_bytecode_from_program (OrcProgram *p);
-int orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode);
+ORC_API OrcBytecode * orc_bytecode_new (void);
+
+ORC_API void          orc_bytecode_free (OrcBytecode *bytecode);
+
+ORC_API OrcBytecode * orc_bytecode_from_program (OrcProgram *p);
+
+ORC_API int           orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode);
 
 #endif
 
index 45441ce..ee8fe66 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_CODE_H_
 #define _ORC_CODE_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 #include <orc/orcexecutor.h>
 #include <orc/orcinstruction.h>
@@ -43,13 +43,14 @@ struct _OrcCode {
 };
 
 
-void orc_code_allocate_codemem (OrcCode *code, int size);
+ORC_API void orc_code_allocate_codemem (OrcCode *code, int size);
 
-OrcCode * orc_code_new (void);
-void orc_code_free (OrcCode *code);
+ORC_API OrcCode * orc_code_new (void);
+ORC_API void      orc_code_free (OrcCode *code);
 
 #ifdef ORC_ENABLE_UNSTABLE_API
 
+/* FIXME: this is internal API, nothing in the public headers returns an OrcCodeChunk */
 void orc_code_chunk_free (OrcCodeChunk *chunk);
 
 #endif
index a3cdbcd..2af53a5 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_COMPILER_H_
 #define _ORC_COMPILER_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 #include <orc/orcexecutor.h>
 #include <orc/orccode.h>
@@ -138,24 +138,31 @@ struct _OrcCompiler {
 };
 
 
-int orc_compiler_label_new (OrcCompiler *compiler);
-int orc_compiler_get_constant (OrcCompiler *compiler, int size, int value);
-int orc_compiler_get_constant_long (OrcCompiler *compiler, orc_uint32 a,
-    orc_uint32 b, orc_uint32 c, orc_uint32 d);
-int orc_compiler_try_get_constant_long (OrcCompiler *compiler, orc_uint32 a,
-    orc_uint32 b, orc_uint32 c, orc_uint32 d);
-int orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int value);
-int orc_compiler_get_temp_reg (OrcCompiler *compiler);
-int orc_compiler_get_constant_reg (OrcCompiler *compiler);
-void orc_compiler_error (OrcCompiler *compiler, const char *fmt, ...);
+ORC_API int orc_compiler_label_new (OrcCompiler *compiler);
 
-void orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...)
-  ORC_GNU_PRINTF(2,3);
+ORC_API int orc_compiler_get_constant (OrcCompiler *compiler, int size, int value);
+
+ORC_API int orc_compiler_get_constant_long (OrcCompiler *compiler, orc_uint32 a,
+  orc_uint32 b, orc_uint32 c, orc_uint32 d);
+
+ORC_API int orc_compiler_try_get_constant_long (OrcCompiler *compiler, orc_uint32 a,
+  orc_uint32 b, orc_uint32 c, orc_uint32 d);
+
+ORC_API int orc_compiler_get_temp_constant (OrcCompiler *compiler, int size, int value);
+
+ORC_API int orc_compiler_get_temp_reg (OrcCompiler *compiler);
+
+ORC_API int orc_compiler_get_constant_reg (OrcCompiler *compiler);
+
+ORC_API void orc_compiler_error (OrcCompiler *compiler, const char *fmt, ...);
+
+ORC_API void orc_compiler_append_code (OrcCompiler *p, const char *fmt, ...) ORC_GNU_PRINTF(2,3);
  
 #ifdef ORC_ENABLE_UNSTABLE_API
 
-int orc_compiler_flag_check (const char *flag);
+ORC_API int orc_compiler_flag_check (const char *flag);
 
+/* FIXME: remove, these were never actually exported as public symbols, so unusable  */
 extern int _orc_compiler_flag_backup;
 extern int _orc_compiler_flag_emulate;
 extern int _orc_compiler_flag_debug;
index 7ab4355..b354f4f 100644 (file)
@@ -2,15 +2,17 @@
 #ifndef _ORC_CPU_H_
 #define _ORC_CPU_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 
 ORC_BEGIN_DECLS
 
 
-void orc_get_data_cache_sizes (int *level1, int *level2, int *level3);
-void orc_get_cpu_family_model_stepping (int *family, int *model, int *stepping);
-const char * orc_get_cpu_name (void);
+ORC_API void orc_get_data_cache_sizes (int *level1, int *level2, int *level3);
+
+ORC_API void orc_get_cpu_family_model_stepping (int *family, int *model, int *stepping);
+
+ORC_API const char * orc_get_cpu_name (void);
 
 
 ORC_END_DECLS
index 3faaecf..22b1c24 100644 (file)
@@ -29,7 +29,7 @@
 #define _ORC_DEBUG_H_
 
 #include <stdarg.h>
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <stdlib.h>
 
 ORC_BEGIN_DECLS
@@ -145,13 +145,11 @@ typedef enum {
   } \
 } while(0)
 
-void orc_debug_set_print_function (OrcDebugPrintFunc func);
-int orc_debug_get_level (void);
-void orc_debug_set_level (int level);
+ORC_API void orc_debug_set_print_function (OrcDebugPrintFunc func);
+ORC_API int orc_debug_get_level (void);
+ORC_API void orc_debug_set_level (int level);
 
-void _orc_debug_init (void);
-
-void orc_debug_print (int level, const char *file, const char *func,
+ORC_API void orc_debug_print (int level, const char *file, const char *func,
     int line, const char *format, ...);
 
 ORC_END_DECLS
index 0f901d6..7f5de28 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_EXECUTOR_H_
 #define _ORC_EXECUTOR_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 
 ORC_BEGIN_DECLS
@@ -92,24 +92,41 @@ struct _OrcExecutorAlt {
 
 
 
-OrcExecutor * orc_executor_new (OrcProgram *program);
-void orc_executor_free (OrcExecutor *ex);
-void orc_executor_set_program (OrcExecutor *ex, OrcProgram *program);
-void orc_executor_set_array (OrcExecutor *ex, int var, void *ptr);
-void orc_executor_set_stride (OrcExecutor *ex, int var, int stride);
-void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr);
-void orc_executor_set_param (OrcExecutor *ex, int var, int value);
-void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value);
-void orc_executor_set_param_float (OrcExecutor *ex, int var, float value);
-void orc_executor_set_param_int64 (OrcExecutor *ex, int var, orc_int64 value);
-void orc_executor_set_param_double (OrcExecutor *ex, int var, double value);
-int orc_executor_get_accumulator (OrcExecutor *ex, int var);
-int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name);
-void orc_executor_set_n (OrcExecutor *ex, int n);
-void orc_executor_set_m (OrcExecutor *ex, int m);
-void orc_executor_emulate (OrcExecutor *ex);
-void orc_executor_run (OrcExecutor *ex);
-void orc_executor_run_backup (OrcExecutor *ex);
+ORC_API OrcExecutor * orc_executor_new (OrcProgram *program);
+
+ORC_API void orc_executor_free (OrcExecutor *ex);
+
+ORC_API void orc_executor_set_program (OrcExecutor *ex, OrcProgram *program);
+
+ORC_API void orc_executor_set_array (OrcExecutor *ex, int var, void *ptr);
+
+ORC_API void orc_executor_set_stride (OrcExecutor *ex, int var, int stride);
+
+ORC_API void orc_executor_set_array_str (OrcExecutor *ex, const char *name, void *ptr);
+
+ORC_API void orc_executor_set_param (OrcExecutor *ex, int var, int value);
+
+ORC_API void orc_executor_set_param_str (OrcExecutor *ex, const char *name, int value);
+
+ORC_API void orc_executor_set_param_float (OrcExecutor *ex, int var, float value);
+
+ORC_API void orc_executor_set_param_int64 (OrcExecutor *ex, int var, orc_int64 value);
+
+ORC_API void orc_executor_set_param_double (OrcExecutor *ex, int var, double value);
+
+ORC_API int orc_executor_get_accumulator (OrcExecutor *ex, int var);
+
+ORC_API int orc_executor_get_accumulator_str (OrcExecutor *ex, const char *name);
+
+ORC_API void orc_executor_set_n (OrcExecutor *ex, int n);
+
+ORC_API void orc_executor_set_m (OrcExecutor *ex, int m);
+
+ORC_API void orc_executor_emulate (OrcExecutor *ex);
+
+ORC_API void orc_executor_run (OrcExecutor *ex);
+
+ORC_API void orc_executor_run_backup (OrcExecutor *ex);
 
 
 ORC_END_DECLS
index b9e6205..c2ff6d6 100644 (file)
@@ -79,8 +79,8 @@ typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16
 #endif
 #endif
 
-void orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n);
-void orc_memset (void * ORC_RESTRICT d1, int p1, int n);
+ORC_API void orc_memcpy (void * ORC_RESTRICT d1, const void * ORC_RESTRICT s1, int n);
+ORC_API void orc_memset (void * ORC_RESTRICT d1, int p1, int n);
 
 #ifdef __cplusplus
 }
index a60838b..d455c42 100644 (file)
@@ -9,6 +9,8 @@ ORC_BEGIN_DECLS
 
 #ifdef ORC_ENABLE_UNSTABLE_API
 
+/* FIXME: not sure why these are exported, no one needs to call these, that's
+ * already done as part of orc_init() */
 void orc_mmx_init (void);
 void orc_sse_init (void);
 void orc_arm_init (void);
index f4c5498..dab2ac5 100644 (file)
@@ -26,6 +26,7 @@
   POSSIBILITY OF SUCH DAMAGE.
 
 */
+#include "config.h"
 
 #include <orc/orcmips.h>
 #include <orc/orcdebug.h>
index f8a617d..f0d5c42 100644 (file)
@@ -30,8 +30,7 @@
 #ifndef _ORC_MIPS_H_
 #define _ORC_MIPS_H_
 
-#include <orc/orcutils.h>
-#include <orc/orcprogram.h>
+#include <orc/orc.h>
 
 ORC_BEGIN_DECLS
 
@@ -77,39 +76,57 @@ typedef enum {
   ORC_MIPS_RA
 } OrcMipsRegister;
 
+ORC_API
 unsigned long orc_mips_get_cpu_flags (void);
 
+ORC_API
 void orc_mips_emit_label (OrcCompiler *compiler, unsigned int label);
 
+ORC_API
 void orc_mips_emit_nop (OrcCompiler *compiler);
 
+ORC_API
 void orc_mips_emit_sw (OrcCompiler *compiler, OrcMipsRegister reg,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_swr (OrcCompiler *compiler, OrcMipsRegister reg,
                         OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_swl (OrcCompiler *compiler, OrcMipsRegister reg,
                         OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_sh (OrcCompiler *compiler, OrcMipsRegister reg,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_sb (OrcCompiler *compiler, OrcMipsRegister reg,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lw (OrcCompiler *compiler, OrcMipsRegister dest,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lwr (OrcCompiler *compiler, OrcMipsRegister dest,
                         OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lwl (OrcCompiler *compiler, OrcMipsRegister dest,
                         OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lh (OrcCompiler *compiler, OrcMipsRegister dest,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lb (OrcCompiler *compiler, OrcMipsRegister dest,
                        OrcMipsRegister base, unsigned int offset);
+ORC_API
 void orc_mips_emit_lbu (OrcCompiler *compiler, OrcMipsRegister dest,
                        OrcMipsRegister base, unsigned int offset);
-
+ORC_API
 void orc_mips_emit_jr (OrcCompiler *compiler, OrcMipsRegister address_reg);
+
+ORC_API
 void orc_mips_emit_conditional_branch (OrcCompiler *compiler, int condition,
                                        OrcMipsRegister rs, OrcMipsRegister rt,
                                        unsigned int label);
+
+ORC_API
 void orc_mips_emit_conditional_branch_with_offset (OrcCompiler *compiler,
                                                    int condition,
                                                    OrcMipsRegister rs,
@@ -136,63 +153,63 @@ enum {
 #define orc_mips_emit_beq(compiler, reg1, reg2, label) \
     orc_mips_emit_conditional_branch(compiler, ORC_MIPS_BEQ, reg1, reg2, label)
 
-void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_addi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_addu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_addu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_addu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_addq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_adduh_r_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_subu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_subq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_subq_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_subu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_sra (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_shll_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_shra_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_shrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_or (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_and (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_ori (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
-void orc_mips_emit_lui (OrcCompiler *compiler, OrcMipsRegister dest, int value);
-void orc_mips_emit_mul (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_mul_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-
-void orc_mips_emit_append (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount);
-
-void orc_mips_emit_prepend (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount);
-
-void orc_mips_emit_mtlo (OrcCompiler *compiler, OrcMipsRegister source);
-
-void orc_mips_emit_extr_s_h (OrcCompiler *compiler, OrcMipsRegister dest, int accumulator, int shift);
-
-void orc_mips_emit_slt (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src1, OrcMipsRegister src2);
-void orc_mips_emit_movn (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src, OrcMipsRegister condition);
-
-void orc_mips_emit_repl_ph (OrcCompiler *compiler, OrcMipsRegister dest, int value);
-void orc_mips_emit_replv_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-void orc_mips_emit_replv_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-void orc_mips_emit_preceu_ph_qbr (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-void orc_mips_emit_precr_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_precrq_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_cmp_lt_ph (OrcCompiler *compiler, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_pick_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-
-void orc_mips_emit_packrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
-void orc_mips_emit_align (OrcCompiler *compiler, int align_shift);
-
-void orc_mips_emit_wsbh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-void orc_mips_emit_seh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
-
-void orc_mips_emit_pref (OrcCompiler *compiler, int hint, OrcMipsRegister base, int offset);
-
-void orc_mips_do_fixups (OrcCompiler *compiler);
+ORC_API void orc_mips_emit_addiu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_addi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_add (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_addu (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_addu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_addu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_addq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_adduh_r_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_move (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+ORC_API void orc_mips_emit_sub (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_subu_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_subq_s_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_subq_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_subu_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_srl (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_sll (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_sra (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_shll_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_shra_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_shrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_andi (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_or (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_and (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_ori (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int value);
+ORC_API void orc_mips_emit_lui (OrcCompiler *compiler, OrcMipsRegister dest, int value);
+ORC_API void orc_mips_emit_mul (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_mul_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+
+ORC_API void orc_mips_emit_append (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount);
+
+ORC_API void orc_mips_emit_prepend (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source, int shift_amount);
+
+ORC_API void orc_mips_emit_mtlo (OrcCompiler *compiler, OrcMipsRegister source);
+
+ORC_API void orc_mips_emit_extr_s_h (OrcCompiler *compiler, OrcMipsRegister dest, int accumulator, int shift);
+
+ORC_API void orc_mips_emit_slt (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src1, OrcMipsRegister src2);
+ORC_API void orc_mips_emit_movn (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister src, OrcMipsRegister condition);
+
+ORC_API void orc_mips_emit_repl_ph (OrcCompiler *compiler, OrcMipsRegister dest, int value);
+ORC_API void orc_mips_emit_replv_qb (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+ORC_API void orc_mips_emit_replv_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+ORC_API void orc_mips_emit_preceu_ph_qbr (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+ORC_API void orc_mips_emit_precr_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_precrq_qb_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_cmp_lt_ph (OrcCompiler *compiler, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_pick_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+
+ORC_API void orc_mips_emit_packrl_ph (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source1, OrcMipsRegister source2);
+ORC_API void orc_mips_emit_align (OrcCompiler *compiler, int align_shift);
+
+ORC_API void orc_mips_emit_wsbh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+ORC_API void orc_mips_emit_seh (OrcCompiler *compiler, OrcMipsRegister dest, OrcMipsRegister source);
+
+ORC_API void orc_mips_emit_pref (OrcCompiler *compiler, int hint, OrcMipsRegister base, int offset);
+
+ORC_API void orc_mips_do_fixups (OrcCompiler *compiler);
 
 /* ORC_STRUCT_OFFSET doesn't work for cross-compiling, so we use that */
 
index 13395a4..deba23c 100644 (file)
@@ -22,11 +22,18 @@ typedef enum {
 
 #define ORC_MMX_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0))
 
+ORC_API
 const char * orc_x86_get_regname_mmx(int i);
+
+ORC_API
 void orc_x86_emit_mov_memoffset_mmx (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2, int is_aligned);
+
+ORC_API
 void orc_x86_emit_mov_memindex_mmx (OrcCompiler *compiler, int size, int offset,
     int reg1, int regindex, int shift, int reg2, int is_aligned);
+
+ORC_API
 void orc_x86_emit_mov_mmx_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2, int aligned, int uncached);
 #if 0
@@ -58,9 +65,10 @@ void orc_mmx_emit_pextrw_memoffset (OrcCompiler *p, int imm, int src,
 void orc_mmx_emit_shiftimm (OrcCompiler *p, const char *insn_name,
     int code, int modrm_code, int shift, int reg);
 #endif
-unsigned int orc_mmx_get_cpu_flags (void);
 
-void orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size,
+ORC_API unsigned int orc_mmx_get_cpu_flags (void);
+
+ORC_API void orc_mmx_load_constant (OrcCompiler *compiler, int reg, int size,
     orc_uint64 value);
 
 #endif
index 5e0e4d0..06082b3 100644 (file)
@@ -9,30 +9,30 @@ ORC_BEGIN_DECLS
 
 #ifdef ORC_ENABLE_UNSTABLE_API
 
-const char *orc_neon_reg_name (int reg);
-const char *orc_neon_reg_name_quad (int reg);
-
-void orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update);
-void orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update);
-void orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update);
-void orc_neon_loadq (OrcCompiler *compiler, int dest, int src1, int update, int is_aligned);
-
-void orc_neon_load_vec_aligned (OrcCompiler *compiler, OrcVariable *var, int update);
-void orc_neon_load_vec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update);
-void orc_neon_load_halfvec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update);
-
-void orc_neon_neg (OrcCompiler *compiler, int dest);
-void orc_neon_storeb (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
-void orc_neon_storew (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
-void orc_neon_storel (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
-void orc_neon_storeq (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
-void orc_neon_emit_loadib (OrcCompiler *p, int reg, int value);
-void orc_neon_emit_loadiw (OrcCompiler *p, int reg, int value);
-void orc_neon_emit_loadil (OrcCompiler *p, int reg, int value);
-void orc_neon_emit_loadpb (OrcCompiler *p, int reg, int param);
-void orc_neon_emit_loadpw (OrcCompiler *p, int reg, int param);
-void orc_neon_emit_loadpl (OrcCompiler *p, int reg, int param);
-void orc_neon_preload (OrcCompiler *compiler, OrcVariable *var, int write,
+ORC_API const char *orc_neon_reg_name (int reg);
+ORC_API const char *orc_neon_reg_name_quad (int reg);
+
+ORC_API void orc_neon_loadb (OrcCompiler *compiler, OrcVariable *var, int update);
+ORC_API void orc_neon_loadw (OrcCompiler *compiler, OrcVariable *var, int update);
+ORC_API void orc_neon_loadl (OrcCompiler *compiler, OrcVariable *var, int update);
+ORC_API void orc_neon_loadq (OrcCompiler *compiler, int dest, int src1, int update, int is_aligned);
+
+ORC_API void orc_neon_load_vec_aligned (OrcCompiler *compiler, OrcVariable *var, int update);
+ORC_API void orc_neon_load_vec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update);
+ORC_API void orc_neon_load_halfvec_unaligned (OrcCompiler *compiler, OrcVariable *var, int update);
+
+ORC_API void orc_neon_neg (OrcCompiler *compiler, int dest);
+ORC_API void orc_neon_storeb (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
+ORC_API void orc_neon_storew (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
+ORC_API void orc_neon_storel (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
+ORC_API void orc_neon_storeq (OrcCompiler *compiler, int dest, int update, int src1, int is_aligned);
+ORC_API void orc_neon_emit_loadib (OrcCompiler *p, int reg, int value);
+ORC_API void orc_neon_emit_loadiw (OrcCompiler *p, int reg, int value);
+ORC_API void orc_neon_emit_loadil (OrcCompiler *p, int reg, int value);
+ORC_API void orc_neon_emit_loadpb (OrcCompiler *p, int reg, int param);
+ORC_API void orc_neon_emit_loadpw (OrcCompiler *p, int reg, int param);
+ORC_API void orc_neon_emit_loadpl (OrcCompiler *p, int reg, int param);
+ORC_API void orc_neon_preload (OrcCompiler *compiler, OrcVariable *var, int write,
     int offset);
 
 #endif
index bd8b9e5..9fd56db 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_ONCE_H_
 #define _ORC_ONCE_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 
 ORC_BEGIN_DECLS
 
@@ -15,8 +15,8 @@ struct _OrcOnce {
   void *value;
 };
 
-void orc_once_mutex_lock (void);
-void orc_once_mutex_unlock (void);
+ORC_API void orc_once_mutex_lock (void);
+ORC_API void orc_once_mutex_unlock (void);
 
 ORC_END_DECLS
 
index 63310c9..711fd01 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_OPCODE_H_
 #define _ORC_OPCODE_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 
 ORC_BEGIN_DECLS
@@ -45,12 +45,17 @@ struct _OrcStaticOpcode {
   OrcOpcodeEmulateNFunc emulateN;
 };
 
-OrcStaticOpcode * orc_opcode_find_by_name (const char *name);
-void orc_opcode_init (void);
-OrcOpcodeSet *orc_opcode_set_get (const char *name);
-OrcOpcodeSet *orc_opcode_set_get_nth (int opcode_major);
-int orc_opcode_set_find_by_name (OrcOpcodeSet *opcode_set, const char *name);
-int orc_opcode_register_static (OrcStaticOpcode *sopcode, char *prefix);
+ORC_API OrcStaticOpcode * orc_opcode_find_by_name (const char *name);
+
+ORC_API void orc_opcode_init (void);
+
+ORC_API OrcOpcodeSet *orc_opcode_set_get (const char *name);
+
+ORC_API OrcOpcodeSet *orc_opcode_set_get_nth (int opcode_major);
+
+ORC_API int orc_opcode_set_find_by_name (OrcOpcodeSet *opcode_set, const char *name);
+
+ORC_API int orc_opcode_register_static (OrcStaticOpcode *sopcode, char *prefix);
 
 ORC_END_DECLS
 
index b95a267..2603d74 100644 (file)
@@ -2,13 +2,13 @@
 #ifndef __ORC_PARSE_H__
 #define __ORC_PARSE_H__
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 
 ORC_BEGIN_DECLS
 
-int orc_parse (const char *code, OrcProgram ***programs);
-int orc_parse_full (const char *code, OrcProgram ***programs, char **log);
-const char * orc_parse_get_init_function (OrcProgram *program);
+ORC_API int orc_parse (const char *code, OrcProgram ***programs);
+ORC_API int orc_parse_full (const char *code, OrcProgram ***programs, char **log);
+ORC_API const char * orc_parse_get_init_function (OrcProgram *program);
 
 ORC_END_DECLS
 
index bb6a71e..f44d4e3 100644 (file)
@@ -101,39 +101,26 @@ void powerpc_emit_bne (OrcCompiler *compiler, int label);
 void powerpc_emit_label (OrcCompiler *compiler, int label);
 void powerpc_add_fixup (OrcCompiler *compiler, int type, unsigned char *ptr, int label);
 void powerpc_do_fixups (OrcCompiler *compiler);
-void orc_powerpc_flush_cache (OrcCode *code);
-
-void powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shift,
-    int record);
-void powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a,
-    int b, int minor);
-void powerpc_emit_D (OrcCompiler *compiler, const char *name,
-    unsigned int insn, int regd, int rega, int imm);
-void powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a,
-    int b);
-void powerpc_emit_VA (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b,
-    int c);
-void powerpc_emit_VA_acb (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b,
-    int c);
-void powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int a,
-    int b);
+ORC_API void orc_powerpc_flush_cache (OrcCode *code);
+
+void powerpc_emit_srawi (OrcCompiler *compiler, int regd, int rega, int shift, int record);
+void powerpc_emit_655510 (OrcCompiler *compiler, int major, int d, int a, int b, int minor);
+void powerpc_emit_D (OrcCompiler *compiler, const char *name, unsigned int insn, int regd, int rega, int imm);
+void powerpc_emit_X (OrcCompiler *compiler, unsigned int insn, int d, int a, int b);
+void powerpc_emit_VA (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int c);
+void powerpc_emit_VA_acb (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int c);
+void powerpc_emit_VX (OrcCompiler *compiler, unsigned int insn, int d, int a, int b);
 void powerpc_emit_VX_b (OrcCompiler *p, const char *name, unsigned int insn, int a);
 void powerpc_emit_VX_db (OrcCompiler *p, const char *name, unsigned int insn, int d, int b);
 void powerpc_emit_VX_dbi (OrcCompiler *p, const char *name, unsigned int insn, int d, int b, int imm);
-void powerpc_emit_VXR (OrcCompiler *compiler, const char *name,
-    unsigned int insn, int d, int a, int b, int record);
-void powerpc_emit_VX_2 (OrcCompiler *p, const char *name, unsigned int insn,
-    int d, int a, int b);
-void powerpc_emit_VX_3 (OrcCompiler *p, const char *name, unsigned int insn,
-    int d, int a, int b, int c);
-void powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, unsigned int insn,
-    int d, int a, int b, int c);
-void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn,
-    int d, int a);
-int powerpc_get_constant (OrcCompiler *p, int type, int value);
-int powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int value2, int value3);
-void powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a,
-    orc_uint32 b, orc_uint32 c, orc_uint32 d);
+void powerpc_emit_VXR (OrcCompiler *compiler, const char *name, unsigned int insn, int d, int a, int b, int record);
+void powerpc_emit_VX_2 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b);
+void powerpc_emit_VX_3 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b, int c);
+void powerpc_emit_VX_3_reg (OrcCompiler *p, const char *name, unsigned int insn, int d, int a, int b, int c);
+void powerpc_emit_VX_4 (OrcCompiler *p, const char *name, unsigned int insn, int d, int a);
+int  powerpc_get_constant (OrcCompiler *p, int type, int value);
+int  powerpc_get_constant_full (OrcCompiler *p, int value0, int value1, int value2, int value3);
+void powerpc_load_long_constant (OrcCompiler *p, int reg, orc_uint32 a, orc_uint32 b, orc_uint32 c, orc_uint32 d);
 
 /* instructions */
 #define powerpc_emit_vand(p,a,b,c)         powerpc_emit_VX_2 (p, "vand", 0x10000404, a, b, c)
index 436b5ed..51123e4 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_PROGRAM_H_
 #define _ORC_PROGRAM_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 #include <orc/orcexecutor.h>
 #include <orc/orccode.h>
@@ -105,83 +105,83 @@ struct _OrcProgram {
 #define ORC_DEST_VAL(p,insn,n) ((p)->vars[(insn)->dest_args[(n)]].value.i)
 
 
-void orc_init (void);
+ORC_API void orc_init (void);
 
-OrcProgram * orc_program_new (void);
-OrcProgram * orc_program_new_ds (int size1, int size2);
-OrcProgram * orc_program_new_dss (int size1, int size2, int size3);
-OrcProgram * orc_program_new_as (int size1, int size2);
-OrcProgram * orc_program_new_ass (int size1, int size2, int size3);
-OrcProgram * orc_program_new_from_static_bytecode (const orc_uint8 *bytecode);
+ORC_API OrcProgram * orc_program_new (void);
+ORC_API OrcProgram * orc_program_new_ds (int size1, int size2);
+ORC_API OrcProgram * orc_program_new_dss (int size1, int size2, int size3);
+ORC_API OrcProgram * orc_program_new_as (int size1, int size2);
+ORC_API OrcProgram * orc_program_new_ass (int size1, int size2, int size3);
+ORC_API OrcProgram * orc_program_new_from_static_bytecode (const orc_uint8 *bytecode);
 
-const char * orc_program_get_name (OrcProgram *program);
-void orc_program_set_name (OrcProgram *program, const char *name);
-void orc_program_set_line (OrcProgram *program, unsigned int line);
-void orc_program_set_2d (OrcProgram *program);
-void orc_program_set_constant_n (OrcProgram *program, int n);
-void orc_program_set_n_multiple (OrcProgram *ex, int n);
-void orc_program_set_n_minimum (OrcProgram *ex, int n);
-void orc_program_set_n_maximum (OrcProgram *ex, int n);
-void orc_program_set_constant_m (OrcProgram *program, int m);
+ORC_API const char * orc_program_get_name (OrcProgram *program);
+ORC_API void orc_program_set_name (OrcProgram *program, const char *name);
+ORC_API void orc_program_set_line (OrcProgram *program, unsigned int line);
+ORC_API void orc_program_set_2d (OrcProgram *program);
+ORC_API void orc_program_set_constant_n (OrcProgram *program, int n);
+ORC_API void orc_program_set_n_multiple (OrcProgram *ex, int n);
+ORC_API void orc_program_set_n_minimum (OrcProgram *ex, int n);
+ORC_API void orc_program_set_n_maximum (OrcProgram *ex, int n);
+ORC_API void orc_program_set_constant_m (OrcProgram *program, int m);
 
-void orc_program_append (OrcProgram *p, const char *opcode, int arg0, int arg1, int arg2);
-void orc_program_append_2 (OrcProgram *program, const char *name,
+ORC_API void orc_program_append (OrcProgram *p, const char *opcode, int arg0, int arg1, int arg2);
+ORC_API void orc_program_append_2 (OrcProgram *program, const char *name,
     unsigned int flags, int arg0, int arg1, int arg2, int arg3);
-void orc_program_append_str (OrcProgram *p, const char *opcode,
+ORC_API void orc_program_append_str (OrcProgram *p, const char *opcode,
     const char * arg0, const char * arg1, const char * arg2);
-void orc_program_append_str_2 (OrcProgram *program, const char *name,
+ORC_API void orc_program_append_str_2 (OrcProgram *program, const char *name,
     unsigned int flags, const char *arg1, const char *arg2, const char *arg3,
     const char *arg4);
-void orc_program_append_ds (OrcProgram *program, const char *opcode, int arg0,
+ORC_API void orc_program_append_ds (OrcProgram *program, const char *opcode, int arg0,
     int arg1);
-void orc_program_append_ds_str (OrcProgram *p, const char *opcode,
+ORC_API void orc_program_append_ds_str (OrcProgram *p, const char *opcode,
     const char * arg0, const char * arg1);
-void orc_program_append_dds_str (OrcProgram *program, const char *name,
+ORC_API void orc_program_append_dds_str (OrcProgram *program, const char *name,
     const char *arg1, const char *arg2, const char *arg3);
 
-OrcCompileResult orc_program_compile (OrcProgram *p);
-OrcCompileResult orc_program_compile_for_target (OrcProgram *p, OrcTarget *target);
-OrcCompileResult orc_program_compile_full (OrcProgram *p, OrcTarget *target,
+ORC_API OrcCompileResult orc_program_compile (OrcProgram *p);
+ORC_API OrcCompileResult orc_program_compile_for_target (OrcProgram *p, OrcTarget *target);
+ORC_API OrcCompileResult orc_program_compile_full (OrcProgram *p, OrcTarget *target,
     unsigned int flags);
-void orc_program_set_backup_function (OrcProgram *p, OrcExecutorFunc func);
-void orc_program_set_backup_name (OrcProgram *p, const char *name);
-void orc_program_free (OrcProgram *program);
+ORC_API void orc_program_set_backup_function (OrcProgram *p, OrcExecutorFunc func);
+ORC_API void orc_program_set_backup_name (OrcProgram *p, const char *name);
+ORC_API void orc_program_free (OrcProgram *program);
 
-int orc_program_find_var_by_name (OrcProgram *program, const char *name);
+ORC_API int orc_program_find_var_by_name (OrcProgram *program, const char *name);
 
-int orc_program_add_temporary (OrcProgram *program, int size, const char *name);
-int orc_program_dup_temporary (OrcProgram *program, int i, int j);
-int orc_program_add_source (OrcProgram *program, int size, const char *name);
-int orc_program_add_source_full (OrcProgram *program, int size, const char *name,
+ORC_API int orc_program_add_temporary (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_dup_temporary (OrcProgram *program, int i, int j);
+ORC_API int orc_program_add_source (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_source_full (OrcProgram *program, int size, const char *name,
     const char *type_name, int alignment);
-int orc_program_add_destination (OrcProgram *program, int size, const char *name);
-int orc_program_add_destination_full (OrcProgram *program, int size, const char *name,
+ORC_API int orc_program_add_destination (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_destination_full (OrcProgram *program, int size, const char *name,
     const char *type_name, int alignment);
-int orc_program_add_constant (OrcProgram *program, int size, int value, const char *name);
-int orc_program_add_constant_int64 (OrcProgram *program, int size, orc_int64 value, const char *name);
-int orc_program_add_constant_float (OrcProgram *program, int size, float value, const char *name);
-int orc_program_add_constant_double (OrcProgram *program, int size, double value, const char *name);
-int orc_program_add_constant_str (OrcProgram *program, int size, const char *value, const char *name);
-int orc_program_add_parameter (OrcProgram *program, int size, const char *name);
-int orc_program_add_parameter_float (OrcProgram *program, int size, const char *name);
-int orc_program_add_parameter_double (OrcProgram *program, int size, const char *name);
-int orc_program_add_parameter_int64 (OrcProgram *program, int size, const char *name);
-int orc_program_add_accumulator (OrcProgram *program, int size, const char *name);
-void orc_program_set_type_name (OrcProgram *program, int var, const char *type_name);
-void orc_program_set_var_alignment (OrcProgram *program, int var, int alignment);
-void orc_program_set_sampling_type (OrcProgram *program, int var, int sampling_type);
-
-int orc_program_allocate_register (OrcProgram *program, int is_data);
-
-void orc_program_reset (OrcProgram *program);
-OrcCode *orc_program_take_code (OrcProgram *program);
-
-const char *orc_program_get_asm_code (OrcProgram *program);
-const char * orc_program_get_error (OrcProgram *program);
-void orc_program_set_error (OrcProgram *program, const char *error);
-
-int orc_program_get_max_array_size (OrcProgram *program);
-int orc_program_get_max_accumulator_size (OrcProgram *program);
+ORC_API int orc_program_add_constant (OrcProgram *program, int size, int value, const char *name);
+ORC_API int orc_program_add_constant_int64 (OrcProgram *program, int size, orc_int64 value, const char *name);
+ORC_API int orc_program_add_constant_float (OrcProgram *program, int size, float value, const char *name);
+ORC_API int orc_program_add_constant_double (OrcProgram *program, int size, double value, const char *name);
+ORC_API int orc_program_add_constant_str (OrcProgram *program, int size, const char *value, const char *name);
+ORC_API int orc_program_add_parameter (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_parameter_float (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_parameter_double (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_parameter_int64 (OrcProgram *program, int size, const char *name);
+ORC_API int orc_program_add_accumulator (OrcProgram *program, int size, const char *name);
+ORC_API void orc_program_set_type_name (OrcProgram *program, int var, const char *type_name);
+ORC_API void orc_program_set_var_alignment (OrcProgram *program, int var, int alignment);
+ORC_API void orc_program_set_sampling_type (OrcProgram *program, int var, int sampling_type);
+
+ORC_API int orc_program_allocate_register (OrcProgram *program, int is_data);
+
+ORC_API void orc_program_reset (OrcProgram *program);
+ORC_API OrcCode *orc_program_take_code (OrcProgram *program);
+
+ORC_API const char *orc_program_get_asm_code (OrcProgram *program);
+ORC_API const char * orc_program_get_error (OrcProgram *program);
+ORC_API void orc_program_set_error (OrcProgram *program, const char *error);
+
+ORC_API int orc_program_get_max_array_size (OrcProgram *program);
+ORC_API int orc_program_get_max_accumulator_size (OrcProgram *program);
 
 
 ORC_END_DECLS
index 35b1cce..50cca45 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_RULE_H_
 #define _ORC_RULE_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 #include <orc/orcopcode.h>
 
@@ -39,9 +39,10 @@ struct _OrcRuleSet {
   int n_rules;
 };
 
-OrcRuleSet * orc_rule_set_new (OrcOpcodeSet *opcode_set, OrcTarget *target,
+ORC_API OrcRuleSet * orc_rule_set_new (OrcOpcodeSet *opcode_set, OrcTarget *target,
     unsigned int required_flags);
-void orc_rule_register (OrcRuleSet *rule_set, const char *opcode_name,
+
+ORC_API void orc_rule_register (OrcRuleSet *rule_set, const char *opcode_name,
     OrcRuleEmitFunc emit, void *emit_user);
 
 
index 551484b..5429b3f 100644 (file)
@@ -26,6 +26,7 @@
   POSSIBILITY OF SUCH DAMAGE.
 
 */
+#include "config.h"
 
 #include <orc/orcmips.h>
 #include <orc/orcdebug.h>
index 7b130bf..dd3b98f 100644 (file)
@@ -2,6 +2,7 @@
 #ifndef _ORC_SSE_H_
 #define _ORC_SSE_H_
 
+#include <orc/orc.h>
 #include <orc/orcx86.h>
 #include <orc/orcx86insn.h>
 
@@ -30,23 +31,23 @@ typedef enum {
 
 #define ORC_SSE_SHUF(a,b,c,d) ((((a)&3)<<6)|(((b)&3)<<4)|(((c)&3)<<2)|(((d)&3)<<0))
 
-const char * orc_x86_get_regname_sse(int i);
-void orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
+ORC_API const char * orc_x86_get_regname_sse(int i);
+ORC_API void orc_x86_emit_mov_memoffset_sse (OrcCompiler *compiler, int size, int offset,
     int reg1, int reg2, int is_aligned);
-void orc_x86_emit_mov_memindex_sse (OrcCompiler *compiler, int size, int offset,
+ORC_API void orc_x86_emit_mov_memindex_sse (OrcCompiler *compiler, int size, int offset,
     int reg1, int regindex, int shift, int reg2, int is_aligned);
-void orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
+ORC_API void orc_x86_emit_mov_sse_memoffset (OrcCompiler *compiler, int size, int reg1, int offset,
     int reg2, int aligned, int uncached);
 
-void orc_sse_set_mxcsr (OrcCompiler *compiler);
-void orc_sse_restore_mxcsr (OrcCompiler *compiler);
+ORC_API void orc_sse_set_mxcsr (OrcCompiler *compiler);
+ORC_API void orc_sse_restore_mxcsr (OrcCompiler *compiler);
 
-void orc_sse_load_constant (OrcCompiler *compiler, int reg, int size,
+ORC_API void orc_sse_load_constant (OrcCompiler *compiler, int reg, int size,
     orc_uint64 value);
 
 #endif
 
-unsigned int orc_sse_get_cpu_flags (void);
+ORC_API unsigned int orc_sse_get_cpu_flags (void);
 
 ORC_END_DECLS
 
index 7fae37b..d523a5e 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef _ORC_TARGET_H_
 #define _ORC_TARGET_H_
 
-#include <orc/orcutils.h>
+#include <orc/orc.h>
 #include <orc/orclimits.h>
 #include <orc/orcrule.h>
 
@@ -88,19 +88,21 @@ struct _OrcTarget {
 };
 
 
-OrcRule * orc_target_get_rule (OrcTarget *target, OrcStaticOpcode *opcode,
-    unsigned int target_flags);
-OrcTarget * orc_target_get_default (void);
-unsigned int orc_target_get_default_flags (OrcTarget *target);
-const char * orc_target_get_name (OrcTarget *target);
-const char * orc_target_get_flag_name (OrcTarget *target, int shift);
+ORC_API OrcRule *    orc_target_get_rule (OrcTarget *target,
+                                          OrcStaticOpcode *opcode,
+                                          unsigned int target_flags);
 
-const char *orc_target_get_asm_preamble (const char *target);
-const char * orc_target_get_preamble (OrcTarget *target);
-const char * orc_target_c_get_typedefs (void);
+ORC_API OrcTarget *  orc_target_get_default (void);
+ORC_API unsigned int orc_target_get_default_flags (OrcTarget *target);
+ORC_API const char * orc_target_get_name (OrcTarget *target);
+ORC_API const char * orc_target_get_flag_name (OrcTarget *target, int shift);
 
-void orc_target_register (OrcTarget *target);
-OrcTarget *orc_target_get_by_name (const char *target_name);
+ORC_API const char * orc_target_get_asm_preamble (const char *target);
+ORC_API const char * orc_target_get_preamble (OrcTarget *target);
+ORC_API const char * orc_target_c_get_typedefs (void);
+
+ORC_API void         orc_target_register (OrcTarget *target);
+ORC_API OrcTarget *  orc_target_get_by_name (const char *target_name);
 
 ORC_END_DECLS
 
index 177cd90..a56f520 100644 (file)
@@ -214,6 +214,7 @@ ORC_BEGIN_DECLS
 
 #ifdef ORC_ENABLE_UNSTABLE_API
 
+/* FIXME: remove, these are internal functions that were never exported */
 #if defined(__arm__) || defined(__mips__)
 char * get_proc_cpuinfo (void);
 #endif
@@ -224,8 +225,9 @@ char * get_tag_value (char *s, const char *tag);
 
 orc_int64 _strtoll (const char *nptr, char **endptr, int base);
 
-void orc_global_mutex_lock (void);
-void orc_global_mutex_unlock (void);
+/* FIXME: why are these exported ? */
+ORC_API void orc_global_mutex_lock (void);
+ORC_API void orc_global_mutex_unlock (void);
 
 #endif
 
index f51f544..7f50b67 100644 (file)
@@ -45,16 +45,16 @@ enum {
   ORC_X86_K10
 };
 
-const char * orc_x86_get_regname(int i);
-int orc_x86_get_regnum(int i);
-const char * orc_x86_get_regname_8(int i);
-const char * orc_x86_get_regname_16(int i);
-const char * orc_x86_get_regname_64(int i);
-const char * orc_x86_get_regname_ptr(OrcCompiler *compiler, int i);
-const char * orc_x86_get_regname_size(int i, int size);
+ORC_API const char * orc_x86_get_regname(int i);
+ORC_API int          orc_x86_get_regnum(int i);
+ORC_API const char * orc_x86_get_regname_8(int i);
+ORC_API const char * orc_x86_get_regname_16(int i);
+ORC_API const char * orc_x86_get_regname_64(int i);
+ORC_API const char * orc_x86_get_regname_ptr(OrcCompiler *compiler, int i);
+ORC_API const char * orc_x86_get_regname_size(int i, int size);
 
-void orc_x86_emit_push (OrcCompiler *compiler, int size, int reg);
-void orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg);
+ORC_API void orc_x86_emit_push (OrcCompiler *compiler, int size, int reg);
+ORC_API void orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg);
 
 #define orc_x86_emit_mov_imm_reg(p,size,value,reg) \
   orc_x86_emit_cpuinsn_imm_reg (p, ORC_X86_mov_imm32_r, size, value, reg)
@@ -129,65 +129,66 @@ void orc_x86_emit_pop (OrcCompiler *compiler, int size, int reg);
   orc_x86_emit_cpuinsn_imm_memoffset (p, ORC_X86_test_imm, size, value, \
       offset, dest)
 
-void orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, int reg1, int reg2);
-void orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg2);
-void orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, int offset, int reg);
-void orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, orc_bool record);
-void orc_x86_emit_add_reg_reg_shift (OrcCompiler *compiler, int size, int reg1, int reg2, int shift);
-void orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value,
-    int offset, int reg);
-void orc_x86_emit_cmp_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
-void orc_x86_emit_rep_movs (OrcCompiler *compiler, int size);
-void orc_x86_emit_prologue (OrcCompiler *compiler);
-void orc_x86_emit_epilogue (OrcCompiler *compiler);
-
-void orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3);
-void orc_x86_emit_modrm_memoffset_old (OrcCompiler *compiler, int reg1, int offset, int reg2);
-void orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int offset, int reg1, int reg2);
-void orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2);
-void orc_x86_emit_modrm_memindex (OrcCompiler *compiler, int reg1, int offset,
+ORC_API void orc_x86_emit_mov_memoffset_reg (OrcCompiler *compiler, int size, int offset, int reg1, int reg2);
+ORC_API void orc_x86_emit_mov_reg_memoffset (OrcCompiler *compiler, int size, int reg1, int offset, int reg2);
+ORC_API void orc_x86_emit_dec_memoffset (OrcCompiler *compiler, int size, int offset, int reg);
+ORC_API void orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, orc_bool record);
+ORC_API void orc_x86_emit_add_reg_reg_shift (OrcCompiler *compiler, int size, int reg1, int reg2, int shift);
+ORC_API void orc_x86_emit_cmp_imm_memoffset (OrcCompiler *compiler, int size, int value, int offset, int reg);
+ORC_API void orc_x86_emit_cmp_imm_reg (OrcCompiler *compiler, int size, int value, int reg);
+ORC_API void orc_x86_emit_rep_movs (OrcCompiler *compiler, int size);
+ORC_API void orc_x86_emit_prologue (OrcCompiler *compiler);
+ORC_API void orc_x86_emit_epilogue (OrcCompiler *compiler);
+
+ORC_API void orc_x86_emit_rex (OrcCompiler *compiler, int size, int reg1, int reg2, int reg3);
+ORC_API void orc_x86_emit_modrm_memoffset_old (OrcCompiler *compiler, int reg1, int offset, int reg2);
+ORC_API void orc_x86_emit_modrm_memoffset (OrcCompiler *compiler, int offset, int reg1, int reg2);
+ORC_API void orc_x86_emit_modrm_reg (OrcCompiler *compiler, int reg1, int reg2);
+ORC_API void orc_x86_emit_modrm_memindex (OrcCompiler *compiler, int reg1, int offset,
     int reg2, int regindex, int shift);
-void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset,
+ORC_API void orc_x86_emit_modrm_memindex2 (OrcCompiler *compiler, int offset,
     int src, int src_index, int shift, int dest);
 
+/* FIXME: remove from public header, these were never exported */
 void x86_add_fixup (OrcCompiler *compiler, unsigned char *ptr, int label, int type);
 void x86_add_label (OrcCompiler *compiler, unsigned char *ptr, int label);
 void x86_add_label2 (OrcCompiler *compiler, int index, int label);
-void orc_x86_do_fixups (OrcCompiler *compiler);
 
-int orc_x86_assemble_copy_check (OrcCompiler *compiler);
-void orc_x86_assemble_copy (OrcCompiler *compiler);
+ORC_API void orc_x86_do_fixups (OrcCompiler *compiler);
 
-void orc_x86_emit_cpuinsn_size (OrcCompiler *p, int opcode, int size,
+ORC_API int  orc_x86_assemble_copy_check (OrcCompiler *compiler);
+ORC_API void orc_x86_assemble_copy (OrcCompiler *compiler);
+
+ORC_API void orc_x86_emit_cpuinsn_size (OrcCompiler *p, int opcode, int size,
     int src, int dest);
-void orc_x86_emit_cpuinsn_imm (OrcCompiler *p, int opcode, int imm,
+ORC_API void orc_x86_emit_cpuinsn_imm (OrcCompiler *p, int opcode, int imm,
     int src, int dest);
-void orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler *p, int size, int index,
+ORC_API void orc_x86_emit_cpuinsn_load_memoffset (OrcCompiler *p, int size, int index,
     int offset, int src, int dest, int imm);
-void orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler *p, int size, int index,
+ORC_API void orc_x86_emit_cpuinsn_store_memoffset (OrcCompiler *p, int size, int index,
     int src, int offset, int dest, int imm);
-void orc_x86_emit_cpuinsn_load_memindex (OrcCompiler *p, int index, int size,
+ORC_API void orc_x86_emit_cpuinsn_load_memindex (OrcCompiler *p, int index, int size,
     int imm, int offset, int src, int src_index, int shift, int dest);
-void orc_x86_emit_cpuinsn_load_register (OrcCompiler *p, int index, int imm,
+ORC_API void orc_x86_emit_cpuinsn_load_register (OrcCompiler *p, int index, int imm,
     int src, int dest);
-void orc_x86_emit_cpuinsn_imm_reg (OrcCompiler *p, int index, int size, int imm,
+ORC_API void orc_x86_emit_cpuinsn_imm_reg (OrcCompiler *p, int index, int size, int imm,
     int dest);
-void orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler *p, int index, int size,
+ORC_API void orc_x86_emit_cpuinsn_imm_memoffset (OrcCompiler *p, int index, int size,
     int imm, int offset, int dest);
-void orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src,
+ORC_API void orc_x86_emit_cpuinsn_reg_memoffset (OrcCompiler *p, int index, int src,
     int offset, int dest);
-void orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src,
+ORC_API void orc_x86_emit_cpuinsn_reg_memoffset_8 (OrcCompiler *p, int index, int src,
     int offset, int dest);
-void orc_x86_emit_cpuinsn_reg_memoffset_s (OrcCompiler *p, int index, int size,
+ORC_API void orc_x86_emit_cpuinsn_reg_memoffset_s (OrcCompiler *p, int index, int size,
     int src, int offset, int dest);
-void orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size,
+ORC_API void orc_x86_emit_cpuinsn_memoffset_reg (OrcCompiler *p, int index, int size,
     int offset, int src, int dest);
-void orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size,
+ORC_API void orc_x86_emit_cpuinsn_memoffset (OrcCompiler *p, int index, int size,
     int offset, int srcdest);
-void orc_x86_emit_cpuinsn_branch (OrcCompiler *p, int index, int label);
-void orc_x86_emit_cpuinsn_label (OrcCompiler *p, int index, int label);
-void orc_x86_emit_cpuinsn_none (OrcCompiler *p, int index);
-void orc_x86_emit_cpuinsn_align (OrcCompiler *p, int index, int align_shift);
+ORC_API void orc_x86_emit_cpuinsn_branch (OrcCompiler *p, int index, int label);
+ORC_API void orc_x86_emit_cpuinsn_label (OrcCompiler *p, int index, int label);
+ORC_API void orc_x86_emit_cpuinsn_none (OrcCompiler *p, int index);
+ORC_API void orc_x86_emit_cpuinsn_align (OrcCompiler *p, int index, int align_shift);
 
 #endif
 
index d109c95..544f911 100644 (file)
@@ -2,6 +2,7 @@
 #ifndef ORC_ORC_X86_INSN_H_
 #define ORC_ORC_X86_INSN_H_
 
+#include <orc/orc.h>
 #include <orc/orccpuinsn.h>
 
 ORC_BEGIN_DECLS
@@ -301,9 +302,9 @@ struct _OrcX86Insn {
   int code_offset;
 };
 
-OrcX86Insn * orc_x86_get_output_insn (OrcCompiler *p);
-void orc_x86_output_insns (OrcCompiler *p);
-void orc_x86_calculate_offsets (OrcCompiler *p);
+ORC_API OrcX86Insn * orc_x86_get_output_insn (OrcCompiler *p);
+ORC_API void orc_x86_output_insns (OrcCompiler *p);
+ORC_API void orc_x86_calculate_offsets (OrcCompiler *p);