Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / mini / image-writer.h
index 1b12ac4c2d60abaeb7ab0975c7cb58a0a9a605d4..0c34246422e8b90c7c397a1647be7d7b0d962bb0 100644 (file)
@@ -1,5 +1,6 @@
-/*
- * image-writer.h: Creation of object files or assembly files using the same interface.
+/**
+ * \file
+ * Creation of object files or assembly files using the same interface.
  *
  * Author:
  *   Dietmar Maurer (dietmar@ximian.com);
 
 typedef struct _MonoImageWriter MonoImageWriter;
 
+#if defined(TARGET_AMD64) && !defined(HOST_WIN32) && !defined(__APPLE__)
+#define USE_ELF_WRITER 1
+#define USE_ELF_RELA 1
+#endif
+
+#if defined(TARGET_X86) && !defined(HOST_WIN32) && !defined(__APPLE__)
+#define USE_ELF_WRITER 1
+#endif
+
+#if defined(TARGET_ARM) && !defined(TARGET_MACH) && !defined(HOST_WIN32)
+//#define USE_ELF_WRITER 1
+#endif
+
+#if defined(__mips__)
+#define USE_ELF_WRITER 1
+#endif
+
+#if defined(TARGET_X86) && defined(__APPLE__)
+//#define USE_MACH_WRITER
+#endif
+
+#if defined(USE_ELF_WRITER) || defined(USE_MACH_WRITER)
+#define USE_BIN_WRITER 1
+#endif
+
 /* Relocation types */
 #define R_ARM_CALL 28
 #define R_ARM_JUMP24 29
 #define R_ARM_ALU_PC_G0_NC 59
 
-gboolean bin_writer_supported (void) MONO_INTERNAL;
+gboolean mono_bin_writer_supported (void);
+
+MonoImageWriter* mono_img_writer_create (FILE *fp, gboolean use_bin_writer);
+
+void mono_img_writer_destroy (MonoImageWriter *w);
 
-MonoImageWriter* img_writer_create (FILE *fp, gboolean use_bin_writer) MONO_INTERNAL;
+void mono_img_writer_emit_start (MonoImageWriter *w);
 
-void img_writer_destroy (MonoImageWriter *w) MONO_INTERNAL;
+int mono_img_writer_emit_writeout (MonoImageWriter *w);
 
-void img_writer_emit_start (MonoImageWriter *w) MONO_INTERNAL;
+guint8* mono_img_writer_get_output (MonoImageWriter *acfg, guint32 *size);
 
-int img_writer_emit_writeout (MonoImageWriter *w) MONO_INTERNAL;
+void mono_img_writer_emit_section_change (MonoImageWriter *w, const char *section_name, int subsection_index);
 
-guint8* img_writer_get_output (MonoImageWriter *acfg, guint32 *size) MONO_INTERNAL;
+void mono_img_writer_emit_push_section (MonoImageWriter *w, const char *section_name, int subsection);
 
-void img_writer_emit_section_change (MonoImageWriter *w, const char *section_name, int subsection_index) MONO_INTERNAL;
+void mono_img_writer_emit_pop_section (MonoImageWriter *w);
 
-void img_writer_emit_push_section (MonoImageWriter *w, const char *section_name, int subsection) MONO_INTERNAL;
+void mono_img_writer_set_section_addr (MonoImageWriter *acfg, guint64 addr);
 
-void img_writer_emit_pop_section (MonoImageWriter *w) MONO_INTERNAL;
+void mono_img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
 
-void img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func) MONO_INTERNAL;
+void mono_img_writer_emit_local_symbol (MonoImageWriter *w, const char *name, const char *end_label, gboolean func);
 
-void img_writer_emit_local_symbol (MonoImageWriter *w, const char *name, const char *end_label, gboolean func) MONO_INTERNAL;
+void mono_img_writer_emit_symbol_size (MonoImageWriter *w, const char *start, const char *end_label);
 
-void img_writer_emit_symbol_size (MonoImageWriter *w, const char *start, const char *end_label);
+void mono_img_writer_emit_label (MonoImageWriter *w, const char *name);
 
-void img_writer_emit_label (MonoImageWriter *w, const char *name) MONO_INTERNAL;
+void mono_img_writer_emit_bytes (MonoImageWriter *w, const guint8* buf, int size);
 
-void img_writer_emit_bytes (MonoImageWriter *w, const guint8* buf, int size) MONO_INTERNAL;
+void mono_img_writer_emit_string (MonoImageWriter *w, const char *value);
 
-void img_writer_emit_string (MonoImageWriter *w, const char *value) MONO_INTERNAL;
+void mono_img_writer_emit_line (MonoImageWriter *w);
 
-void img_writer_emit_line (MonoImageWriter *w) MONO_INTERNAL;
+void mono_img_writer_emit_alignment (MonoImageWriter *w, int size);
 
-void img_writer_emit_alignment (MonoImageWriter *w, int size) MONO_INTERNAL;
+void mono_img_writer_emit_alignment_fill (MonoImageWriter *w, int size, int fill);
 
-void img_writer_emit_pointer_unaligned (MonoImageWriter *w, const char *target) MONO_INTERNAL;
+void mono_img_writer_emit_pointer_unaligned (MonoImageWriter *w, const char *target);
 
-void img_writer_emit_pointer (MonoImageWriter *w, const char *target) MONO_INTERNAL;
+void mono_img_writer_emit_pointer (MonoImageWriter *w, const char *target);
 
-void img_writer_emit_int16 (MonoImageWriter *w, int value) MONO_INTERNAL;
+void mono_img_writer_emit_int16 (MonoImageWriter *w, int value);
 
-void img_writer_emit_int32 (MonoImageWriter *w, int value) MONO_INTERNAL;
+void mono_img_writer_emit_int32 (MonoImageWriter *w, int value);
 
-void img_writer_emit_symbol_diff (MonoImageWriter *w, const char *end, const char* start, int offset) MONO_INTERNAL;
+void mono_img_writer_emit_symbol_diff (MonoImageWriter *w, const char *end, const char* start, int offset);
 
-void img_writer_emit_zero_bytes (MonoImageWriter *w, int num) MONO_INTERNAL;
+void mono_img_writer_emit_zero_bytes (MonoImageWriter *w, int num);
 
-void img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func) MONO_INTERNAL;
+void mono_img_writer_emit_global (MonoImageWriter *w, const char *name, gboolean func);
 
-void img_writer_emit_byte (MonoImageWriter *w, guint8 val) MONO_INTERNAL;
+void mono_img_writer_emit_byte (MonoImageWriter *w, guint8 val);
 
-void img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend) MONO_INTERNAL;
+void mono_img_writer_emit_reloc (MonoImageWriter *acfg, int reloc_type, const char *symbol, int addend);
 
-void img_writer_emit_unset_mode (MonoImageWriter *acfg) MONO_INTERNAL;
+void mono_img_writer_emit_unset_mode (MonoImageWriter *acfg);
 
-gboolean img_writer_subsections_supported (MonoImageWriter *acfg) MONO_INTERNAL;
+gboolean mono_img_writer_subsections_supported (MonoImageWriter *acfg);
 
-FILE * img_writer_get_fp (MonoImageWriter *acfg) MONO_INTERNAL;
+FILE * mono_img_writer_get_fp (MonoImageWriter *acfg);
 
-const char *img_writer_get_temp_label_prefix (MonoImageWriter *acfg) MONO_INTERNAL;
+const char *mono_img_writer_get_temp_label_prefix (MonoImageWriter *acfg);
 
 #endif