mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 19:30:10 +00:00
alpha: Purge __ASSUME_TIMEVAL64
This commit is contained in:
parent
a88035b5fb
commit
1c37181459
@ -1,3 +1,22 @@
|
||||
2012-05-30 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/adjtime.c: Remove __ASSUME_TIMEVAL64.
|
||||
* sysdeps/unix/sysv/linux/alpha/getitimer.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/getrusage.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/select.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/setitimer.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/settimeofday.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/utimes.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/wait4.S: Remove file.
|
||||
* sysdeps/unix/sysv/linux/alpha/syscalls.list (getitimer): New.
|
||||
(getrusage, gettimeofday, select, setitimer): New.
|
||||
(settimeofday, utimes, wait4): New.
|
||||
* sysdeps/unix/sysv/linux/alpha/kernel-features.h: Remove
|
||||
__ASSUME_TIMEVAL64.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: Update.
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist: Update.
|
||||
|
||||
2012-05-24 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: New file.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1998,2000,2002,2003,2004,2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -18,9 +18,9 @@
|
||||
#include <shlib-compat.h>
|
||||
#include <sysdep.h>
|
||||
#include <sys/time.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
#if !defined __ASSUME_TIMEVAL64 || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
|
||||
|
||||
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
|
||||
struct timeval32
|
||||
{
|
||||
int tv_sec, tv_usec;
|
||||
@ -60,160 +60,35 @@ struct timex32 {
|
||||
#define ADJTIME attribute_compat_text_section __adjtime_tv32
|
||||
#define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x)
|
||||
#define ADJTIMEX32(x) INLINE_SYSCALL (old_adjtimex, 1, x)
|
||||
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
|
||||
#define LINKAGE
|
||||
#else
|
||||
#define LINKAGE static
|
||||
#endif
|
||||
|
||||
LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv);
|
||||
|
||||
#include <sysdeps/unix/sysv/linux/adjtime.c>
|
||||
|
||||
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
|
||||
int
|
||||
attribute_compat_text_section
|
||||
int attribute_compat_text_section
|
||||
__adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); }
|
||||
|
||||
strong_alias (__adjtimex_tv32, __adjtimex_tv32_1);
|
||||
strong_alias (__adjtimex_tv32, __adjtimex_tv32_2);
|
||||
compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0);
|
||||
compat_symbol (libc, __adjtimex_tv32_2, adjtimex, GLIBC_2_0);
|
||||
compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2_0);
|
||||
#endif
|
||||
#endif /* !__ASSUME_TIMEVAL64 || SHLIB_COMPAT */
|
||||
#endif /* SHLIB_COMPAT */
|
||||
|
||||
#undef TIMEVAL
|
||||
#define TIMEVAL timeval
|
||||
#undef TIMEX
|
||||
#define TIMEX timex
|
||||
#undef ADJTIME
|
||||
#undef ADJTIMEX
|
||||
#define TIMEVAL timeval
|
||||
#define TIMEX timex
|
||||
#define ADJTIMEX(x) INLINE_SYSCALL (adjtimex, 1, x)
|
||||
|
||||
#undef LINKAGE
|
||||
#undef ADJTIME
|
||||
#if !defined __ASSUME_TIMEVAL64
|
||||
#define LINKAGE static
|
||||
#define ADJTIME __adjtime_tv64
|
||||
#endif
|
||||
|
||||
#include <sysdeps/unix/sysv/linux/adjtime.c>
|
||||
#include <stdbool.h>
|
||||
|
||||
#if !defined __ASSUME_TIMEVAL64
|
||||
static bool missing_adjtimex;
|
||||
|
||||
int
|
||||
__adjtime (itv, otv)
|
||||
const struct timeval *itv;
|
||||
struct timeval *otv;
|
||||
{
|
||||
struct timeval32 itv32, otv32;
|
||||
int ret;
|
||||
|
||||
switch (missing_adjtimex)
|
||||
{
|
||||
case false:
|
||||
ret = __adjtime_tv64 (itv, otv);
|
||||
if (ret && errno == ENOSYS)
|
||||
missing_adjtimex = 1;
|
||||
else
|
||||
break;
|
||||
|
||||
/* FALLTHRU */
|
||||
|
||||
default:
|
||||
itv32.tv_sec = itv->tv_sec;
|
||||
itv32.tv_usec = itv->tv_usec;
|
||||
ret = __adjtime_tv32 (&itv32, &otv32);
|
||||
if (ret == 0)
|
||||
{
|
||||
otv->tv_sec = otv32.tv_sec;
|
||||
otv->tv_usec = otv32.tv_usec;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
|
||||
|
||||
int
|
||||
__adjtimex_tv64 (struct timex *tx)
|
||||
{
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
return ADJTIMEX (tx);
|
||||
#else
|
||||
struct timex32 tx32;
|
||||
int ret;
|
||||
|
||||
switch (missing_adjtimex)
|
||||
{
|
||||
case false:
|
||||
ret = ADJTIMEX (tx);
|
||||
if (ret && errno == ENOSYS)
|
||||
missing_adjtimex = 1;
|
||||
else
|
||||
break;
|
||||
|
||||
/* FALLTHRU */
|
||||
|
||||
default:
|
||||
tx32.modes = tx->modes;
|
||||
tx32.offset = tx->offset;
|
||||
tx32.freq = tx->freq;
|
||||
tx32.maxerror = tx->maxerror;
|
||||
tx32.esterror = tx->esterror;
|
||||
tx32.status = tx->status;
|
||||
tx32.constant = tx->constant;
|
||||
tx32.precision = tx->precision;
|
||||
tx32.tolerance = tx->tolerance;
|
||||
tx32.time.tv_sec = tx->time.tv_sec;
|
||||
tx32.time.tv_sec = tx->time.tv_usec;
|
||||
tx32.tick = tx->tick;
|
||||
tx32.ppsfreq = tx->ppsfreq;
|
||||
tx32.jitter = tx->jitter;
|
||||
tx32.shift = tx->shift;
|
||||
tx32.stabil = tx->stabil;
|
||||
tx32.jitcnt = tx->jitcnt;
|
||||
tx32.calcnt = tx->calcnt;
|
||||
tx32.errcnt = tx->errcnt;
|
||||
tx32.stbcnt = tx->stbcnt;
|
||||
|
||||
ret = ADJTIMEX32 (&tx32);
|
||||
if (ret == 0)
|
||||
{
|
||||
tx->modes = tx32.modes;
|
||||
tx->offset = tx32.offset;
|
||||
tx->freq = tx32.freq;
|
||||
tx->maxerror = tx32.maxerror;
|
||||
tx->esterror = tx32.esterror;
|
||||
tx->status = tx32.status;
|
||||
tx->constant = tx32.constant;
|
||||
tx->precision = tx32.precision;
|
||||
tx->tolerance = tx32.tolerance;
|
||||
tx->time.tv_sec = tx32.time.tv_sec;
|
||||
tx->time.tv_usec = tx32.time.tv_sec;
|
||||
tx->tick = tx32.tick;
|
||||
tx->ppsfreq = tx32.ppsfreq;
|
||||
tx->jitter = tx32.jitter;
|
||||
tx->shift = tx32.shift;
|
||||
tx->stabil = tx32.stabil;
|
||||
tx->jitcnt = tx32.jitcnt;
|
||||
tx->calcnt = tx32.calcnt;
|
||||
tx->errcnt = tx32.errcnt;
|
||||
tx->stbcnt = tx32.stbcnt;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
__adjtimex_tv64 (struct timex *tx) { return ADJTIMEX (tx); }
|
||||
|
||||
strong_alias (__adjtimex_tv64, __adjtimex_internal);
|
||||
strong_alias (__adjtimex_tv64, __adjtimex_tv64p);
|
||||
weak_alias (__adjtimex_tv64, ntp_adjtime);
|
||||
versioned_symbol (libc, __adjtimex_tv64, __adjtimex, GLIBC_2_1);
|
||||
versioned_symbol (libc, __adjtimex_tv64p, adjtimex, GLIBC_2_1);
|
||||
versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
|
||||
|
@ -1,112 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define GETITIMER __getitimer_tv64
|
||||
#else
|
||||
#define GETITIMER getitimer
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(GETITIMER, getitimer, 2)
|
||||
ret
|
||||
PSEUDO_END(GETITIMER)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(GETITIMER, 16)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 16, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(getitimer)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32: ldi v0, SYS_ify(osf_getitimer)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* Copy back to proper format. */
|
||||
ldq a1, 8(sp)
|
||||
ldl t0, 0(a1)
|
||||
ldl t1, 4(a1)
|
||||
ldl t2, 8(a1)
|
||||
ldl t3, 12(a1)
|
||||
stq t0, 0(a1)
|
||||
stq t1, 8(a1)
|
||||
stq t2, 16(a1)
|
||||
stq t3, 24(a1)
|
||||
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 16, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(GETITIMER)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1)
|
||||
#endif
|
@ -1,148 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define GETRUSAGE __getrusage_tv64
|
||||
#else
|
||||
#define GETRUSAGE __getrusage
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(GETRUSAGE, getrusage, 2)
|
||||
ret
|
||||
PSEUDO_END(GETRUSAGE)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(GETRUSAGE, 16)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 16, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(getrusage)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32: ldi v0, SYS_ify(osf_getrusage)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* Copy back to proper format. */
|
||||
ldq a1, 8(sp)
|
||||
ldl t0, 0(a1) # ru_utime.tv_sec
|
||||
ldl t1, 4(a1) # ru_utime.tv_usec
|
||||
ldl t2, 8(a1) # ru_stime.tv_sec
|
||||
ldl t3, 12(a1) # ru_stime.tv_usec
|
||||
ldt $f15, 16(a1) # ru_maxrss
|
||||
ldt $f16, 24(a1) # ru_ixrss
|
||||
ldt $f17, 32(a1) # ru_idrss
|
||||
ldt $f18, 40(a1) # ru_isrss
|
||||
ldt $f19, 48(a1) # ru_minflt
|
||||
ldt $f20, 56(a1) # ru_majflt
|
||||
ldt $f21, 64(a1) # ru_nswap
|
||||
ldt $f22, 72(a1) # ru_inblock
|
||||
ldt $f23, 80(a1) # ru_oublock
|
||||
ldt $f24, 88(a1) # ru_msgsend
|
||||
ldt $f25, 96(a1) # ru_msgrcv
|
||||
ldt $f26, 104(a1) # ru_nsignals
|
||||
ldt $f27, 112(a1) # ru_nvcsw
|
||||
.set noat
|
||||
ldt $f28, 120(a1) # ru_nivcsw
|
||||
.set at
|
||||
stq t0, 0(a1)
|
||||
stq t1, 8(a1)
|
||||
stq t2, 16(a1)
|
||||
stq t3, 24(a1)
|
||||
stt $f15, 32(a1)
|
||||
stt $f16, 40(a1)
|
||||
stt $f17, 48(a1)
|
||||
stt $f18, 56(a1)
|
||||
stt $f19, 64(a1)
|
||||
stt $f20, 72(a1)
|
||||
stt $f21, 80(a1)
|
||||
stt $f22, 88(a1)
|
||||
stt $f23, 96(a1)
|
||||
stt $f24, 104(a1)
|
||||
stt $f25, 112(a1)
|
||||
stt $f26, 120(a1)
|
||||
stt $f27, 128(a1)
|
||||
.set noat
|
||||
stt $f28, 136(a1)
|
||||
.set at
|
||||
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 16, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(GETRUSAGE)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
strong_alias(__getrusage_tv64, ____getrusage_tv64)
|
||||
default_symbol_version (____getrusage_tv64, __getrusage, GLIBC_2.1)
|
||||
default_symbol_version (__getrusage_tv64, getrusage, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__getrusage, getrusage)
|
||||
#endif
|
@ -1,119 +0,0 @@
|
||||
/* Copyright (C) 1998, 2002, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define GETTIMEOFDAY __gettimeofday_tv64
|
||||
#else
|
||||
#define GETTIMEOFDAY __gettimeofday
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(GETTIMEOFDAY, gettimeofday, 2)
|
||||
ret
|
||||
PSEUDO_END(GETTIMEOFDAY)
|
||||
#else
|
||||
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(GETTIMEOFDAY, 16)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 16, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(gettimeofday)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32: ldi v0, SYS_ify(osf_gettimeofday)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* Copy back to proper format. */
|
||||
ldq a0, 0(sp)
|
||||
beq a0, 2f
|
||||
ldl t0, 0(a0)
|
||||
ldl t1, 4(a0)
|
||||
stq t0, 0(a0)
|
||||
stq t1, 8(a0)
|
||||
|
||||
2: addq sp, 16, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 16, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(GETTIMEOFDAY)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__gettimeofday_tv64, __gettimeofday_tv64p)
|
||||
default_symbol_version (__gettimeofday_tv64p, gettimeofday, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__gettimeofday, gettimeofday)
|
||||
#endif
|
||||
strong_alias(GETTIMEOFDAY, __gettimeofday_internal)
|
@ -1,6 +1,6 @@
|
||||
/* Set flags signalling availability of kernel features based on given
|
||||
kernel version number.
|
||||
Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
Copyright (C) 2010-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -20,11 +20,6 @@
|
||||
#ifndef _KERNEL_FEATURES_H
|
||||
#define _KERNEL_FEATURES_H 1
|
||||
|
||||
/* alpha switched to a 64-bit timeval sometime before 2.2.0. */
|
||||
#if __LINUX_KERNEL_VERSION >= 131584
|
||||
# define __ASSUME_TIMEVAL64 1
|
||||
#endif
|
||||
|
||||
/* The tgkill syscall was introduced for alpha 2.6.0-test1 which unfortunately
|
||||
cannot be distinguished from 2.6.0. */
|
||||
#if __LINUX_KERNEL_VERSION >= 132609
|
||||
|
@ -9,9 +9,7 @@ GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.1 A
|
||||
__libc_stack_end D 0x8
|
||||
__setitimer F
|
||||
_dl_mcount F
|
||||
setitimer F
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3 A
|
||||
__tls_get_addr F
|
||||
|
@ -124,6 +124,10 @@ GLIBC_2.0
|
||||
__deregister_frame F
|
||||
__deregister_frame_info F
|
||||
__dgettext F
|
||||
__divl F
|
||||
__divlu F
|
||||
__divq F
|
||||
__divqu F
|
||||
__dup2 F
|
||||
__environ D 0x8
|
||||
__errno_location F
|
||||
@ -195,6 +199,10 @@ GLIBC_2.0
|
||||
__register_frame_info F
|
||||
__register_frame_info_table F
|
||||
__register_frame_table F
|
||||
__reml F
|
||||
__remlu F
|
||||
__remq F
|
||||
__remqu F
|
||||
__res_randomid F
|
||||
__sbrk F
|
||||
__sched_get_priority_max F
|
||||
@ -1333,14 +1341,6 @@ GLIBC_2.0
|
||||
xencrypt F
|
||||
xprt_register F
|
||||
xprt_unregister F
|
||||
__divl GLIBC_2.0 g ? D .text 0000000000000060
|
||||
__divlu GLIBC_2.0 g ? D .text 0000000000000060
|
||||
__divq GLIBC_2.0 g ? D .text 00000000000001c4
|
||||
__divqu GLIBC_2.0 g ? D .text 000000000000018c
|
||||
__reml GLIBC_2.0 g ? D .text 0000000000000064
|
||||
__remlu GLIBC_2.0 g ? D .text 0000000000000064
|
||||
__remq GLIBC_2.0 g ? D .text 00000000000001c0
|
||||
__remqu GLIBC_2.0 g ? D .text 00000000000001b4
|
||||
GLIBC_2.1
|
||||
GLIBC_2.1 A
|
||||
_IO_2_1_stderr_ D 0xe0
|
||||
@ -1440,8 +1440,6 @@ GLIBC_2.1
|
||||
__towctrans_l F
|
||||
__towlower_l F
|
||||
__towupper_l F
|
||||
__utimes F
|
||||
__wait4 F
|
||||
__wcscasecmp_l F
|
||||
__wcscoll_l F
|
||||
__wcsncasecmp_l F
|
||||
|
@ -1,240 +0,0 @@
|
||||
/* Copyright (C) 1998,2002,2003,2006,2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep-cancel.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define SELECT __select_tv64
|
||||
#else
|
||||
#define SELECT __select
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(SELECT, select, 5)
|
||||
ret
|
||||
PSEUDO_END(SELECT)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(SELECT, 64)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 64, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
stq ra, 40(sp)
|
||||
.mask 0x4000000, 40-64
|
||||
.prologue 1
|
||||
|
||||
#ifdef CENABLE
|
||||
SINGLE_THREAD_P (t1)
|
||||
#else
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
#endif
|
||||
|
||||
/* Save timeout early, since we'll need to recover this after
|
||||
the system call. */
|
||||
stq a4, 48(sp)
|
||||
|
||||
#ifdef CENABLE
|
||||
bne t1, $do_cancel
|
||||
#endif
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 8(sp)
|
||||
stq a1, 16(sp)
|
||||
stq a2, 24(sp)
|
||||
stq a3, 32(sp)
|
||||
|
||||
ldi v0, SYS_ify(select)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 64, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a4, 48(sp)
|
||||
ldq a3, 32(sp)
|
||||
ldq a2, 24(sp)
|
||||
ldq a1, 16(sp)
|
||||
ldq a0, 8(sp)
|
||||
|
||||
.align 3
|
||||
$do32:
|
||||
/* If the timeout argument is present bounce to the smaller fmt. */
|
||||
beq a4, 1f
|
||||
ldq t0, 0(a4)
|
||||
ldq t1, 8(a4)
|
||||
stl t0, 0(sp)
|
||||
stl t1, 4(sp)
|
||||
mov sp, a4
|
||||
|
||||
1: ldi v0, SYS_ify(osf_select)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* ... and bounce the remaining timeout back. */
|
||||
ldq a4, 48(sp)
|
||||
beq a4, 2f
|
||||
ldl t0, 0(sp)
|
||||
ldl t1, 4(sp)
|
||||
stq t0, 0(a4)
|
||||
stq t1, 8(a4)
|
||||
|
||||
2: addq sp, 64, sp
|
||||
ret
|
||||
|
||||
#ifdef CENABLE
|
||||
.align 3
|
||||
$do_cancel:
|
||||
/* Save arguments. */
|
||||
stq a0, 8(sp)
|
||||
stq a1, 16(sp)
|
||||
stq a2, 24(sp)
|
||||
stq a3, 32(sp)
|
||||
|
||||
CENABLE
|
||||
mov v0, ra
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
bne t0, $do_cancel32
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a4, 48(sp)
|
||||
ldq a3, 32(sp)
|
||||
ldq a2, 24(sp)
|
||||
ldq a1, 16(sp)
|
||||
ldq a0, 8(sp)
|
||||
|
||||
ldi v0, SYS_ify(select)
|
||||
callsys
|
||||
|
||||
mov ra, a0
|
||||
bne a3, $cancel_err64
|
||||
|
||||
stq v0, 8(sp)
|
||||
CDISABLE
|
||||
ldq v0, 8(sp)
|
||||
ldq ra, 40(sp)
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 64, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$cancel_err64:
|
||||
cmpeq v0, ENOSYS, t0
|
||||
beq t0, $cancel_error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
.align 3
|
||||
$do_cancel32:
|
||||
ldq a4, 48(sp)
|
||||
ldq a3, 32(sp)
|
||||
ldq a2, 24(sp)
|
||||
ldq a1, 16(sp)
|
||||
ldq a0, 8(sp)
|
||||
|
||||
/* If the timeout argument is present bounce to the smaller fmt. */
|
||||
beq a4, 1f
|
||||
ldq t0, 0(a4)
|
||||
ldq t1, 8(a4)
|
||||
stl t0, 0(sp)
|
||||
stl t1, 4(sp)
|
||||
mov sp, a4
|
||||
|
||||
1: ldi v0, SYS_ify(osf_select)
|
||||
callsys
|
||||
|
||||
mov ra, a0
|
||||
bne a3, $cancel_error
|
||||
|
||||
/* ... and bounce the remaining timeout back. */
|
||||
ldq a4, 48(sp)
|
||||
beq a4, 2f
|
||||
ldl t0, 0(sp)
|
||||
ldl t1, 4(sp)
|
||||
stq t0, 0(a4)
|
||||
stq t1, 8(a4)
|
||||
|
||||
2: stq v0, 8(sp)
|
||||
CDISABLE
|
||||
ldq v0, 8(sp)
|
||||
ldq ra, 40(sp)
|
||||
|
||||
addq sp, 64, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$cancel_error:
|
||||
stq v0, 8(sp)
|
||||
CDISABLE
|
||||
ldq v0, 8(sp)
|
||||
ldq ra, 40(sp)
|
||||
#endif
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 64, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(SELECT)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__select_tv64, __select, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__select_tv64, __select_tv64p)
|
||||
default_symbol_version (__select_tv64p, select, GLIBC_2.1)
|
||||
libc_hidden_ver (__select_tv64, __select)
|
||||
strong_alias (__select_tv64, __libc_select)
|
||||
#else
|
||||
strong_alias (__select, __libc_select)
|
||||
weak_alias (__select, select)
|
||||
libc_hidden_def (__select)
|
||||
#endif
|
@ -1,136 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define SETITIMER __setitimer_tv64
|
||||
#else
|
||||
#define SETITIMER __setitimer
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(SETITIMER, setitimer, 3)
|
||||
ret
|
||||
PSEUDO_END(SETITIMER)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(SETITIMER, 48)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 48, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
stq a2, 16(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(setitimer)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 48, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a2, 16(sp)
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32:
|
||||
/* Conditionally bounce new value down. */
|
||||
beq a1, 1f
|
||||
ldq t0, 0(a1)
|
||||
ldq t1, 8(a1)
|
||||
ldq t2, 16(a1)
|
||||
ldq t3, 24(a1)
|
||||
stl t0, 32(sp)
|
||||
stl t1, 36(sp)
|
||||
stl t2, 40(sp)
|
||||
stl t3, 44(sp)
|
||||
addq sp, 32, a1
|
||||
|
||||
1: ldi v0, SYS_ify(osf_setitimer)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* Conditionaly bounce old value up. */
|
||||
ldq a2, 16(sp)
|
||||
bne a2, 2f
|
||||
ldl t0, 0(a2)
|
||||
ldl t1, 4(a2)
|
||||
ldl t2, 8(a2)
|
||||
ldl t3, 12(a2)
|
||||
stq t0, 0(a2)
|
||||
stq t1, 8(a2)
|
||||
stq t2, 48(a2)
|
||||
stq t3, 24(a2)
|
||||
|
||||
2: addq sp, 48, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 48, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(SETITIMER)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__setitimer_tv64, __setitimer_tv64p)
|
||||
default_symbol_version (__setitimer_tv64p, setitimer, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__setitimer, setitimer)
|
||||
#endif
|
@ -1,117 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define SETTIMEOFDAY __settimeofday_tv64
|
||||
#else
|
||||
#define SETTIMEOFDAY __settimeofday
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(SETTIMEOFDAY, settimeofday, 2)
|
||||
ret
|
||||
PSEUDO_END(SETTIMEOFDAY)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(SETTIMEOFDAY, 16)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 16, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
bne t0, $do32
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
|
||||
ldi v0, SYS_ify(settimeofday)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32:
|
||||
/* Conditionally bounce the timeval down. */
|
||||
beq a0, 1f
|
||||
ldq t0, 0(a0)
|
||||
ldq t1, 8(a0)
|
||||
stl t0, 0(sp)
|
||||
stl t1, 4(sp)
|
||||
mov sp, a0
|
||||
|
||||
1: ldi v0, SYS_ify(osf_settimeofday)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 16, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(SETTIMEOFDAY)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__settimeofday_tv64, __settimeofday_tv64p)
|
||||
default_symbol_version (__settimeofday_tv64p, settimeofday, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__settimeofday, settimeofday)
|
||||
#endif
|
@ -52,7 +52,17 @@ osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0
|
||||
osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0
|
||||
osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0
|
||||
osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0
|
||||
osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0
|
||||
osf_wait4 - osf_wait4 4 __wait4_tv32 wait4@GLIBC_2.0
|
||||
|
||||
# support new timeval64 entry points
|
||||
select - select C:5 __GI___select select@@GLIBC_2.1 __select@@GLIBC_2.1
|
||||
gettimeofday - gettimeofday 2 __GI___gettimeofday gettimeofday@@GLIBC_2.1 __gettimeofday@@GLIBC_2.1
|
||||
settimeofday - settimeofday 2 __settimeofday settimeofday@@GLIBC_2.1
|
||||
getitimer - getitimer 2 __getitimer getitimer@@GLIBC_2.1
|
||||
setitimer - setitimer 3 __setitimer setitimer@@GLIBC_2.1
|
||||
utimes - utimes 2 __utimes utimes@@GLIBC_2.1
|
||||
getrusage - getrusage 2 __getrusage getrusage@@GLIBC_2.1
|
||||
wait4 - wait4 4 __wait4 wait4@@GLIBC_2.1
|
||||
|
||||
# avoid 64-bit aliases on 32-bit statfs syscalls
|
||||
fstatfs - fstatfs i:ip __fstatfs fstatfs
|
||||
|
@ -1,122 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define UTIMES __utimes_tv64
|
||||
#else
|
||||
#define UTIMES __utimes
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(UTIMES, utimes, 2)
|
||||
ret
|
||||
PSEUDO_END(UTIMES)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(UTIMES, 16)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 16, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(utimes)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32:
|
||||
/* Conditionally bounce values down. */
|
||||
beq a1, 1f
|
||||
ldq t0, 0(a1)
|
||||
ldq t1, 8(a1)
|
||||
ldq t2, 16(a1)
|
||||
ldq t3, 24(a1)
|
||||
stl t0, 0(sp)
|
||||
stl t1, 4(sp)
|
||||
stl t2, 8(sp)
|
||||
stl t3, 12(sp)
|
||||
mov sp, a1
|
||||
|
||||
1: ldi v0, SYS_ify(osf_utimes)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
addq sp, 16, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 16, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(UTIMES)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__utimes_tv64, __utimes_tv64p)
|
||||
default_symbol_version (__utimes_tv64p, utimes, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__utimes, utimes)
|
||||
#endif
|
@ -1,155 +0,0 @@
|
||||
/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
.text
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
#define WAIT4 __wait4_tv64
|
||||
#else
|
||||
#define WAIT4 __wait4
|
||||
#endif
|
||||
|
||||
#if defined __ASSUME_TIMEVAL64
|
||||
PSEUDO(WAIT4, wait4, 4)
|
||||
ret
|
||||
PSEUDO_END(WAIT4)
|
||||
#else
|
||||
/* The problem here is that initially we made struct timeval compatible with
|
||||
OSF/1, using int32. But we defined time_t with uint64, and later found
|
||||
that POSIX requires tv_sec to be time_t.
|
||||
|
||||
So now we have to do compatibility stuff. */
|
||||
|
||||
/* The variable is shared between all wrappers around signal handling
|
||||
functions which have RT equivalents. */
|
||||
.comm __libc_missing_axp_tv64, 4
|
||||
|
||||
LEAF(WAIT4, 32)
|
||||
ldgp gp, 0(pv)
|
||||
subq sp, 32, sp
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
ldl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Save arguments in case we do need to fall back. */
|
||||
stq a0, 0(sp)
|
||||
stq a1, 8(sp)
|
||||
stq a2, 16(sp)
|
||||
stq a3, 24(sp)
|
||||
|
||||
bne t0, $do32
|
||||
|
||||
ldi v0, SYS_ify(wait4)
|
||||
callsys
|
||||
bne a3, $err64
|
||||
|
||||
/* Everything ok. */
|
||||
addq sp, 32, sp
|
||||
ret
|
||||
|
||||
/* If we didn't get ENOSYS, it is a real error. */
|
||||
.align 3
|
||||
$err64: cmpeq v0, ENOSYS, t0
|
||||
beq t0, $error
|
||||
stl t0, __libc_missing_axp_tv64
|
||||
|
||||
/* Recover the saved arguments. */
|
||||
ldq a3, 24(sp)
|
||||
ldq a2, 16(sp)
|
||||
ldq a1, 8(sp)
|
||||
ldq a0, 0(sp)
|
||||
|
||||
.align 3
|
||||
$do32: ldi v0, SYS_ify(osf_wait4)
|
||||
callsys
|
||||
bne a3, $error
|
||||
|
||||
/* Copy back to proper format. */
|
||||
ldq a3, 24(sp)
|
||||
beq a3, 2f
|
||||
ldl t0, 0(a3) # ru_utime.tv_sec
|
||||
ldl t1, 4(a3) # ru_utime.tv_usec
|
||||
ldl t2, 8(a3) # ru_stime.tv_sec
|
||||
ldl t3, 12(a3) # ru_stime.tv_usec
|
||||
ldt $f15, 16(a3) # ru_maxrss
|
||||
ldt $f16, 24(a3) # ru_ixrss
|
||||
ldt $f17, 32(a3) # ru_idrss
|
||||
ldt $f18, 40(a3) # ru_isrss
|
||||
ldt $f19, 48(a3) # ru_minflt
|
||||
ldt $f20, 56(a3) # ru_majflt
|
||||
ldt $f21, 64(a3) # ru_nswap
|
||||
ldt $f22, 72(a3) # ru_inblock
|
||||
ldt $f23, 80(a3) # ru_oublock
|
||||
ldt $f24, 88(a3) # ru_msgsend
|
||||
ldt $f25, 96(a3) # ru_msgrcv
|
||||
ldt $f26, 104(a3) # ru_nsignals
|
||||
ldt $f27, 112(a3) # ru_nvcsw
|
||||
.set noat
|
||||
ldt $f28, 120(a3) # ru_nivcsw
|
||||
stq t0, 0(a3)
|
||||
stq t1, 8(a3)
|
||||
stq t2, 16(a3)
|
||||
stq t3, 24(a3)
|
||||
stt $f15, 32(a3)
|
||||
stt $f16, 40(a3)
|
||||
stt $f17, 48(a3)
|
||||
stt $f18, 56(a3)
|
||||
stt $f19, 64(a3)
|
||||
stt $f20, 72(a3)
|
||||
stt $f21, 80(a3)
|
||||
stt $f22, 88(a3)
|
||||
stt $f23, 96(a3)
|
||||
stt $f24, 104(a3)
|
||||
stt $f25, 112(a3)
|
||||
stt $f26, 120(a3)
|
||||
stt $f27, 128(a3)
|
||||
stt $f28, 136(a3)
|
||||
.set at
|
||||
|
||||
2: addq sp, 32, sp
|
||||
ret
|
||||
|
||||
.align 3
|
||||
$error:
|
||||
addq sp, 32, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(WAIT4)
|
||||
#endif /* __ASSUME_TIMEVAL64 */
|
||||
|
||||
#if defined PIC && defined DO_VERSIONING
|
||||
default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
|
||||
|
||||
/* It seems to me to be a misfeature of the assembler that we can only
|
||||
have one version-alias per symbol. So create an alias ourselves.
|
||||
The 'p' is for 'public'. *Shrug* */
|
||||
strong_alias (__wait4_tv64, __wait4_tv64p)
|
||||
default_symbol_version (__wait4_tv64p, wait4, GLIBC_2.1)
|
||||
#else
|
||||
weak_alias (__wait4, wait4)
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user