summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-14 01:01:57 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-14 01:01:57 +0200
commit126b3ec370f0fa8ecbbce27c8c4b621b1ce6f02d (patch)
tree5a81277a130a2712556b825cdd8b89e157401bad
parentc8c6e6d6d0859e5e9b3c6f8b3daa4e6b6e709873 (diff)
downloadglibc-126b3ec370f0fa8ecbbce27c8c4b621b1ce6f02d.tar.gz
hurd: Avoid PLTs for __mach_thread_self and __mach_reply_port
* 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.
-rw-r--r--ChangeLog5
-rw-r--r--mach/mach/mach_traps.h9
-rw-r--r--sysdeps/mach/include/mach/mach_traps.h13
3 files changed, 18 insertions, 9 deletions
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