Move functions from dl-sysdepio.c to here, but mark them weak so
authordrepper <drepper>
Sat, 24 May 1997 02:16:38 +0000 (02:16 +0000)
committerdrepper <drepper>
Sat, 24 May 1997 02:16:38 +0000 (02:16 +0000)
that the regular ones in dl-misc work once we've initialized.

sysdeps/mach/hurd/dl-sysdep.c

index 8d5975c..0f26abe 100644 (file)
@@ -209,6 +209,79 @@ _dl_sysdep_start_cleanup (void)
   __mach_port_deallocate (__mach_task_self (), __mach_task_self_);
 }
 \f
+void
+_dl_sysdep_fatal (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+
+  _exit (127);
+}
+
+
+void
+_dl_sysdep_error (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+}
+
+
+void
+_dl_sysdep_message (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[1], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+}
+\f
+ /* Minimal open/close/mmap implementation sufficient for initial loading of
+    shared libraries.  These are weak definitions so that when the
+    dynamic linker re-relocates itself to be user-visible (for -ldl),
 /* Minimal open/close/mmap implementation sufficient for initial loading of
    shared libraries.  These are weak definitions so that when the
    dynamic linker re-relocates itself to be user-visible (for -ldl),
@@ -493,6 +566,76 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
                  (flags & MAP_SHARED) ? VM_INHERIT_SHARE : VM_INHERIT_COPY);
   if (err == KERN_NO_SPACE && (flags & MAP_FIXED))
     {
+
+void weak_function
+_dl_sysdep_fatal (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+
+  _exit (127);
+}
+
+
+void weak_function
+_dl_sysdep_error (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[2], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+}
+
+
+void weak_function
+_dl_sysdep_message (const char *msg, ...)
+{
+  va_list ap;
+
+  va_start (ap, msg);
+  do
+    {
+      size_t len = strlen (msg);
+      mach_msg_type_number_t nwrote;
+      do
+       {
+         if (__io_write (_hurd_init_dtable[1], msg, len, -1, &nwrote))
+           break;
+         len -= nwrote;
+         msg += nwrote;
+       } while (nwrote > 0);
+      msg = va_arg (ap, const char *);
+    } while (msg);
+  va_end (ap);
+}
       /* XXX this is not atomic as it is in unix! */
       /* The region is already allocated; deallocate it first.  */
       err = __vm_deallocate (__mach_task_self (), mapaddr, len);