Merge pull request #1652 from debuglevel/bugfix-crosscompile
[mono.git] / mono / mini / image-writer.c
index 62b2b3525a5509a9f2dded8a9443218af17b6711..599c9ef57293119d4eafc0ef5c4a11d68c98ed9b 100644 (file)
 #define USE_ELF_WRITER 1
 #endif
 
-#if defined(TARGET_ARM) && !defined(TARGET_MACH)
+#if defined(TARGET_ARM) && !defined(TARGET_MACH) && !defined(HOST_WIN32)
 #define USE_ELF_WRITER 1
 #endif
 
@@ -1259,7 +1259,6 @@ static int normal_sections [] = { SECT_DATA, SECT_DEBUG_FRAME, SECT_DEBUG_INFO,
 static int
 bin_writer_emit_writeout (MonoImageWriter *acfg)
 {
-       FILE *file;
        ElfHeader header;
        ElfProgHeader progh [4];
        ElfSectHeader secth [SECT_NUM];
@@ -1277,11 +1276,9 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
        ElfSymbol *symtab;
        ElfDynamic dynamic [14];
        int *hash;
-       int i, num_sections, file_offset, virt_offset, size, num_symtab;
+       int i, num_sections, file_offset, virt_offset, size;
        int num_local_syms;
 
-       file = acfg->fp;
-
        /* Section headers */
        memset (&secth, 0, sizeof (secth));
        memset (&dynamic, 0, sizeof (dynamic));
@@ -1305,7 +1302,6 @@ bin_writer_emit_writeout (MonoImageWriter *acfg)
 
        num_sections = collect_sections (acfg, secth, all_sections, 16);
        hash = build_hash (acfg, num_sections, &dyn_str_table);
-       num_symtab = hash [1]; /* FIXME */
 #if 0
        g_print ("num_sections: %d\n", num_sections);
        g_print ("dynsym: %d, dynstr size: %d\n", hash [1], (int)dyn_str_table.data->len);
@@ -1843,6 +1839,19 @@ asm_writer_emit_alignment (MonoImageWriter *acfg, int size)
 #endif
 }
 
+#ifndef USE_BIN_WRITER
+static void 
+asm_writer_emit_alignment_fill (MonoImageWriter *acfg, int size, int fill)
+{
+       asm_writer_emit_unset_mode (acfg);
+#if defined(TARGET_ASM_APPLE)
+       fprintf (acfg->fp, "\t.align %d, 0x%0x\n", ilog2 (size), fill);
+#else
+       asm_writer_emit_alignment (acfg, size);
+#endif
+}
+#endif
+
 #ifdef __native_client_codegen__
 static void
 asm_writer_emit_nacl_call_alignment (MonoImageWriter *acfg) {
@@ -2150,6 +2159,19 @@ img_writer_emit_alignment (MonoImageWriter *acfg, int size)
 #endif
 }
 
+void
+img_writer_emit_alignment_fill (MonoImageWriter *acfg, int size, int fill)
+{
+#ifdef USE_BIN_WRITER
+       if (acfg->use_bin_writer)
+               bin_writer_emit_alignment (acfg, size);
+       else
+               asm_writer_emit_alignment (acfg, size);
+#else
+       asm_writer_emit_alignment_fill (acfg, size, fill);
+#endif
+}
+
 #ifdef __native_client_codegen__
 void
 img_writer_emit_nacl_call_alignment (MonoImageWriter *acfg) {