[hurd,commited] hurd: Avoid PLTs for __mach_thread_self and __mach_reply_port

Message ID 20180613230253.6851-1-samuel.thibault@ens-lyon.org
State New
Headers show
Series
  • [hurd,commited] hurd: Avoid PLTs for __mach_thread_self and __mach_reply_port
Related show

Commit Message

Samuel Thibault June 13, 2018, 11:02 p.m.
* mach/mach/mach_traps.h (__mach_reply_port, __mach_thread_self,
	__mach_task_self, __mach_host_self, __swtch, __swtch_pri,
	__thread_switch, __evc_wait): Move declarations to...
	* sysdeps/mach/include/mach/mach_traps.h: ... new file, and add
	attribute_hidden.
---
 ChangeLog                              |  5 +++++
 mach/mach/mach_traps.h                 |  9 ---------
 sysdeps/mach/include/mach/mach_traps.h | 13 +++++++++++++
 3 files changed, 18 insertions(+), 9 deletions(-)
 create mode 100644 sysdeps/mach/include/mach/mach_traps.h

Comments

Joseph Myers June 14, 2018, 1:39 p.m. | #1
I'm now seeing build failures for i686-gnu, of the form:

/scratch/jmyers/glibc-bot/build/glibcs/i686-gnu/glibc/htl/libpthread_pic.a(pt-barrier-wait.os): In function `pthread_barrier_wait':
/scratch/jmyers/glibc-bot/build/glibcs/i686-gnu/glibc-src/htl/../sysdeps/htl/pt-barrier-wait.c:59: undefined reference to `__mach_thread_self'

Patch

diff --git a/ChangeLog b/ChangeLog
index 7089241ffd..fab0c81ada 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,11 @@ 
 	* sysdeps/mach/hurd/localplt.data (ld.so): Add __open64, rename
 	__libc_read and __libc_write to __read and __write.
 	* sysdeps/hurd/include/hurd/port.h: New file.
+	* mach/mach/mach_traps.h (__mach_reply_port, __mach_thread_self,
+	__mach_task_self, __mach_host_self, __swtch, __swtch_pri,
+	__thread_switch, __evc_wait): Move declarations to...
+	* sysdeps/mach/include/mach/mach_traps.h: ... new file, and add
+	attribute_hidden.
 
 2018-06-13  Joseph Myers  <joseph@codesourcery.com>
 
diff --git a/mach/mach/mach_traps.h b/mach/mach/mach_traps.h
index cefbd2d372..b87ea9e745 100644
--- a/mach/mach/mach_traps.h
+++ b/mach/mach/mach_traps.h
@@ -29,33 +29,27 @@ 
 
 /* Create and return a new receive right.  */
 extern mach_port_t mach_reply_port (void);
-extern mach_port_t __mach_reply_port (void);
 
 /* Return the thread control port for the calling thread.  */
 extern mach_port_t mach_thread_self (void);
-extern mach_port_t __mach_thread_self (void);
 
 /* Return the task control port for the calling task.
    The parens are needed to protect against the macro in <mach_init.h>.  */
 extern mach_port_t (mach_task_self) (void);
-extern mach_port_t (__mach_task_self) (void);
 
 /* Return the host information port for the host of the calling task.
    The parens are needed to protect against the macro in <mach_init.h>.  */
 extern mach_port_t (mach_host_self) (void);
-extern mach_port_t (__mach_host_self) (void);
 
 /* Attempt to context switch the current thread off the processor.  Returns
    true if there are other threads that can be run and false if not.  */
 extern boolean_t swtch (void);
-extern boolean_t __swtch (void);
 
 /* Attempt to context switch the current thread off the processor.  Lower
    the thread's priority as much as possible.  The thread's priority will
    be restored when it runs again.  PRIORITY is currently unused.  Return
    true if there are other threads that can be run and false if not.  */
 extern boolean_t swtch_pri (int priority);
-extern boolean_t __swtch_pri (int priority);
 
 /* Attempt to context switch the current thread off the processor.  Try
    to run NEW_THREAD next, ignoring normal scheduling policies.  The
@@ -66,13 +60,10 @@  extern boolean_t __swtch_pri (int priority);
    swtch_pri.  If OPTION is SWITCH_OPTION_NONE, ignore TIME.  */
 kern_return_t thread_switch (mach_port_t new_thread,
 			     int option, mach_msg_timeout_t option_time);
-kern_return_t __thread_switch (mach_port_t new_thread,
-			     int option, mach_msg_timeout_t option_time);
 
 /* Block the current thread until the kernel (or device) event
    identified by EVENT occurs.  */
 kern_return_t evc_wait (unsigned int event);
-kern_return_t __evc_wait (unsigned int event);
 
 /* Display a null-terminated character string on the Mach console. This
    system call is meant as a debugging tool useful to circumvent messaging
diff --git a/sysdeps/mach/include/mach/mach_traps.h b/sysdeps/mach/include/mach/mach_traps.h
new file mode 100644
index 0000000000..838386243f
--- /dev/null
+++ b/sysdeps/mach/include/mach/mach_traps.h
@@ -0,0 +1,13 @@ 
+#ifndef _MACH_MACH_TRAPS_H
+#include_next <mach/mach_traps.h>
+
+extern mach_port_t __mach_reply_port (void) attribute_hidden;
+extern mach_port_t __mach_thread_self (void) attribute_hidden;
+extern mach_port_t (__mach_task_self) (void) attribute_hidden;
+extern mach_port_t (__mach_host_self) (void) attribute_hidden;
+extern boolean_t __swtch (void) attribute_hidden;
+extern boolean_t __swtch_pri (int priority) attribute_hidden;
+kern_return_t __thread_switch (mach_port_t new_thread,
+			     int option, mach_msg_timeout_t option_time) attribute_hidden;
+kern_return_t __evc_wait (unsigned int event) attribute_hidden;
+#endif