]> git.proxmox.com Git - qemu.git/blobdiff - linux-user/main.c
Fix Sparc/Linux host breakage by df70204db53e3611af986f434e74a882bce190ca
[qemu.git] / linux-user / main.c
index 81a1ada50b3b5880a03f3a1585f52667de50f6cc..f3455c5a3ecd3e035fde896eb6aa19eb155b7727 100644 (file)
@@ -48,6 +48,27 @@ int have_guest_base;
 static const char *interp_prefix = CONFIG_QEMU_PREFIX;
 const char *qemu_uname_release = CONFIG_UNAME_RELEASE;
 
+/* for recent libc, we add these dummy symbols which are not declared
+   when generating a linked object (bug in ld ?) */
+#if ((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && \
+     !defined(CONFIG_STATIC)) && !defined(CONFIG_USER_PIE)
+asm(".globl __preinit_array_start\n"
+    ".globl __preinit_array_end\n"
+    ".globl __init_array_start\n"
+    ".globl __init_array_end\n"
+    ".globl __fini_array_start\n"
+    ".globl __fini_array_end\n"
+    ".section \".rodata\"\n"
+    "__preinit_array_start:\n"
+    "__preinit_array_end:\n"
+    "__init_array_start:\n"
+    "__init_array_end:\n"
+    "__fini_array_start:\n"
+    "__fini_array_end:\n"
+    ".long 0\n"
+    ".previous\n");
+#endif
+
 /* XXX: on x86 MAP_GROWSDOWN only works if ESP <= address + 32, so
    we allocate a bigger stack. Need a better solution, for example
    by remapping the process stack directly at the right place */