hurd: Avoid some PLTs in libc and librt
* 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.
This commit is contained in:
parent
f6fb29d22e
commit
dba2bdbe75
42
ChangeLog
42
ChangeLog
|
@ -305,6 +305,48 @@
|
||||||
(_init_routine): Call __pthread_attr_init and __pthread_attr_setstack
|
(_init_routine): Call __pthread_attr_init and __pthread_attr_setstack
|
||||||
instead of 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>
|
2018-04-02 Agustina Arzille <avarzille@riseup.net>
|
||||||
Amos Jeffries <squid3@treenet.co.nz>
|
Amos Jeffries <squid3@treenet.co.nz>
|
||||||
David Michael <fedora.dm0@gmail.com>
|
David Michael <fedora.dm0@gmail.com>
|
||||||
|
|
|
@ -52,8 +52,8 @@ _S_msg_add_auth (mach_port_t me,
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
vm_size_t offset;
|
vm_size_t offset;
|
||||||
|
|
||||||
urp = vm_allocate (mach_task_self (), (vm_address_t *) newlistp,
|
urp = __vm_allocate (mach_task_self (), (vm_address_t *) newlistp,
|
||||||
nexist + nnew * sizeof (uid_t), 1);
|
nexist + nnew * sizeof (uid_t), 1);
|
||||||
if (urp)
|
if (urp)
|
||||||
return urp;
|
return urp;
|
||||||
|
|
||||||
|
@ -75,10 +75,10 @@ _S_msg_add_auth (mach_port_t me,
|
||||||
offset = (round_page (nexist + nnew * sizeof (uid_t))
|
offset = (round_page (nexist + nnew * sizeof (uid_t))
|
||||||
- round_page (j * sizeof (uid_t)));
|
- round_page (j * sizeof (uid_t)));
|
||||||
if (offset)
|
if (offset)
|
||||||
vm_deallocate (mach_task_self (),
|
__vm_deallocate (mach_task_self (),
|
||||||
(vm_address_t) (*newlistp
|
(vm_address_t) (*newlistp
|
||||||
+ (nexist + nnew * sizeof (uid_t))),
|
+ (nexist + nnew * sizeof (uid_t))),
|
||||||
offset);
|
offset);
|
||||||
*newlistlen = j;
|
*newlistlen = j;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -136,8 +136,8 @@ _S_msg_add_auth (mach_port_t me,
|
||||||
|
|
||||||
#define freeup(array, len) \
|
#define freeup(array, len) \
|
||||||
if (array) \
|
if (array) \
|
||||||
vm_deallocate (mach_task_self (), (vm_address_t) array, \
|
__vm_deallocate (mach_task_self (), (vm_address_t) array, \
|
||||||
len * sizeof (uid_t));
|
len * sizeof (uid_t));
|
||||||
|
|
||||||
freeup (genuids, ngenuids);
|
freeup (genuids, ngenuids);
|
||||||
freeup (auxuids, nauxuids);
|
freeup (auxuids, nauxuids);
|
||||||
|
|
|
@ -344,7 +344,7 @@ _S_msg_set_env_variable (mach_port_t msgport, mach_port_t auth,
|
||||||
{
|
{
|
||||||
AUTHCHECK;
|
AUTHCHECK;
|
||||||
|
|
||||||
if (setenv (variable, value, replace)) /* XXX name space */
|
if (__setenv (variable, value, replace)) /* XXX name space */
|
||||||
return errno;
|
return errno;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ _hurd_priority_which_map (enum __priority_which which, int who,
|
||||||
|
|
||||||
case PRIO_USER:
|
case PRIO_USER:
|
||||||
if (who == 0)
|
if (who == 0)
|
||||||
who = geteuid ();
|
who = __geteuid ();
|
||||||
err = __USEPORT (PROC, __proc_getallpids (port, &pids, &npids));
|
err = __USEPORT (PROC, __proc_getallpids (port, &pids, &npids));
|
||||||
for (i = 0; !err && i < npids; ++i)
|
for (i = 0; !err && i < npids; ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -63,7 +63,7 @@ file_name_path_scan (const char *file_name, const char *path,
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
{
|
{
|
||||||
if (prefixed_name)
|
if (prefixed_name)
|
||||||
*prefixed_name = strdup (pfxed_name);
|
*prefixed_name = __strdup (pfxed_name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!real_err && err != ENOENT)
|
if (!real_err && err != ENOENT)
|
||||||
|
|
|
@ -17,10 +17,11 @@
|
||||||
|
|
||||||
#include <hurd/signal.h>
|
#include <hurd/signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <libioP.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
_hurd_siginfo_handler (int signo)
|
_hurd_siginfo_handler (int signo)
|
||||||
{
|
{
|
||||||
/* XXX */
|
/* XXX */
|
||||||
puts ("got a SIGINFO");
|
_IO_puts ("got a SIGINFO");
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,14 +67,14 @@ _hurd_xattr_get (io_t port, const char *name, void *value, size_t *size)
|
||||||
if (value != NULL && *size < bufsz)
|
if (value != NULL && *size < bufsz)
|
||||||
{
|
{
|
||||||
if (buf != value)
|
if (buf != value)
|
||||||
munmap (buf, bufsz);
|
__munmap (buf, bufsz);
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
if (buf != value && bufsz > 0)
|
if (buf != value && bufsz > 0)
|
||||||
{
|
{
|
||||||
if (value != NULL)
|
if (value != NULL)
|
||||||
memcpy (value, buf, bufsz);
|
memcpy (value, buf, bufsz);
|
||||||
munmap (buf, bufsz);
|
__munmap (buf, bufsz);
|
||||||
}
|
}
|
||||||
*size = bufsz;
|
*size = bufsz;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -150,7 +150,7 @@ _hurd_xattr_set (io_t port, const char *name, const void *value, size_t size,
|
||||||
return err;
|
return err;
|
||||||
if (bufsz > 0)
|
if (bufsz > 0)
|
||||||
{
|
{
|
||||||
munmap (buf, bufsz);
|
__munmap (buf, bufsz);
|
||||||
return ENODATA;
|
return ENODATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
io/fts.c
2
io/fts.c
|
@ -680,7 +680,7 @@ fts_build (FTSOBJ *sp, int type)
|
||||||
*/
|
*/
|
||||||
cderrno = 0;
|
cderrno = 0;
|
||||||
if (nlinks || type == BREAD) {
|
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)
|
if (nlinks && type == BREAD)
|
||||||
cur->fts_errno = errno;
|
cur->fts_errno = errno;
|
||||||
cur->fts_flags |= FTS_DONTCHDIR;
|
cur->fts_flags |= FTS_DONTCHDIR;
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <libioP.h>
|
||||||
|
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
|
@ -111,7 +112,7 @@ devstream_read (void *cookie, char *buffer, size_t to_read)
|
||||||
static int
|
static int
|
||||||
dealloc_ref (void *cookie)
|
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;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -130,13 +131,13 @@ mach_open_devstream (mach_port_t dev, const char *mode)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
stream = fopencookie ((void *) dev, mode,
|
stream = _IO_fopencookie ((void *) dev, mode,
|
||||||
(cookie_io_functions_t) { write: devstream_write,
|
(cookie_io_functions_t) { write: devstream_write,
|
||||||
read: devstream_read,
|
read: devstream_read,
|
||||||
close: dealloc_ref });
|
close: dealloc_ref });
|
||||||
if (stream == NULL)
|
if (stream == NULL)
|
||||||
{
|
{
|
||||||
mach_port_deallocate (mach_task_self (), dev);
|
__mach_port_deallocate (mach_task_self (), dev);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ __realpath (const char *name, char *resolved)
|
||||||
#ifdef PATH_MAX
|
#ifdef PATH_MAX
|
||||||
path_max = PATH_MAX;
|
path_max = PATH_MAX;
|
||||||
#else
|
#else
|
||||||
path_max = pathconf (name, _PC_PATH_MAX);
|
path_max = __pathconf (name, _PC_PATH_MAX);
|
||||||
if (path_max <= 0)
|
if (path_max <= 0)
|
||||||
path_max = 1024;
|
path_max = 1024;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,7 +53,7 @@ __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd)
|
||||||
|
|
||||||
if (len % sizeof (struct ifreq) != 0)
|
if (len % sizeof (struct ifreq) != 0)
|
||||||
{
|
{
|
||||||
munmap (data, len);
|
__munmap (data, len);
|
||||||
errno = EGRATUITOUS;
|
errno = EGRATUITOUS;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,5 +28,5 @@
|
||||||
static inline void
|
static inline void
|
||||||
__if_freereq (struct ifreq *ifreqs, int num_ifs)
|
__if_freereq (struct ifreq *ifreqs, int num_ifs)
|
||||||
{
|
{
|
||||||
munmap (ifreqs, num_ifs * sizeof (struct ifreq));
|
__munmap (ifreqs, num_ifs * sizeof (struct ifreq));
|
||||||
}
|
}
|
||||||
|
|
|
@ -155,7 +155,7 @@ ptrace (enum __ptrace_request request, ... )
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
/* SIGKILL always just terminates the task,
|
/* SIGKILL always just terminates the task,
|
||||||
so normal kill is just the same when traced. */
|
so normal kill is just the same when traced. */
|
||||||
return kill (pid, SIGKILL);
|
return __kill (pid, SIGKILL);
|
||||||
|
|
||||||
case PTRACE_SINGLESTEP:
|
case PTRACE_SINGLESTEP:
|
||||||
/* This is a machine-dependent kernel RPC on
|
/* This is a machine-dependent kernel RPC on
|
||||||
|
|
|
@ -47,7 +47,7 @@ sendfile64 (int out_fd, int in_fd, off64_t *offset, size_t count)
|
||||||
return 0;
|
return 0;
|
||||||
err = HURD_DPORT_USE (out_fd, __io_write (port, data, datalen,
|
err = HURD_DPORT_USE (out_fd, __io_write (port, data, datalen,
|
||||||
(off_t) -1, &nwrote));
|
(off_t) -1, &nwrote));
|
||||||
munmap (data, datalen);
|
__munmap (data, datalen);
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
{
|
{
|
||||||
if (offset)
|
if (offset)
|
||||||
|
|
|
@ -82,7 +82,7 @@ __socketpair (int domain, int type, int protocol, int fds[2])
|
||||||
if (d2 < 0)
|
if (d2 < 0)
|
||||||
{
|
{
|
||||||
err = errno;
|
err = errno;
|
||||||
(void) close (d1);
|
(void) __close (d1);
|
||||||
return __hurd_fail (err);
|
return __hurd_fail (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ hp_timing_getres (struct timespec *res)
|
||||||
static inline int
|
static inline int
|
||||||
realtime_getres (struct timespec *res)
|
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))
|
if (__glibc_likely (clk_tck != -1))
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,7 +50,7 @@ timer_gettime (timer_t timerid, struct itimerspec *value)
|
||||||
{
|
{
|
||||||
if (armed)
|
if (armed)
|
||||||
{
|
{
|
||||||
clock_gettime (clock, &now);
|
__clock_gettime (clock, &now);
|
||||||
if (timespec_compare (&now, &expiry) < 0)
|
if (timespec_compare (&now, &expiry) < 0)
|
||||||
timespec_sub (&value->it_value, &expiry, &now);
|
timespec_sub (&value->it_value, &expiry, &now);
|
||||||
else
|
else
|
||||||
|
|
|
@ -376,7 +376,7 @@ thread_func (void *arg)
|
||||||
|
|
||||||
/* This assumes that the elements of the list of one thread
|
/* This assumes that the elements of the list of one thread
|
||||||
are all for the same clock. */
|
are all for the same clock. */
|
||||||
clock_gettime (timer->clock, &now);
|
__clock_gettime (timer->clock, &now);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,7 +55,7 @@ timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
|
||||||
|
|
||||||
if ((flags & TIMER_ABSTIME) == 0)
|
if ((flags & TIMER_ABSTIME) == 0)
|
||||||
{
|
{
|
||||||
clock_gettime (timer->clock, &now);
|
__clock_gettime (timer->clock, &now);
|
||||||
have_now = 1;
|
have_now = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ timer_settime (timer_t timerid, int flags, const struct itimerspec *value,
|
||||||
if (! have_now)
|
if (! have_now)
|
||||||
{
|
{
|
||||||
pthread_mutex_unlock (&__timer_mutex);
|
pthread_mutex_unlock (&__timer_mutex);
|
||||||
clock_gettime (timer->clock, &now);
|
__clock_gettime (timer->clock, &now);
|
||||||
have_now = 1;
|
have_now = 1;
|
||||||
pthread_mutex_lock (&__timer_mutex);
|
pthread_mutex_lock (&__timer_mutex);
|
||||||
timer_addref (timer);
|
timer_addref (timer);
|
||||||
|
|
|
@ -22,5 +22,5 @@
|
||||||
int
|
int
|
||||||
gtty (int fd, struct sgttyb *params)
|
gtty (int fd, struct sgttyb *params)
|
||||||
{
|
{
|
||||||
return ioctl (fd, TIOCGETP, (void *) params);
|
return __ioctl (fd, TIOCGETP, (void *) params);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,5 +22,5 @@
|
||||||
int
|
int
|
||||||
stty (int fd, const struct sgttyb *params)
|
stty (int fd, const struct sgttyb *params)
|
||||||
{
|
{
|
||||||
return ioctl (fd, TIOCSETP, (void *) params);
|
return __ioctl (fd, TIOCSETP, (void *) params);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ tcflow (int fd, int action)
|
||||||
`write'. Is there another way to do this? */
|
`write'. Is there another way to do this? */
|
||||||
struct termios attr;
|
struct termios attr;
|
||||||
unsigned char c;
|
unsigned char c;
|
||||||
if (tcgetattr (fd, &attr) < 0)
|
if (__tcgetattr (fd, &attr) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
c = attr.c_cc[action == TCIOFF ? VSTOP : VSTART];
|
c = attr.c_cc[action == TCIOFF ? VSTOP : VSTART];
|
||||||
if (c != _POSIX_VDISABLE && write (fd, &c, 1) < 1)
|
if (c != _POSIX_VDISABLE && write (fd, &c, 1) < 1)
|
||||||
|
|
|
@ -71,7 +71,7 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
|
||||||
assert (sizeof (sec) >= sizeof (now.tv_sec));
|
assert (sizeof (sec) >= sizeof (now.tv_sec));
|
||||||
|
|
||||||
/* Get the current time for this clock. */
|
/* 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;
|
return errno;
|
||||||
|
|
||||||
/* Compute the difference. */
|
/* Compute the difference. */
|
||||||
|
@ -96,6 +96,6 @@ __clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req,
|
||||||
/* Not supported. */
|
/* Not supported. */
|
||||||
return ENOTSUP;
|
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)
|
weak_alias (__clock_nanosleep, clock_nanosleep)
|
||||||
|
|
Loading…
Reference in a new issue