* [hurd,commited] hurd: Avoid some PLTs in libc and librt
@ 2018-04-02 19:09 Samuel Thibault
2018-04-02 19:37 ` Florian Weimer
2018-04-03 0:17 ` Joseph Myers
0 siblings, 2 replies; 3+ messages in thread
From: Samuel Thibault @ 2018-04-02 19:09 UTC (permalink / raw)
To: libc-alpha; +Cc: Samuel Thibault
* hurd/hurdauth.c (_S_msg_add_auth): Call __vm_allocate and
__vm_deallocate instead of vm_allocate and vm_deallocate.
* hurd/hurdmsg.c (_S_msg_set_env_variable): Call __setenv instead of
setenv.
* hurd/hurdprio.c (_hurd_priority_which_map): Call __geteuid instead
of geteuid.
* hurd/path-lookup.c (file_name_path_scan): Call __strdup instead of
strdup.
* hurd/siginfo.c: Include <libioP.h>.
(_hurd_siginfo_handler): Call _IO_puts instead of puts.
* hurd/xattr.c (_hurd_xattr_get, _hurd_xattr_set): Call __munmap instead of
munmap.
* io/fts.c (fts_build): Call __dirfd instead of dirfd.
* mach/devstream.c: Include <libioP.h>.
(dealloc_ref): Call __mach_port_deallocate instead of
mach_port_deallocate.
(mach_open_devstream): Call _IO_fopencookie instead of fopencookie.
Call __mach_port_deallocate instead of mach_port_deallocate.
* stdlib/canonicalize.c (__realpath): Call __pathconf instead of
pathconf.
* sysdeps/mach/hurd/ifreq.c (__ifreq): Call __munmap instead of
munmap.
* sysdeps/mach/hurd/ifreq.h (__if_freereq): Likewise.
* sysdeps/mach/hurd/ptrace.c (ptrace): Call __kill instead of kill.
* sysdeps/mach/hurd/sendfile64.c (sendfile64): Call __munmap instead
of munmap.
* sysdeps/mach/hurd/socketpair.c (__socketpair): Call __close instead
of close.
* sysdeps/posix/clock_getres.c (realtime_getres): Call __sysconf
instead of sysconf.
* sysdeps/pthread/timer_gettime.c (timer_gettime): Call
__clock_gettime instead of clock_gettime.
* sysdeps/pthread/timer_routines.c (thread_func): Likewise.
* sysdeps/pthread/timer_settime.c (timer_settime): Likewise.
* sysdeps/unix/bsd/gtty.c (gtty): Call __ioctl instead of ioctl.
* sysdeps/unix/bsd/stty.c (stty): Likewise.
* sysdeps/unix/bsd/tcflow.c (tcflow): Call __tcgetattr instead of
tcgetattr.
* sysdeps/unix/clock_nanosleep.c (__clock_nanosleep): Call
__clock_gettime and __nanosleep instead of clock_gettime and
nanosleep.
---
ChangeLog | 42 ++++++++++++++++++++++++++++++++++++++++
hurd/hurdauth.c | 16 +++++++--------
hurd/hurdmsg.c | 2 +-
hurd/hurdprio.c | 2 +-
hurd/path-lookup.c | 2 +-
hurd/siginfo.c | 3 ++-
hurd/xattr.c | 6 +++---
io/fts.c | 2 +-
mach/devstream.c | 13 +++++++------
stdlib/canonicalize.c | 2 +-
sysdeps/mach/hurd/ifreq.c | 2 +-
sysdeps/mach/hurd/ifreq.h | 2 +-
sysdeps/mach/hurd/ptrace.c | 2 +-
sysdeps/mach/hurd/sendfile64.c | 2 +-
sysdeps/mach/hurd/socketpair.c | 2 +-
sysdeps/posix/clock_getres.c | 2 +-
sysdeps/pthread/timer_gettime.c | 2 +-
sysdeps/pthread/timer_routines.c | 2 +-
sysdeps/pthread/timer_settime.c | 4 ++--
sysdeps/unix/bsd/gtty.c | 2 +-
sysdeps/unix/bsd/stty.c | 2 +-
sysdeps/unix/bsd/tcflow.c | 2 +-
sysdeps/unix/clock_nanosleep.c | 4 ++--
23 files changed, 82 insertions(+), 38 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index b3d009b858..e63f9878e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -305,6 +305,48 @@
(_init_routine): Call __pthread_attr_init and __pthread_attr_setstack
instead of pthread_attr_init and pthread_attr_setstack.
+ * hurd/hurdauth.c (_S_msg_add_auth): Call __vm_allocate and
+ __vm_deallocate instead of vm_allocate and vm_deallocate.
+ * hurd/hurdmsg.c (_S_msg_set_env_variable): Call __setenv instead of
+ setenv.
+ * hurd/hurdprio.c (_hurd_priority_which_map): Call __geteuid instead
+ of geteuid.
+ * hurd/path-lookup.c (file_name_path_scan): Call __strdup instead of
+ strdup.
+ * hurd/siginfo.c: Include <libioP.h>.
+ (_hurd_siginfo_handler): Call _IO_puts instead of puts.
+ * hurd/xattr.c (_hurd_xattr_get, _hurd_xattr_set): Call __munmap instead of
+ munmap.
+ * io/fts.c (fts_build): Call __dirfd instead of dirfd.
+ * mach/devstream.c: Include <libioP.h>.
+ (dealloc_ref): Call __mach_port_deallocate instead of
+ mach_port_deallocate.
+ (mach_open_devstream): Call _IO_fopencookie instead of fopencookie.
+ Call __mach_port_deallocate instead of mach_port_deallocate.
+ * stdlib/canonicalize.c (__realpath): Call __pathconf instead of
+ pathconf.
+ * sysdeps/mach/hurd/ifreq.c (__ifreq): Call __munmap instead of
+ munmap.
+ * sysdeps/mach/hurd/ifreq.h (__if_freereq): Likewise.
+ * sysdeps/mach/hurd/ptrace.c (ptrace): Call __kill instead of kill.
+ * sysdeps/mach/hurd/sendfile64.c (sendfile64): Call __munmap instead
+ of munmap.
+ * sysdeps/mach/hurd/socketpair.c (__socketpair): Call __close instead
+ of close.
+ * sysdeps/posix/clock_getres.c (realtime_getres): Call __sysconf
+ instead of sysconf.
+ * sysdeps/pthread/timer_gettime.c (timer_gettime): Call
+ __clock_gettime instead of clock_gettime.
+ * sysdeps/pthread/timer_routines.c (thread_func): Likewise.
+ * sysdeps/pthread/timer_settime.c (timer_settime): Likewise.
+ * sysdeps/unix/bsd/gtty.c (gtty): Call __ioctl instead of ioctl.
+ * sysdeps/unix/bsd/stty.c (stty): Likewise.
+ * sysdeps/unix/bsd/tcflow.c (tcflow): Call __tcgetattr instead of
+ tcgetattr.
+ * sysdeps/unix/clock_nanosleep.c (__clock_nanosleep): Call
+ __clock_gettime and __nanosleep instead of clock_gettime and
+ nanosleep.
+
2018-04-02 Agustina Arzille <avarzille@riseup.net>
Amos Jeffries <squid3@treenet.co.nz>
David Michael <fedora.dm0@gmail.com>
diff --git a/hurd/hurdauth.c b/hurd/hurdauth.c
index ad315a27b7..1a7e67ea0e 100644
--- a/hurd/hurdauth.c
+++ b/hurd/hurdauth.c
@@ -52,8 +52,8 @@ _S_msg_add_auth (mach_port_t me,
int i, j, k;
vm_size_t offset;
- urp = vm_allocate (mach_task_self (), (vm_address_t *) newlistp,
- nexist + nnew * sizeof (uid_t), 1);
+ urp = __vm_allocate (mach_task_self (), (vm_address_t *) newlistp,
+ nexist + nnew * sizeof (uid_t), 1);
if (urp)
return urp;
@@ -75,10 +75,10 @@ _S_msg_add_auth (mach_port_t me,
offset = (round_page (nexist + nnew * sizeof (uid_t))
- round_page (j * sizeof (uid_t)));
if (offset)
- vm_deallocate (mach_task_self (),
- (vm_address_t) (*newlistp
- + (nexist + nnew * sizeof (uid_t))),
- offset);
+ __vm_deallocate (mach_task_self (),
+ (vm_address_t) (*newlistp
+ + (nexist + nnew * sizeof (uid_t))),
+ offset);
*newlistlen = j;
return 0;
}
@@ -136,8 +136,8 @@ _S_msg_add_auth (mach_port_t me,
#define freeup(array, len) \
if (array) \
- vm_deallocate (mach_task_self (), (vm_address_t) array, \
- len * sizeof (uid_t));
+ __vm_deallocate (mach_task_self (), (vm_address_t) array, \
+ len * sizeof (uid_t));
freeup (genuids, ngenuids);
freeup (auxuids, nauxuids);
diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c
index 5759af3411..63e5e81b87 100644
--- a/hurd/hurdmsg.c
+++ b/hurd/hurdmsg.c
@@ -344,7 +344,7 @@ _S_msg_set_env_variable (mach_port_t msgport, mach_port_t auth,
{
AUTHCHECK;
- if (setenv (variable, value, replace)) /* XXX name space */
+ if (__setenv (variable, value, replace)) /* XXX name space */
return errno;
return 0;
}
diff --git a/hurd/hurdprio.c b/hurd/hurdprio.c
index 5ff84b6f56..3783fe9397 100644
--- a/hurd/hurdprio.c
+++ b/hurd/hurdprio.c
@@ -50,7 +50,7 @@ _hurd_priority_which_map (enum __priority_which which, int who,
case PRIO_USER:
if (who == 0)
- who = geteuid ();
+ who = __geteuid ();
err = __USEPORT (PROC, __proc_getallpids (port, &pids, &npids));
for (i = 0; !err && i < npids; ++i)
{
diff --git a/hurd/path-lookup.c b/hurd/path-lookup.c
index d3906e1c9b..389a8ccd1b 100644
--- a/hurd/path-lookup.c
+++ b/hurd/path-lookup.c
@@ -63,7 +63,7 @@ file_name_path_scan (const char *file_name, const char *path,
if (err == 0)
{
if (prefixed_name)
- *prefixed_name = strdup (pfxed_name);
+ *prefixed_name = __strdup (pfxed_name);
return 0;
}
if (!real_err && err != ENOENT)
diff --git a/hurd/siginfo.c b/hurd/siginfo.c
index 65d8e4882e..75e02d5282 100644
--- a/hurd/siginfo.c
+++ b/hurd/siginfo.c
@@ -17,10 +17,11 @@
#include <hurd/signal.h>
#include <stdio.h>
+#include <libioP.h>
void
_hurd_siginfo_handler (int signo)
{
/* XXX */
- puts ("got a SIGINFO");
+ _IO_puts ("got a SIGINFO");
}
diff --git a/hurd/xattr.c b/hurd/xattr.c
index c56bab07cb..23d9fcb691 100644
--- a/hurd/xattr.c
+++ b/hurd/xattr.c
@@ -67,14 +67,14 @@ _hurd_xattr_get (io_t port, const char *name, void *value, size_t *size)
if (value != NULL && *size < bufsz)
{
if (buf != value)
- munmap (buf, bufsz);
+ __munmap (buf, bufsz);
return -ERANGE;
}
if (buf != value && bufsz > 0)
{
if (value != NULL)
memcpy (value, buf, bufsz);
- munmap (buf, bufsz);
+ __munmap (buf, bufsz);
}
*size = bufsz;
return 0;
@@ -150,7 +150,7 @@ _hurd_xattr_set (io_t port, const char *name, const void *value, size_t size,
return err;
if (bufsz > 0)
{
- munmap (buf, bufsz);
+ __munmap (buf, bufsz);
return ENODATA;
}
}
diff --git a/io/fts.c b/io/fts.c
index ad9d333f45..a30491c230 100644
--- a/io/fts.c
+++ b/io/fts.c
@@ -680,7 +680,7 @@ fts_build (FTSOBJ *sp, int type)
*/
cderrno = 0;
if (nlinks || type == BREAD) {
- if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) {
+ if (fts_safe_changedir(sp, cur, __dirfd(dirp), NULL)) {
if (nlinks && type == BREAD)
cur->fts_errno = errno;
cur->fts_flags |= FTS_DONTCHDIR;
diff --git a/mach/devstream.c b/mach/devstream.c
index 21d9f7bda3..505b6573ae 100644
--- a/mach/devstream.c
+++ b/mach/devstream.c
@@ -22,6 +22,7 @@
#include <device/device.h>
#include <errno.h>
#include <string.h>
+#include <libioP.h>
static ssize_t
@@ -111,7 +112,7 @@ devstream_read (void *cookie, char *buffer, size_t to_read)
static int
dealloc_ref (void *cookie)
{
- if (mach_port_deallocate (mach_task_self (), (mach_port_t) cookie))
+ if (__mach_port_deallocate (mach_task_self (), (mach_port_t) cookie))
{
errno = EINVAL;
return -1;
@@ -130,13 +131,13 @@ mach_open_devstream (mach_port_t dev, const char *mode)
return NULL;
}
- stream = fopencookie ((void *) dev, mode,
- (cookie_io_functions_t) { write: devstream_write,
- read: devstream_read,
- close: dealloc_ref });
+ stream = _IO_fopencookie ((void *) dev, mode,
+ (cookie_io_functions_t) { write: devstream_write,
+ read: devstream_read,
+ close: dealloc_ref });
if (stream == NULL)
{
- mach_port_deallocate (mach_task_self (), dev);
+ __mach_port_deallocate (mach_task_self (), dev);
return NULL;
}
diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
index 30825a91b8..4135f3f33c 100644
--- a/stdlib/canonicalize.c
+++ b/stdlib/canonicalize.c
@@ -68,7 +68,7 @@ __realpath (const char *name, char *resolved)
#ifdef PATH_MAX
path_max = PATH_MAX;
#else
- path_max = pathconf (name, _PC_PATH_MAX);
+ path_max = __pathconf (name, _PC_PATH_MAX);
if (path_max <= 0)
path_max = 1024;
#endif
diff --git a/sysdeps/mach/hurd/ifreq.c b/sysdeps/mach/hurd/ifreq.c
index 10877824b2..70a906a83a 100644
--- a/sysdeps/mach/hurd/ifreq.c
+++ b/sysdeps/mach/hurd/ifreq.c
@@ -53,7 +53,7 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
if (len % sizeof (struct ifreq) != 0)
{
- munmap (data, len);
+ __munmap (data, len);
errno = EGRATUITOUS;
goto out;
}
diff --git a/sysdeps/mach/hurd/ifreq.h b/sysdeps/mach/hurd/ifreq.h
index 3c200664ee..3ab8d858b6 100644
--- a/sysdeps/mach/hurd/ifreq.h
+++ b/sysdeps/mach/hurd/ifreq.h
@@ -28,5 +28,5 @@
static inline void
__if_freereq (struct ifreq *ifreqs, int num_ifs)
{
- munmap (ifreqs, num_ifs * sizeof (struct ifreq));
+ __munmap (ifreqs, num_ifs * sizeof (struct ifreq));
}
diff --git a/sysdeps/mach/hurd/ptrace.c b/sysdeps/mach/hurd/ptrace.c
index ac3059bb90..d0268a3f98 100644
--- a/sysdeps/mach/hurd/ptrace.c
+++ b/sysdeps/mach/hurd/ptrace.c
@@ -155,7 +155,7 @@ ptrace (enum __ptrace_request request, ... )
va_end (ap);
/* SIGKILL always just terminates the task,
so normal kill is just the same when traced. */
- return kill (pid, SIGKILL);
+ return __kill (pid, SIGKILL);
case PTRACE_SINGLESTEP:
/* This is a machine-dependent kernel RPC on
diff --git a/sysdeps/mach/hurd/sendfile64.c b/sysdeps/mach/hurd/sendfile64.c
index dfd9c45daf..f69ccd4a79 100644
--- a/sysdeps/mach/hurd/sendfile64.c
+++ b/sysdeps/mach/hurd/sendfile64.c
@@ -47,7 +47,7 @@ sendfile64 (int out_fd, int in_fd, off64_t *offset, size_t count)
return 0;
err = HURD_DPORT_USE (out_fd, __io_write (port, data, datalen,
(off_t) -1, &nwrote));
- munmap (data, datalen);
+ __munmap (data, datalen);
if (err == 0)
{
if (offset)
diff --git a/sysdeps/mach/hurd/socketpair.c b/sysdeps/mach/hurd/socketpair.c
index 85e0f7400b..3b18c676c0 100644
--- a/sysdeps/mach/hurd/socketpair.c
+++ b/sysdeps/mach/hurd/socketpair.c
@@ -82,7 +82,7 @@ __socketpair (int domain, int type, int protocol, int fds[2])
if (d2 < 0)
{
err = errno;
- (void) close (d1);
+ (void) __close (d1);
return __hurd_fail (err);
}
diff --git a/sysdeps/posix/clock_getres.c b/sysdeps/posix/clock_getres.c
index 8bc7e813e6..e7924e0891 100644
--- a/sysdeps/posix/clock_getres.c
+++ b/sysdeps/posix/clock_getres.c
@@ -58,7 +58,7 @@ hp_timing_getres (struct timespec *res)
static inline int
realtime_getres (struct timespec *res)
{
- long int clk_tck = sysconf (_SC_CLK_TCK);
+ long int clk_tck = __sysconf (_SC_CLK_TCK);
if (__glibc_likely (clk_tck != -1))
{
diff --git a/sysdeps/pthread/timer_gettime.c b/sysdeps/pthread/timer_gettime.c
index ef3019fa59..f5f060afec 100644
--- a/sysdeps/pthread/timer_gettime.c
+++ b/sysdeps/pthread/timer_gettime.c
@@ -50,7 +50,7 @@ timer_gettime (timer_t timerid, struct itimerspec *value)
{
if (armed)
{
- clock_gettime (clock, &now);
+ __clock_gettime (clock, &now);
if (timespec_compare (&now, &expiry) < 0)
timespec_sub (&value->it_value, &expiry, &now);
else
diff --git a/sysdeps/pthread/timer_routines.c b/sysdeps/pthread/timer_routines.c
index 25ccfadd7e..c12246792b 100644
--- a/sysdeps/pthread/timer_routines.c
+++ b/sysdeps/pthread/timer_routines.c
@@ -376,7 +376,7 @@ thread_func (void *arg)
/* This assumes that the elements of the list of one thread
are all for the same clock. */
- clock_gettime (timer->clock, &now);
+ __clock_gettime (timer->clock, &now);
while (1)
{
diff --git a/sysdeps/pthread/timer_settime.c b/sysdeps/pthread/timer_settime.c
index 5c541acb77..8a71a506f8 100644
--- a/sysdeps/pthread/timer_settime.c
+++ b/sysdeps/pthread/timer_settime.c
@@ -55,7 +55,7 @@ timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
if ((flags & TIMER_ABSTIME) == 0)
{
- clock_gettime (timer->clock, &now);
+ __clock_gettime (timer->clock, &now);
have_now = 1;
}
@@ -80,7 +80,7 @@ timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
if (! have_now)
{
pthread_mutex_unlock (&__timer_mutex);
- clock_gettime (timer->clock, &now);
+ __clock_gettime (timer->clock, &now);
have_now = 1;
pthread_mutex_lock (&__timer_mutex);
timer_addref (timer);
diff --git a/sysdeps/unix/bsd/gtty.c b/sysdeps/unix/bsd/gtty.c
index 830de6d96c..77e2a7268c 100644
--- a/sysdeps/unix/bsd/gtty.c
+++ b/sysdeps/unix/bsd/gtty.c
@@ -22,5 +22,5 @@
int
gtty (int fd, struct sgttyb *params)
{
- return ioctl (fd, TIOCGETP, (void *) params);
+ return __ioctl (fd, TIOCGETP, (void *) params);
}
diff --git a/sysdeps/unix/bsd/stty.c b/sysdeps/unix/bsd/stty.c
index c89ab0037f..8a0bbdef80 100644
--- a/sysdeps/unix/bsd/stty.c
+++ b/sysdeps/unix/bsd/stty.c
@@ -22,5 +22,5 @@
int
stty (int fd, const struct sgttyb *params)
{
- return ioctl (fd, TIOCSETP, (void *) params);
+ return __ioctl (fd, TIOCSETP, (void *) params);
}
diff --git a/sysdeps/unix/bsd/tcflow.c b/sysdeps/unix/bsd/tcflow.c
index 7998e0c588..3eb5f61093 100644
--- a/sysdeps/unix/bsd/tcflow.c
+++ b/sysdeps/unix/bsd/tcflow.c
@@ -40,7 +40,7 @@ tcflow (int fd, int action)
`write'. Is there another way to do this? */
struct termios attr;
unsigned char c;
- if (tcgetattr (fd, &attr) < 0)
+ if (__tcgetattr (fd, &attr) < 0)
return -1;
c = attr.c_cc[action == TCIOFF ? VSTOP : VSTART];
if (c != _POSIX_VDISABLE && write (fd, &c, 1) < 1)
diff --git a/sysdeps/unix/clock_nanosleep.c b/sysdeps/unix/clock_nanosleep.c
index 491ce02c6c..97b3d6b6ab 100644
--- a/sysdeps/unix/clock_nanosleep.c
+++ b/sysdeps/unix/clock_nanosleep.c
@@ -71,7 +71,7 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
assert (sizeof (sec) >= sizeof (now.tv_sec));
/* Get the current time for this clock. */
- if (__builtin_expect (clock_gettime (clock_id, &now), 0) != 0)
+ if (__builtin_expect (__clock_gettime (clock_id, &now), 0) != 0)
return errno;
/* Compute the difference. */
@@ -96,6 +96,6 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
/* Not supported. */
return ENOTSUP;
- return __builtin_expect (nanosleep (req, rem), 0) ? errno : 0;
+ return __builtin_expect (__nanosleep (req, rem), 0) ? errno : 0;
}
weak_alias (__clock_nanosleep, clock_nanosleep)
--
2.14.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [hurd,commited] hurd: Avoid some PLTs in libc and librt
2018-04-02 19:09 [hurd,commited] hurd: Avoid some PLTs in libc and librt Samuel Thibault
@ 2018-04-02 19:37 ` Florian Weimer
2018-04-03 0:17 ` Joseph Myers
1 sibling, 0 replies; 3+ messages in thread
From: Florian Weimer @ 2018-04-02 19:37 UTC (permalink / raw)
To: Samuel Thibault, libc-alpha
On 04/02/2018 09:09 PM, Samuel Thibault wrote:
> * io/fts.c (fts_build): Call __dirfd instead of dirfd.
There's no PLT avoidance for __dirfd, so this introduces a regression on
GNU/Linux. dirfd was expanded inline there.
590: e8 00 00 00 00 callq 595 <fts_build+0x75>
591: R_X86_64_PLT32 __dirfd-0x4
I think this calls for a different solution.
Thanks,
Florian
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [hurd,commited] hurd: Avoid some PLTs in libc and librt
2018-04-02 19:09 [hurd,commited] hurd: Avoid some PLTs in libc and librt Samuel Thibault
2018-04-02 19:37 ` Florian Weimer
@ 2018-04-03 0:17 ` Joseph Myers
1 sibling, 0 replies; 3+ messages in thread
From: Joseph Myers @ 2018-04-03 0:17 UTC (permalink / raw)
To: Samuel Thibault; +Cc: libc-alpha
As a general matter, calling __foo instead of foo is something done for
namespace reasons, if there is a standard namespace (or, in principle, one
such as _DEFAULT_SOURCE, though we don't test that) including a function
in the calling file, but not foo. It may also fix local PLT issues, if
__foo is not exported from the library in question, but if there are only
PLT issues not namespace ones, the *_hidden_proto / *_hidden_def macros
would typically be called as a sufficient solution to the PLT issues.
Calling __foo does of course introduce the need for declarations of __foo
that may not have been previously needed, and those may need to replicate
properties of the public declarations of foo, such as attributes or the
presence of inline versions, to avoid regressions.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-04-03 0:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-02 19:09 [hurd,commited] hurd: Avoid some PLTs in libc and librt Samuel Thibault
2018-04-02 19:37 ` Florian Weimer
2018-04-03 0:17 ` Joseph Myers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).