hurd: Avoid some libc.so PLTs
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 2 Apr 2018 22:07:28 +0000 (22:07 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 2 Apr 2018 22:08:55 +0000 (22:08 +0000)
* hurd/catch-signal.c (hurd_catch_signal): Rename to
__hurd_catch_signal.
(hurd_catch_signal): New strong alias.
(hurd_safe_memset, hurd_safe_copyout, hurd_safe_copyin): Call
__hurd_catch_signal instead of hurd_catch_signal.
* hurd/exc2signal.c (_hurd_exception2signal): Add hidden def.
* hurd/hurdexec.c (_hurd_init): Add hidden def.
* hurd/hurdinit.c (_hurd_init): Add hidden def.
* hurd/hurdsig.c: Include <mach/mig_support.h>.
(_hurd_thread_sigstate): Add hidden def.
(_hurd_internal_post_signal): Use __mutex_unlock instead of
mutex_unlock.
* hurd/intern-fd.c (_hurd_intern_fd): Add hidden def.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Add hidden def.
* hurd/path-lookup.c (hurd_file_name_path_lookup): Rename to
__hurd_file_name_path_lookup.
(hurd_file_name_path_lookup): New strong alias.
(file_name_path_lookup): Call __hurd_file_name_path_lookup instead of
hurd_file_name_path_lookup.
* mach/errstring.c (mach_error_type): Add hidden def.
* mach/msg-destroy.c (__mach_msg_destroy): Add hidden def.
* mach/mutex-init.c (__mutex_init): Add hidden def.
* mach/spin-lock.c (__spin_lock_locked, __spin_lock, __spin_unlock,
__spin_try_lock, __mutex_lock, __mutex_trylock): Add hidden defs.
* mach/spin-solid.c (__spin_lock_solid): Add hidden def.
* sysdeps/mach/hurd/getcwd.c
(_hurd_canonicalize_directory_name_internal): Rename to
__hurd_canonicalize_directory_name_internal.
(_hurd_canonicalize_directory_name_internal): New strong alias.
(__canonicalize_directory_name_internal, __getcwd): Call
__hurd_canonicalize_directory_name_internal instead of
_hurd_canonicalize_directory_name_internal.
* sysdeps/mach/hurd/mig-reply.c: Include <mach/mig_support.h>.
(__mig_get_reply_port, __mig_dealloc_reply_port, __mig_init): Add
hidden defs.
* sysdeps/hurd/include/hurd.h: New file.
* sysdeps/hurd/include/hurd/fd.h: New file.
* sysdeps/hurd/include/hurd/signal.h: New file.
* sysdeps/mach/include/lock-intern.h: New file.
* sysdeps/mach/include/mach.h: New file.
* sysdeps/mach/include/mach/mig_support.h: New file.
* sysdeps/mach/include/mach_error.h: New file.

23 files changed:
ChangeLog
hurd/catch-signal.c
hurd/exc2signal.c
hurd/hurdexec.c
hurd/hurdinit.c
hurd/hurdsig.c
hurd/intern-fd.c
hurd/intr-msg.c
hurd/path-lookup.c
mach/errstring.c
mach/msg-destroy.c
mach/mutex-init.c
mach/spin-lock.c
mach/spin-solid.c
sysdeps/hurd/include/hurd.h [new file with mode: 0644]
sysdeps/hurd/include/hurd/fd.h [new file with mode: 0644]
sysdeps/hurd/include/hurd/signal.h [new file with mode: 0644]
sysdeps/mach/hurd/getcwd.c
sysdeps/mach/hurd/mig-reply.c
sysdeps/mach/include/lock-intern.h [new file with mode: 0644]
sysdeps/mach/include/mach.h [new file with mode: 0644]
sysdeps/mach/include/mach/mig_support.h [new file with mode: 0644]
sysdeps/mach/include/mach_error.h [new file with mode: 0644]

index c0433c9..b0256e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        * sysdeps/unix/clock_nanosleep.c (__clock_nanosleep): Call
        __clock_gettime and __nanosleep instead of clock_gettime and
        nanosleep.
+       * hurd/catch-signal.c (hurd_catch_signal): Rename to
+       __hurd_catch_signal.
+       (hurd_catch_signal): New strong alias.
+       (hurd_safe_memset, hurd_safe_copyout, hurd_safe_copyin): Call
+       __hurd_catch_signal instead of hurd_catch_signal.
+       * hurd/exc2signal.c (_hurd_exception2signal): Add hidden def.
+       * hurd/hurdexec.c (_hurd_init): Add hidden def.
+       * hurd/hurdinit.c (_hurd_init): Add hidden def.
+       * hurd/hurdsig.c: Include <mach/mig_support.h>.
+       (_hurd_thread_sigstate): Add hidden def.
+       (_hurd_internal_post_signal): Use __mutex_unlock instead of
+       mutex_unlock.
+       * hurd/intern-fd.c (_hurd_intern_fd): Add hidden def.
+       * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Add hidden def.
+       * hurd/path-lookup.c (hurd_file_name_path_lookup): Rename to
+       __hurd_file_name_path_lookup.
+       (hurd_file_name_path_lookup): New strong alias.
+       (file_name_path_lookup): Call __hurd_file_name_path_lookup instead of
+       hurd_file_name_path_lookup.
+       * mach/errstring.c (mach_error_type): Add hidden def.
+       * mach/msg-destroy.c (__mach_msg_destroy): Add hidden def.
+       * mach/mutex-init.c (__mutex_init): Add hidden def.
+       * mach/spin-lock.c (__spin_lock_locked, __spin_lock, __spin_unlock,
+       __spin_try_lock, __mutex_lock, __mutex_trylock): Add hidden defs.
+       * mach/spin-solid.c (__spin_lock_solid): Add hidden def.
+       * sysdeps/mach/hurd/getcwd.c
+       (_hurd_canonicalize_directory_name_internal): Rename to
+       __hurd_canonicalize_directory_name_internal.
+       (_hurd_canonicalize_directory_name_internal): New strong alias.
+       (__canonicalize_directory_name_internal, __getcwd): Call
+       __hurd_canonicalize_directory_name_internal instead of
+       _hurd_canonicalize_directory_name_internal.
+       * sysdeps/mach/hurd/mig-reply.c: Include <mach/mig_support.h>.
+       (__mig_get_reply_port, __mig_dealloc_reply_port, __mig_init): Add
+       hidden defs.
+       * sysdeps/hurd/include/hurd.h: New file.
+       * sysdeps/hurd/include/hurd/fd.h: New file.
+       * sysdeps/hurd/include/hurd/signal.h: New file.
+       * sysdeps/mach/include/lock-intern.h: New file.
+       * sysdeps/mach/include/mach.h: New file.
+       * sysdeps/mach/include/mach/mig_support.h: New file.
+       * sysdeps/mach/include/mach_error.h: New file.
 
        * sysdeps/mach/hurd/localplt.data: New file.
 
index b1e3739..56ce865 100644 (file)
 #include <assert.h>
 
 error_t
-hurd_catch_signal (sigset_t sigset,
-                  unsigned long int first, unsigned long int last,
-                  error_t (*operate) (struct hurd_signal_preemptor *),
-                  sighandler_t handler)
+__hurd_catch_signal (sigset_t sigset,
+                    unsigned long int first, unsigned long int last,
+                    error_t (*operate) (struct hurd_signal_preemptor *),
+                    sighandler_t handler)
 {
   /* We need to restore the signal mask, because otherwise the
      signal-handling code will have blocked the caught signal and for
@@ -73,6 +73,7 @@ hurd_catch_signal (sigset_t sigset,
 
   return error;
 }
+strong_alias (__hurd_catch_signal, hurd_catch_signal)
 
 
 error_t
@@ -83,9 +84,9 @@ hurd_safe_memset (void *dest, int byte, size_t nbytes)
       memset (dest, byte, nbytes);
       return 0;
     }
-  return hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
-                           (vm_address_t) dest, (vm_address_t) dest + nbytes,
-                           &operate, SIG_ERR);
+  return __hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
+                             (vm_address_t) dest, (vm_address_t) dest + nbytes,
+                             &operate, SIG_ERR);
 }
 
 
@@ -97,9 +98,9 @@ hurd_safe_copyout (void *dest, const void *src, size_t nbytes)
       memcpy (dest, src, nbytes);
       return 0;
     }
-  return hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
-                           (vm_address_t) dest, (vm_address_t) dest + nbytes,
-                           &operate, SIG_ERR);
+  return __hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
+                             (vm_address_t) dest, (vm_address_t) dest + nbytes,
+                             &operate, SIG_ERR);
 }
 
 error_t
@@ -110,9 +111,9 @@ hurd_safe_copyin (void *dest, const void *src, size_t nbytes)
       memcpy (dest, src, nbytes);
       return 0;
     }
-  return hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
-                           (vm_address_t) src, (vm_address_t) src + nbytes,
-                           &operate, SIG_ERR);
+  return __hurd_catch_signal (sigmask (SIGBUS) | sigmask (SIGSEGV),
+                             (vm_address_t) src, (vm_address_t) src + nbytes,
+                             &operate, SIG_ERR);
 }
 
 error_t
index 73abb93..10aa1ca 100644 (file)
@@ -68,3 +68,4 @@ _hurd_exception2signal (struct hurd_signal_detail *detail, int *signo)
       break;
     }
 }
+libc_hidden_def (_hurd_exception2signal)
index 027fa5a..732c9ec 100644 (file)
@@ -435,3 +435,4 @@ _hurd_exec_paths (task_t task, file_t file,
   free (env);
   return err;
 }
+libc_hidden_def (_hurd_exec_paths)
index cc018a4..6af1ddf 100644 (file)
@@ -110,6 +110,7 @@ _hurd_init (int flags, char **argv,
      assume the availability of the POSIX.1 services we provide.  */
   RUN_HOOK (_hurd_subinit, ());
 }
+libc_hidden_def (_hurd_init)
 \f
 #include <hurd/signal.h>
 
index 101dd76..31e8d33 100644 (file)
@@ -23,6 +23,7 @@
 #include <pthreadP.h>
 #include <mach.h>
 #include <mach/thread_switch.h>
+#include <mach/mig_support.h>
 
 #include <hurd.h>
 #include <hurd/id.h>
@@ -120,6 +121,7 @@ _hurd_thread_sigstate (thread_t thread)
   __mutex_unlock (&_hurd_siglock);
   return ss;
 }
+libc_hidden_def (_hurd_thread_sigstate)
 \f
 /* Signal delivery itself is on this page.  */
 
@@ -1018,7 +1020,7 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
                      || ss->actions[signo].sa_handler == SIG_IGN
                      || ss->actions[signo].sa_handler == SIG_DFL))
                {
-                 mutex_unlock (&_hurd_siglock);
+                 __mutex_unlock (&_hurd_siglock);
                  goto deliver_pending;
                }
            __spin_unlock (&ss->lock);
index 970800f..3b00824 100644 (file)
@@ -47,3 +47,4 @@ _hurd_intern_fd (io_t port, int flags, int dealloc)
 
   return fd;
 }
+libc_hidden_def (_hurd_intern_fd)
index 5495edc..2f83ac6 100644 (file)
@@ -422,3 +422,4 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
 
   return err;
 }
+libc_hidden_def (_hurd_intr_rpc_mach_msg)
index 389a8cc..5607d58 100644 (file)
@@ -87,16 +87,16 @@ file_name_path_scan (const char *file_name, const char *path,
    if it is looked up using a prefix from PATH, *PREFIXED_NAME is set to
    malloced storage containing the prefixed name.  */
 error_t
-hurd_file_name_path_lookup (error_t (*use_init_port)
-                             (int which, error_t (*operate) (mach_port_t)),
-                           file_t (*get_dtable_port) (int fd),
-                           error_t (*lookup)
-                             (file_t dir, const char *name, int flags, mode_t mode,
-                              retry_type *do_retry, string_t retry_name,
-                              mach_port_t *result),
-                           const char *file_name, const char *path,
-                           int flags, mode_t mode,
-                           file_t *result, char **prefixed_name)
+__hurd_file_name_path_lookup (error_t (*use_init_port)
+                               (int which, error_t (*operate) (mach_port_t)),
+                             file_t (*get_dtable_port) (int fd),
+                             error_t (*lookup)
+                               (file_t dir, const char *name, int flags, mode_t mode,
+                                retry_type *do_retry, string_t retry_name,
+                                mach_port_t *result),
+                             const char *file_name, const char *path,
+                             int flags, mode_t mode,
+                             file_t *result, char **prefixed_name)
 {
   error_t scan_lookup (const char *name)
     {
@@ -106,6 +106,7 @@ hurd_file_name_path_lookup (error_t (*use_init_port)
     }
   return file_name_path_scan (file_name, path, scan_lookup, prefixed_name);
 }
+strong_alias (__hurd_file_name_path_lookup, hurd_file_name_path_lookup)
 
 file_t
 file_name_path_lookup (const char *file_name, const char *path,
@@ -114,9 +115,9 @@ file_name_path_lookup (const char *file_name, const char *path,
   error_t err;
   file_t result;
 
-  err = hurd_file_name_path_lookup (&_hurd_ports_use, &__getdport, 0,
-                                   file_name, path, flags, mode,
-                                   &result, prefixed_name);
+  err = __hurd_file_name_path_lookup (&_hurd_ports_use, &__getdport, 0,
+                                     file_name, path, flags, mode,
+                                     &result, prefixed_name);
 
   return err ? (__hurd_fail (err), MACH_PORT_NULL) : result;
 }
index c00b02c..3e665e6 100644 (file)
@@ -59,6 +59,7 @@ mach_error_type(mach_error_t err)
        ||  sub >= errors[system].max_sub ) return( "(?/?)" );
        return( errors[system].subsystem[sub].subsys_name );
 }
+libc_hidden_def (mach_error_type)
 
 boolean_t mach_error_full_diag = FALSE;
 
index bc7dd55..7429ecb 100644 (file)
@@ -189,6 +189,7 @@ __mach_msg_destroy (mach_msg_header_t *msg)
 }
 
 weak_alias (__mach_msg_destroy, mach_msg_destroy)
+libc_hidden_def (__mach_msg_destroy)
 
 static void
 mach_msg_destroy_port (mach_port_t port, mach_msg_type_name_t type)
index 776fec5..a8f238c 100644 (file)
@@ -24,3 +24,4 @@ __mutex_init (void *lock)
 {
   *(int *)lock = LLL_INITIALIZER;
 }
+libc_hidden_def (__mutex_init)
index 1b1e69c..888eb9d 100644 (file)
@@ -3,7 +3,13 @@
 #include "spin-lock.h"
 
 weak_alias (__spin_lock_init, spin_lock_init);
+libc_hidden_def (__spin_lock_locked);
 weak_alias (__spin_lock_locked, spin_lock_locked);
+libc_hidden_def (__spin_lock);
 weak_alias (__spin_lock, spin_lock);
+libc_hidden_def (__spin_unlock);
 weak_alias (__spin_unlock, spin_unlock);
+libc_hidden_def (__spin_try_lock);
 weak_alias (__spin_try_lock, spin_try_lock);
+libc_hidden_def (__mutex_lock);
+libc_hidden_def (__mutex_trylock);
index 6612885..db1bcd0 100644 (file)
@@ -26,3 +26,4 @@ __spin_lock_solid (spin_lock_t *lock)
     __swtch_pri (0);
 }
 weak_alias (__spin_lock_solid, spin_lock_solid);
+libc_hidden_def (__spin_lock_solid)
diff --git a/sysdeps/hurd/include/hurd.h b/sysdeps/hurd/include/hurd.h
new file mode 100644 (file)
index 0000000..f740e9d
--- /dev/null
@@ -0,0 +1,5 @@
+#ifndef        _HURD_H
+#include_next <hurd.h>
+libc_hidden_proto (_hurd_exec_paths)
+libc_hidden_proto (_hurd_init)
+#endif
diff --git a/sysdeps/hurd/include/hurd/fd.h b/sysdeps/hurd/include/hurd/fd.h
new file mode 100644 (file)
index 0000000..b22f0c5
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef        _HURD_FD_H
+#include_next <hurd/fd.h>
+libc_hidden_proto (_hurd_intern_fd)
+#endif
diff --git a/sysdeps/hurd/include/hurd/signal.h b/sysdeps/hurd/include/hurd/signal.h
new file mode 100644 (file)
index 0000000..fbd01bb
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef        _HURD_SIGNAL_H
+#include_next <hurd/signal.h>
+libc_hidden_proto (_hurd_exception2signal)
+libc_hidden_proto (_hurd_intr_rpc_mach_msg)
+libc_hidden_proto (_hurd_thread_sigstate)
+#endif
index f6ca3dd..c30b7c5 100644 (file)
@@ -37,7 +37,7 @@
    a slash to indicate that it is relative to some unknown root directory.  */
 
 char *
-_hurd_canonicalize_directory_name_internal (file_t thisdir,
+__hurd_canonicalize_directory_name_internal (file_t thisdir,
                                            char *buf,
                                            size_t size)
 {
@@ -282,6 +282,7 @@ _hurd_canonicalize_directory_name_internal (file_t thisdir,
   cleanup ();
   return NULL;
 }
+strong_alias (__hurd_canonicalize_directory_name_internal, _hurd_canonicalize_directory_name_internal)
 
 char *
 __canonicalize_directory_name_internal (const char *thisdir, char *buf,
@@ -291,7 +292,7 @@ __canonicalize_directory_name_internal (const char *thisdir, char *buf,
   file_t port = __file_name_lookup (thisdir, 0, 0);
   if (port == MACH_PORT_NULL)
     return NULL;
-  result = _hurd_canonicalize_directory_name_internal (port, buf, size);
+  result = __hurd_canonicalize_directory_name_internal (port, buf, size);
   __mach_port_deallocate (__mach_task_self (), port);
   return result;
 }
@@ -306,8 +307,8 @@ __getcwd (char *buf, size_t size)
 {
   char *cwd =
     __USEPORT (CWDIR,
-              _hurd_canonicalize_directory_name_internal (port,
-                                                          buf, size));
+              __hurd_canonicalize_directory_name_internal (port,
+                                                           buf, size));
   if (cwd && cwd[0] != '/')
     {
       /* `cwd' is an unknown root directory.  */
index ddad12e..8350354 100644 (file)
@@ -16,6 +16,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <mach.h>
+#include <mach/mig_support.h>
 #include <hurd/threadvar.h>
 
 /* These functions are called by MiG-generated code.  */
@@ -34,6 +35,7 @@ __mig_get_reply_port (void)
   return __hurd_local_reply_port;
 }
 weak_alias (__mig_get_reply_port, mig_get_reply_port)
+libc_hidden_def (__mig_get_reply_port)
 
 /* Called by MiG to deallocate the reply port.  */
 void
@@ -47,6 +49,7 @@ __mig_dealloc_reply_port (mach_port_t arg)
                          MACH_PORT_RIGHT_RECEIVE, -1);
 }
 weak_alias (__mig_dealloc_reply_port, mig_dealloc_reply_port)
+libc_hidden_def (__mig_dealloc_reply_port)
 
 /* Called by mig interfaces when done with a port.  Used to provide the
    same interface as needed when a custom allocator is used.  */
@@ -66,3 +69,4 @@ __mig_init (void *stack)
   /* Do nothing.  */
 }
 weak_alias (__mig_init, mig_init)
+libc_hidden_def (__mig_init)
diff --git a/sysdeps/mach/include/lock-intern.h b/sysdeps/mach/include/lock-intern.h
new file mode 100644 (file)
index 0000000..d0767ab
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _LOCK_INTERN_H
+#include <mach/lock-intern.h>
+libc_hidden_proto (__spin_lock_locked)
+libc_hidden_proto (__spin_lock)
+libc_hidden_proto (__spin_lock_solid)
+libc_hidden_proto (__spin_unlock)
+libc_hidden_proto (__spin_try_lock)
+libc_hidden_proto (__mutex_init)
+libc_hidden_proto (__mutex_lock)
+libc_hidden_proto (__mutex_unlock)
+libc_hidden_proto (__mutex_trylock)
+#endif
diff --git a/sysdeps/mach/include/mach.h b/sysdeps/mach/include/mach.h
new file mode 100644 (file)
index 0000000..1f77100
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef        _MACH_H
+#include_next <mach.h>
+libc_hidden_proto (__mach_msg_destroy)
+#endif
diff --git a/sysdeps/mach/include/mach/mig_support.h b/sysdeps/mach/include/mach/mig_support.h
new file mode 100644 (file)
index 0000000..7b9015d
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _MACH_MIG_SUPPORT_H
+#include_next <mach/mig_support.h>
+libc_hidden_proto (__mig_get_reply_port)
+libc_hidden_proto (__mig_dealloc_reply_port)
+libc_hidden_proto (__mig_init)
+#endif
diff --git a/sysdeps/mach/include/mach_error.h b/sysdeps/mach/include/mach_error.h
new file mode 100644 (file)
index 0000000..91463eb
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef        _MACH_ERROR_
+#include_next <mach_error.h>
+libc_hidden_proto (mach_error_type)
+#endif