Updated to fedora-glibc-20080828T1623

This commit is contained in:
Jakub Jelinek 2008-08-29 07:42:08 +00:00
parent 2fb513c600
commit 315a43aa94
49 changed files with 815 additions and 661 deletions

160
ChangeLog
View File

@ -1,3 +1,161 @@
2008-08-26 Aurelien Jarno <aurelien@aurel32.net>
[BZ #6860]
* hurd/hurd/signal.h (HURD_MSGPORT_RPC): Fix a typo.
2008-07-18 Daniel Jacobowitz <dan@codesourcery.com>
* Makefile (check-data): Check data directory in add-ons.
* elf/Makefile (check-data): Likewise.
2008-08-18 Roland McGrath <roland@redhat.com>
* configure.in (--with-cpu): Check compiler support for -march/-mcpu.
* configure: Regenerated.
* config.make.in (cflags-cpu): New substituted variable.
(with-cpu): Variable removed.
* Makeconfig (+cflags): Use $(cflags-cpu), not $(with-cpu).
2008-08-14 Ryan S. Arnold <rsa@us.ibm.com>
[BZ #6845]
* sysdeps/powerpc/fpu/bits/mathinline.h (__signbitl): Copy new
__signbitl definition and __LONG_DOUBLE_128__ guard from:
* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: Remove as
redundant. Functions which call floating point assembler operations
should go into a sysdeps powerpc/fpu directory.
2008-08-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/bits/mman.h: Define MAP_STACK.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
2008-08-14 Ulrich Drepper <drepper@redhat.com>
* sysdeps/x86_64/memset.S: Reduce size of tables for PIC.
* sysdeps/unix/sysv/linux/dl-origin.c (_dl_get_origin): Undo all
change related to AT_EXECFN. We cannot use that string.
* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove
_dl_execfn member.
* elf/dl-support.c: Remove _dl_execfn variable.
(_dl_aux_init): Remove handling of AT_EXECFN.
* elf/dl-sysdep.c (_dl_sysdep_start): Remove handling of AT_EXECFN.
* elf/rtld.c (process_envvars): Remove use of __ASSUME_AT_EXECFN.
2008-08-13 Ulrich Drepper <drepper@redhat.com>
[BZ #6544]
* libio/fmemopen.c: Implement binary mode. In this mode no NUL
byte gets added to writes and seeks from the end use the length of
the buffer and not the currently terminating NUL byte.
[BZ #6634]
* login/utmp_file.c (getutent_r_file): Take additional parameter.
Set to true if locking failed.
(getutid_r_file): Adjust caller.
(pututline_file): Likewise. Return NULL in this case.
Patch mostly by halesh.s@gmail.com.
2008-08-12 Ulrich Drepper <drepper@redhat.com>
[BZ #6589]
* sysdeps/unix/sysv/linux/ifaddrs.c (struct sockaddr_ll_max):
Define.
(struct ifaddrs_storage): Use it instead of sockaddr_ll.
2008-08-12 Ryan S. Arnold <rsa@us.ibm.com>
[BZ #6839]
* sysdeps/powerpc/powerpc32/dl-machine.c (CHECK_STATIC_TLS): Remove
macro since it is now available in elf/dynamic-link.h.
2008-08-12 Roland McGrath <roland@frob.com>
* hurd/hurd/signal.h (HURD_MSGPORT_RPC): Avoid -Wparenthesis triggers,
in case used outside of libc.
Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>
2008-08-11 Ulrich Drepper <drepper@redhat.com>
* resolv/res_mkquery.c (res_nmkquery): Call ns_name_compress
directly instead of going through dn_comp.
2008-08-11 Aurelien Jarno <aurel32@debian.org>
* sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock):
Fix asm constraints.
2008-08-07 Ulrich Drepper <drepper@redhat.com>
[BZ #6790]
* sysdeps/unix/sysv/linux/bits/in.h (IP_PMTUDISC_PROBE): Define.
(IPV6_PMTUDISC_PROBE): Likewise.
2008-08-07 Pete Eberlein <eberlein@us.ibm.com>
[BZ #6791]
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h (PROT_SAO): Define.
2008-08-01 Steven Munroe <sjmunroe@us.ibm.com>
Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
[BZ #6817]
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags):
Added the members 'vsx' and 'arch_2_06'.
(_dl_powerpc_platforms): Add the member 'power7'.
* sysdeps/powerpc/dl-procinfo.h: Modify _DL_HWCAP_FIRST
to reflect the changes required by VSX and ISA 2.06.
Modify _DL_PLATFORMS_COUNT to reflect the addition of
'power7'.
Defined PPC_PLATFORM_POWER7.
(_dl_string_platform): Add support for POWER7.
* sysdeps/powerpc/sysdep.h: Define bit masks for VSX
capability and ISA 2.06.
2008-08-07 Ulrich Drepper <drepper@redhat.com>
[BZ #6824]
* sysdeps/unix/sysv/linux/powerpc/bits/mathinline.h: Use correct
macro to detect use of 128 bit long double.
Patch by Ryan S. Arnold <rsa@us.ibm.com>.
2008-08-05 Ulrich Drepper <drepper@redhat.com>
* scripts/gen-as-const.awk: Use 32-bit values on 32-bit platforms.
[BZ #5794]
* sysdeps/i386/fpu/s_expm1l.S: Simply use exp implementation for large
parameters.
* sysdeps/x86_64/fpu/s_expm1l.S: Likewise.
Patch by Denys Vlasenko <dvlasenk@redhat.com>.
2008-08-03 Ulrich Drepper <drepper@redhat.com>
* nscd/connections.c (main_loop_poll): Pass a buffer which is
guaranteed to be large enough to read inotify event. Ignore
EAGAIN error. Better error message. Add branch predicition.
(main_loop_epoll): Likewise.
2008-08-02 Roland McGrath <roland@frob.com>
* sysdeps/mach/i386/machine-lock.h (__spin_unlock, __spin_try_lock):
Add memory clobbers.
2008-08-02 Ulrich Drepper <drepper@redhat.com>
* manual/arith.texi: Avoid @strong{Note:}.
* manual/creature.texi: Likewise.
* manual/filesys.texi: Likewise.
* manual/math.texi: Likewise.
* manual/memory.texi: Likewise.
* manual/resource.texi: Likewise.
* manual/syslog.texi: Likewise.
* manual/time.texi: Likewise.
* sysdeps/posix/clock_getres.c (hp_timing_getres): Remove inline
to prevent warning.
2008-08-01 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/Versions: Fix changes due to old patch for
@ -57,7 +215,7 @@
* sysdeps/posix/getaddrinfo.c (gaih_inet): Raise size of initial
buffer passed to NSS functions.
* nscd/connections.c (nscd_init): Type if preprocessor directive.
* nscd/connections.c (nscd_init): Typo in preprocessor directive.
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PACCEPT):
Define.

View File

@ -643,7 +643,7 @@ ifeq "$(strip $(+cflags))" ""
+cflags := $(default_cflags)
endif # $(+cflags) == ""
+cflags += $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn) $(+merge-constants)
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants)
+gcc-nowarn := -w
# Don't duplicate options if we inherited variables from the parent.

View File

@ -247,8 +247,8 @@ tests-clean:
tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
ifneq ($(CXX),no)
check-data := $(firstword $(wildcard \
$(foreach D,$(add-ons) scripts/data,\
$(patsubst %,$D/c++-types-%.data,\
$(foreach D,$(add-ons) scripts,\
$(patsubst %,$D/data/c++-types-%.data,\
$(abi-name) \
$(addsuffix -$(config-os),\
$(config-machine) \

10
NEWS
View File

@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 2008-8-1
GNU C Library NEWS -- history of user-visible changes. 2008-8-2
Copyright (C) 1992-2007, 2008 Free Software Foundation, Inc.
See the end for copying conditions.
@ -28,8 +28,16 @@ Version 2.9
* Implement "e" option for popen to open file descriptor with the
close-on-exec flag set. Implemented by Ulrich Drepper.
* Implement "b" mode for fmemopen. In this mode writes writes don't
implicitly add a NUL byte and seeks from the end of the buffer really
use the buffer end, not the string length as the basis.
Implemented by Ulrich Drepper.
* Many functions, exported and internal, now atomically set the close-on-exec
flag when run on a sufficiently new kernel. Implemented by Ulrich Drepper.
* Sorting rules for some Indian languages (Kannada, Gurumukhi, Telugu)
Implemented by Pravin Satpute.
Version 2.8

View File

@ -31,7 +31,7 @@ base-machine = @base_machine@
config-vendor = @host_vendor@
config-os = @host_os@
config-sysdirs = @sysnames@
with-cpu = @submachine@
cflags-cpu = @libc_cv_cc_submachine@
defines = @DEFINES@
sysincludes = @SYSINCLUDES@

34
configure vendored
View File

@ -730,6 +730,7 @@ libc_cv_gnu89_inline
libc_cv_have_initfini
no_whole_archive
exceptions
libc_cv_cc_submachine
LIBGD
have_libaudit
have_libcap
@ -2329,7 +2330,6 @@ echo "$as_me: error: --with-cpu requires an argument" >&2;}
fi
# An add-on can set this when it wants to disable the sanity check below.
libc_config_ok=no
@ -7097,6 +7097,35 @@ _ACEOF
fi
fi
if test -n "$submachine"; then
{ echo "$as_me:$LINENO: checking for compiler option for CPU variant" >&5
echo $ECHO_N "checking for compiler option for CPU variant... $ECHO_C" >&6; }
if test "${libc_cv_cc_submachine+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
libc_cv_cc_submachine=no
for opt in "-march=$submachine" "-mcpu=$submachine"; do
if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
libc_cv_cc_submachine="$opt"
break
fi
done
fi
{ echo "$as_me:$LINENO: result: $libc_cv_cc_submachine" >&5
echo "${ECHO_T}$libc_cv_cc_submachine" >&6; }
if test "x$libc_cv_cc_submachine" = xno; then
{ { echo "$as_me:$LINENO: error: ${CC-cc} does not support $submachine" >&5
echo "$as_me: error: ${CC-cc} does not support $submachine" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
{ echo "$as_me:$LINENO: checking for libgd" >&5
echo $ECHO_N "checking for libgd... $ECHO_C" >&6; }
if test "$with_gd" != "no"; then
@ -9264,6 +9293,7 @@ libc_cv_gnu89_inline!$libc_cv_gnu89_inline$ac_delim
libc_cv_have_initfini!$libc_cv_have_initfini$ac_delim
no_whole_archive!$no_whole_archive$ac_delim
exceptions!$exceptions$ac_delim
libc_cv_cc_submachine!$libc_cv_cc_submachine$ac_delim
LIBGD!$LIBGD$ac_delim
have_libaudit!$have_libaudit$ac_delim
have_libcap!$have_libcap$ac_delim
@ -9301,7 +9331,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 53; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@ -326,7 +326,6 @@ AC_ARG_WITH([cpu],
esac
])
# An add-on can set this when it wants to disable the sanity check below.
libc_config_ok=no
@ -1973,6 +1972,22 @@ EOF
fi
fi
if test -n "$submachine"; then
AC_CACHE_CHECK([for compiler option for CPU variant],
libc_cv_cc_submachine, [dnl
libc_cv_cc_submachine=no
for opt in "-march=$submachine" "-mcpu=$submachine"; do
if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
libc_cv_cc_submachine="$opt"
break
fi
done])
if test "x$libc_cv_cc_submachine" = xno; then
AC_MSG_ERROR([${CC-cc} does not support $submachine])
fi
fi
AC_SUBST(libc_cv_cc_submachine)
dnl Check whether we have the gd library available.
AC_MSG_CHECKING(for libgd)
if test "$with_gd" != "no"; then

View File

@ -841,8 +841,8 @@ $(objpfx)tst-dlmodcount: $(libdl)
$(objpfx)tst-dlmodcount.out: $(test-modules)
check-data := $(firstword $(wildcard \
$(foreach D,$(add-ons) scripts/data,\
$(patsubst %,$(..)$D/localplt-%.data,\
$(foreach D,$(add-ons) scripts,\
$(patsubst %,$(..)$D/data/localplt-%.data,\
$(abi-name) \
$(addsuffix -$(config-os),\
$(config-machine) \

View File

@ -62,12 +62,8 @@ struct link_map *_dl_profile_map;
/* This is the address of the last stack address ever used. */
void *__libc_stack_end;
#ifndef __ASSUME_AT_EXECFN
/* Path where the binary is found. */
const char *_dl_origin_path;
#endif
/* File Name of the executable. */
const char *_dl_execfn;
/* Nonzero if runtime lookup should not update the .got/.plt. */
int _dl_bind_not;
@ -220,9 +216,6 @@ _dl_aux_init (ElfW(auxv_t) *av)
__libc_enable_secure = av->a_un.a_val;
__libc_enable_secure_decided = 1;
break;
case AT_EXECFN:
GLRO(dl_execfn) = (void *) av->a_un.a_val;
break;
# ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
# endif

View File

@ -173,9 +173,6 @@ _dl_sysdep_start (void **start_argptr,
GLRO(dl_sysinfo_dso) = (void *) av->a_un.a_val;
break;
#endif
case AT_EXECFN:
GLRO(dl_execfn) = (void *) av->a_un.a_val;
break;
#ifdef DL_PLATFORM_AUXV
DL_PLATFORM_AUXV
#endif

View File

@ -2579,12 +2579,10 @@ process_envvars (enum mode *modep)
break;
case 11:
#ifndef __ASSUME_AT_EXECFN
/* Path where the binary is found. */
if (!INTUSE(__libc_enable_secure)
&& memcmp (envline, "ORIGIN_PATH", 11) == 0)
GLRO(dl_origin_path) = &envline[12];
#endif
break;
case 12:

View File

@ -3,5 +3,5 @@ glibc-branch := fedora
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-f8
fedora-sync-date := 2008-08-02 08:09 UTC
fedora-sync-tag := fedora-glibc-20080802T0809
fedora-sync-date := 2008-08-28 16:23 UTC
fedora-sync-tag := fedora-glibc-20080828T1623

View File

@ -19,7 +19,7 @@
Summary: The GNU libc libraries
Name: glibc
Version: @glibcversion@
Release: 11
Release: 12
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
# Things that are linked directly into dynamically linked programs
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
@ -976,6 +976,15 @@ rm -f *.filelist*
%endif
%changelog
* Fri Aug 29 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-12
- update from trunk
- revert origin changes (#457849)
- use MAP_STACK for thread stacks
- misc fixes (BZ#6845, BZ#6544, BZ#6634, BZ#6589, BZ#6790, BZ#6791,
BZ#6824)
- power7 bits (BZ#6817)
- fix expm1 on i?86/x86_64 (#43354, BZ#5794)
* Sat Aug 2 2008 Jakub Jelinek <jakub@redhat.com> 2.8.90-11
- update from trunk
- fix non-absolute $ORIGIN handling (#457560)

View File

@ -1,5 +1,6 @@
/* Implementing POSIX.1 signals under the Hurd.
Copyright (C) 1993,94,95,96,98,99,2002,2007 Free Software Foundation, Inc.
Copyright (C) 1993,94,95,96,98,99,2002,2007,2008
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
@ -342,10 +343,12 @@ extern mach_msg_timeout_t _hurd_interrupted_rpc_timeout;
do \
{ \
/* Get the message port. */ \
if (__err = (fetch_msgport_expr)) \
__err = (fetch_msgport_expr); \
if (__err) \
break; \
/* Get the reference port. */ \
if (__err = (fetch_refport_expr)) \
__err = (fetch_refport_expr); \
if (__err) \
{ \
/* Couldn't get it; deallocate MSGPORT and fail. */ \
__mach_port_deallocate (__mach_task_self (), msgport); \

View File

@ -1,5 +1,5 @@
/* Fmemopen implementation.
Copyright (C) 2000, 2002, 2005, 2006 Free Software Foundation, Inc.
Copyright (C) 2000, 2002, 2005, 2006, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Hanno Mueller, kontakt@hanno.de, 2000.
@ -82,6 +82,7 @@ struct fmemopen_cookie_struct
{
char *buffer;
int mybuffer;
int binmode;
size_t size;
_IO_off64_t pos;
size_t maxpos;
@ -120,7 +121,7 @@ fmemopen_write (void *cookie, const char *b, size_t s)
c = (fmemopen_cookie_t *) cookie;
addnullc = s == 0 || b[s - 1] != '\0';
addnullc = c->binmode == 0 && (s == 0 || b[s - 1] != '\0');
if (c->pos + s + addnullc > c->size)
{
@ -165,7 +166,7 @@ fmemopen_seek (void *cookie, _IO_off64_t *p, int w)
break;
case SEEK_END:
np = c->maxpos - *p;
np = (c->binmode ? c->size : c->maxpos) - *p;
break;
default:
@ -248,6 +249,8 @@ fmemopen (void *buf, size_t len, const char *mode)
else
c->pos = 0;
c->binmode = mode[0] != '\0' && mode[1] == 'b';
iof.read = fmemopen_read;
iof.write = fmemopen_write;
iof.seek = fmemopen_seek;

View File

@ -22,6 +22,7 @@
#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
@ -244,12 +245,16 @@ getutent_r_file (struct utmp *buffer, struct utmp **result)
static int
internal_getut_r (const struct utmp *id, struct utmp *buffer)
internal_getut_r (const struct utmp *id, struct utmp *buffer,
bool *lock_failed)
{
int result = -1;
LOCK_FILE (file_fd, F_RDLCK)
{
*lock_failed = true;
LOCKING_FAILED ();
}
#if _HAVE_UT_TYPE - 0
if (id->ut_type == RUN_LVL || id->ut_type == BOOT_TIME
@ -320,7 +325,10 @@ getutid_r_file (const struct utmp *id, struct utmp *buffer,
return -1;
}
if (internal_getut_r (id, &last_entry) < 0)
/* We don't have to distinguish whether we can lock the file or
whether there is no entry. */
bool lock_failed = false;
if (internal_getut_r (id, &last_entry, &lock_failed) < 0)
{
*result = NULL;
return -1;
@ -410,7 +418,16 @@ pututline_file (const struct utmp *data)
__utmp_equal (&last_entry, data)))
found = 1;
else
found = internal_getut_r (data, &buffer);
{
bool lock_failed = false;
found = internal_getut_r (data, &buffer, &lock_failed);
if (__builtin_expect (lock_failed, false))
{
__set_errno (EAGAIN);
return NULL;
}
}
LOCK_FILE (file_fd, F_WRLCK)
{

View File

@ -418,7 +418,7 @@ This function returns @code{-1} if @var{x} represents negative infinity,
This function returns a nonzero value if @var{x} is a ``not a number''
value, and zero otherwise.
@strong{Note:} The @code{isnan} macro defined by @w{ISO C99} overrides
@strong{NB:} The @code{isnan} macro defined by @w{ISO C99} overrides
the BSD function. This is normally not a problem, because the two
routines behave identically. However, if you really need to get the BSD
function for some reason, you can write
@ -968,7 +968,7 @@ decide whether traps will occur for each of the exceptions, by setting
bits in the @dfn{control word}. In C, traps result in the program
receiving the @code{SIGFPE} signal; see @ref{Signal Handling}.
@strong{Note:} @w{IEEE 754} says that trap handlers are given details of
@strong{NB:} @w{IEEE 754} says that trap handlers are given details of
the exceptional situation, and can set the result value. C signals do
not provide any mechanism to pass this information back and forth.
Trapping exceptions in C is therefore not very useful.
@ -1721,7 +1721,7 @@ Not all machines provide hardware support for these operations. On
machines that don't, the macros can be very slow. Therefore, you should
not use these functions when NaN is not a concern.
@strong{Note:} There are no macros @code{isequal} or @code{isunequal}.
@strong{NB:} There are no macros @code{isequal} or @code{isunequal}.
They are unnecessary, because the @code{==} and @code{!=} operators do
@emph{not} throw an exception if one or both of the operands are NaN.

View File

@ -217,7 +217,7 @@ sequence of definitions:
Note that if you do this, you must link your program with the BSD
compatibility library by passing the @samp{-lbsd-compat} option to the
compiler or linker. @strong{Note:} If you forget to do this, you may
compiler or linker. @strong{NB:} If you forget to do this, you may
get very strange errors at run time.
@end defvr

View File

@ -3239,7 +3239,7 @@ are replaced with six characters which make the whole string a unique
file name. Usually the template string is something like
@samp{/tmp/@var{prefix}XXXXXX}, and each program uses a unique @var{prefix}.
@strong{Note:} Because @code{mktemp} and @code{mkstemp} modify the
@strong{NB:} Because @code{mktemp} and @code{mkstemp} modify the
template string, you @emph{must not} pass string constants to them.
String constants are normally in read-only storage, so your program
would crash when @code{mktemp} or @code{mkstemp} tried to modify the

View File

@ -1366,7 +1366,7 @@ The prototypes for these functions are in @file{stdlib.h}.
This function returns the next pseudo-random number in the sequence.
The value returned ranges from @code{0} to @code{RAND_MAX}.
@strong{Note:} Temporarily this function was defined to return a
@strong{NB:} Temporarily this function was defined to return a
@code{int32_t} value to indicate that the return value always contains
32 bits even if @code{long int} is wider. The standard demands it
differently. Users must always be aware of the 32-bit limitation,

View File

@ -2326,7 +2326,7 @@ additional block on each iteration. This is impossible with
variable-sized arrays.
@end itemize
@strong{Note:} If you mix use of @code{alloca} and variable-sized arrays
@strong{NB:} If you mix use of @code{alloca} and variable-sized arrays
within one function, exiting a scope in which a variable-sized array was
declared frees all blocks allocated with @code{alloca} during the
execution of that scope.

View File

@ -591,7 +591,7 @@ ready to execute instructions right now. When a process blocks to wait
for something like I/O, its absolute priority is irrelevant.
@cindex runnable process
@strong{Note:} The term ``runnable'' is a synonym for ``ready to run.''
@strong{NB:} The term ``runnable'' is a synonym for ``ready to run.''
When two processes are running or ready to run and both have the same
absolute priority, it's more interesting. In that case, who gets the
@ -663,7 +663,7 @@ privileged process constantly monitors the process' CPU usage and raises
its absolute priority when the process isn't getting its entitled share
and lowers it when the process is exceeding it.
@strong{Note:} The absolute priority is sometimes called the ``static
@strong{NB:} The absolute priority is sometimes called the ``static
priority.'' We don't use that term in this manual because it misses the
most important feature of the absolute priority: its absoluteness.

View File

@ -337,7 +337,7 @@ Locally defined
Results are undefined if the facility code is anything else.
@strong{note:} @code{syslog} recognizes one other facility code: that of
@strong{NB:} @code{syslog} recognizes one other facility code: that of
the kernel. But you can't specify that facility code with these
functions. If you try, it looks the same to @code{syslog} as if you are
requesting the default facility. But you wouldn't want to anyway,

View File

@ -1652,7 +1652,7 @@ The seconds as a decimal number (range @code{0} through @code{60}).
Leading zeroes are permitted but not required.
@strong{Note:} The Unix specification says the upper bound on this value
@strong{NB:} The Unix specification says the upper bound on this value
is @code{61}, a result of a decision to allow double leap seconds. You
will not see the value @code{61} because no minute has more than one
leap second, but the myth persists.

View File

@ -1,3 +1,12 @@
2008-08-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and
ARCH_RETRY_MMAP definitions.
* allocatestack.c: Remove definition of ARCH_MAP_FLAGS.
Define MAP_STACK when not defined.
(allocate_stack): Use MAP_STACK instead of ARCH_MAP_FLAGS. Remove
handling of ARCH_RETRY_MMAP.
2008-07-30 Ulrich Drepper <drepper@redhat.com>
* tst-align2.c (f): Print message that f is reached.

View File

@ -84,10 +84,10 @@
#endif
/* Let the architecture add some flags to the mmap() call used to
allocate stacks. */
#ifndef ARCH_MAP_FLAGS
# define ARCH_MAP_FLAGS 0
/* Newer kernels have the MAP_STACK flag to indicate a mapping is used for
a stack. Use it when possible. */
#ifndef MAP_STACK
# define MAP_STACK 0
#endif
/* This yields the pointer that TLS support code calls the thread pointer. */
@ -454,21 +454,15 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
#endif
mem = mmap (NULL, size, prot,
MAP_PRIVATE | MAP_ANONYMOUS | ARCH_MAP_FLAGS, -1, 0);
MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
if (__builtin_expect (mem == MAP_FAILED, 0))
{
#ifdef ARCH_RETRY_MMAP
mem = ARCH_RETRY_MMAP (size, prot);
if (__builtin_expect (mem == MAP_FAILED, 0))
#endif
{
if (errno == ENOMEM)
errno = EAGAIN;
__set_errno (EAGAIN);
return errno;
}
}
/* SIZE is guaranteed to be greater than zero.
So we can never get a null pointer back from mmap. */

View File

@ -36,16 +36,6 @@
({ char *frame; asm ("movq %%rsp, %0" : "=r" (frame)); frame; })
/* We prefer to have the stack allocated in the low 4GB since this
allows faster context switches. */
#define ARCH_MAP_FLAGS MAP_32BIT
/* If it is not possible to allocate memory there retry without that
flag. */
#define ARCH_RETRY_MMAP(size, prot) \
mmap (NULL, size, prot, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
/* XXX Until we have a better place keep the definitions here. */
/* While there is no such syscall. */

View File

@ -1868,8 +1868,11 @@ main_loop_poll (void)
bool to_clear[lastdb] = { false, };
union
{
# ifndef PATH_MAX
# define PATH_MAX 1024
# endif
struct inotify_event i;
char buf[100];
char buf[sizeof (struct inotify_event) + PATH_MAX];
} inev;
while (1)
@ -1878,17 +1881,20 @@ main_loop_poll (void)
sizeof (inev)));
if (nb < (ssize_t) sizeof (struct inotify_event))
{
if (nb == -1)
if (__builtin_expect (nb == -1 && errno != EAGAIN,
0))
{
/* Something went wrong when reading the inotify
data. Better disable inotify. */
dbg_log (_("\
disabled inotify after read error %d"),
errno);
conns[1].fd = -1;
firstfree = 1;
if (nused == 2)
nused = 1;
close (inotify_fd);
inotify_fd = -1;
dbg_log (_("disabled inotify after read error"));
}
break;
}
@ -2047,7 +2053,7 @@ main_loop_epoll (int efd)
union
{
struct inotify_event i;
char buf[100];
char buf[sizeof (struct inotify_event) + PATH_MAX];
} inev;
while (1)
@ -2056,15 +2062,16 @@ main_loop_epoll (int efd)
sizeof (inev)));
if (nb < (ssize_t) sizeof (struct inotify_event))
{
if (nb == -1)
if (__builtin_expect (nb == -1 && errno != EAGAIN, 0))
{
/* Something went wrong when reading the inotify
data. Better disable inotify. */
dbg_log (_("disabled inotify after read error %d"),
errno);
(void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd,
NULL);
close (inotify_fd);
inotify_fd = -1;
dbg_log (_("disabled inotify after read error"));
}
break;
}

View File

@ -160,7 +160,10 @@ res_nmkquery(res_state statp,
if ((buflen -= QFIXEDSZ) < 0)
return (-1);
compose:
if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
n = ns_name_compress(dname, cp, buflen,
(const u_char **) dnptrs,
(const u_char **) lastdnptr);
if (n < 0)
return (-1);
cp += n;
buflen -= n;
@ -172,7 +175,9 @@ res_nmkquery(res_state statp,
/*
* Make an additional record for completion domain.
*/
n = dn_comp((char *)data, cp, buflen, dnptrs, lastdnptr);
n = ns_name_compress((char *)data, cp, buflen,
(const u_char **) dnptrs,
(const u_char **) lastdnptr);
if (__builtin_expect (n < 0, 0))
return (-1);
cp += n;

View File

@ -16,12 +16,20 @@ NF >= 1 && !started {
if (test) {
print "\n#include <inttypes.h>";
print "\n#include <stdio.h>";
print "\n#if __WORDSIZE__ == 64";
print "\ntypedef uint64_t c_t;";
print "\n#define U(n) UINT64_C (n)";
print "\n#define PRI PRId64";
print "\n#else";
print "\ntypedef uint32_t c_t;";
print "\n#define U(n) UINT32_C (n)";
print "\n#define PRI PRId32";
print "\n#endif";
print "\nstatic int do_test (void)\n{\n int bad = 0, good = 0;\n";
print "#define TEST(name, source, expr) \\\n" \
" if (U (asconst_##name) != (uint64_t) (expr)) { ++bad;" \
" fprintf (stderr, \"%s: %s is %\" PRId64 \" but %s is %\"PRId64 \"\\n\"," \
" source, #name, U (asconst_##name), #expr, (uint64_t) (expr));" \
" if (U (asconst_##name) != (c_t) (expr)) { ++bad;" \
" fprintf (stderr, \"%s: %s is %\" PRI \" but %s is %\"PRI \"\\n\"," \
" source, #name, U (asconst_##name), #expr, (c_t) (expr));" \
" } else ++good;\n";
}
else

View File

@ -593,13 +593,8 @@ struct rtld_global_ro
/* Names of shared object for which the RPATH should be ignored. */
EXTERN const char *_dl_inhibit_rpath;
#ifndef __ASSUME_AT_EXECFN
/* Location of the binary. */
EXTERN const char *_dl_origin_path;
#endif
/* If set, points to the file name of the executable. */
EXTERN const char *_dl_execfn;
/* -1 if the dynamic linker should honor library load bias,
0 if not, -2 use the default (honor biases for normal

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
Copyright (C) 1996, 1997, 2002, 2005 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 2002, 2005, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@ -48,6 +48,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.text
ENTRY(__expm1l)
movzwl 4+8(%esp), %eax // load sign bit and 15-bit exponent
xorb $0x80, %ah // invert sign bit (now 1 is "positive")
cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
fldt 4(%esp) // x
fxam // Is NaN or +-Inf?
fstsw %ax

View File

@ -1,5 +1,5 @@
/* Machine-specific definition for spin locks. i386 version.
Copyright (C) 1994, 1997, 2007 Free Software Foundation, Inc.
Copyright (C) 1994,1997,2007,2008 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
@ -40,7 +40,8 @@ __spin_unlock (__spin_lock_t *__lock)
{
register int __unlocked;
__asm__ __volatile ("xchgl %0, %1"
: "=&r" (__unlocked), "=m" (*__lock) : "0" (0));
: "=&r" (__unlocked), "=m" (*__lock) : "0" (0)
: "memory");
}
/* Try to lock LOCK; return nonzero if we locked it, zero if another has. */
@ -50,7 +51,8 @@ __spin_try_lock (__spin_lock_t *__lock)
{
register int __locked;
__asm__ __volatile ("xchgl %0, %1"
: "=&r" (__locked), "=m" (*__lock) : "0" (1));
: "=&r" (__locked), "=m" (*__lock) : "0" (1)
: "memory");
return !__locked;
}

View File

@ -1,5 +1,5 @@
/* clock_getres -- Get the resolution of a POSIX clockid_t.
Copyright (C) 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
Copyright (C) 1999,2000,2001,2003,2004,2008 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
@ -28,7 +28,7 @@
#if HP_TIMING_AVAIL
static long int nsec; /* Clock frequency of the processor. */
static inline int
static int
hp_timing_getres (struct timespec *res)
{
if (__builtin_expect (nsec == 0, 0))

View File

@ -46,11 +46,12 @@
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags
#else
PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#endif
#ifndef PROCINFO_DECL
= {
"power6x", "dfp", "pa6t",
"vsx",
"arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
"notb", "efpdouble", "efpsingle", "spe",
@ -67,7 +68,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
PROCINFO_CLASS const char _dl_powerpc_platforms[8][12]
#endif
#ifndef PROCINFO_DECL
= {
@ -77,7 +78,8 @@ PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
[PPC_PLATFORM_POWER5_PLUS] = "power5+",
[PPC_PLATFORM_POWER6] = "power6",
[PPC_PLATFORM_CELL_BE] = "ppc-cell-be",
[PPC_PLATFORM_POWER6X] = "power6x"
[PPC_PLATFORM_POWER6X] = "power6x",
[PPC_PLATFORM_POWER7] = "power7"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL

View File

@ -23,15 +23,15 @@
#include <ldsodefs.h>
#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
/* There are 20 bits used, but they are bits 12..31. */
#define _DL_HWCAP_FIRST 9
/* There are 25 bits used, but they are bits 7..31. */
#define _DL_HWCAP_FIRST 7
#define _DL_HWCAP_COUNT 32
/* These bits influence library search. */
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
#define _DL_PLATFORMS_COUNT 7
#define _DL_PLATFORMS_COUNT 8
#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
@ -46,6 +46,7 @@
#define PPC_PLATFORM_POWER6 4
#define PPC_PLATFORM_CELL_BE 5
#define PPC_PLATFORM_POWER6X 6
#define PPC_PLATFORM_POWER7 7
static inline const char *
__attribute__ ((unused))
@ -103,6 +104,9 @@ _dl_string_platform (const char *str)
++str;
}
break;
case '7':
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
break;
default:
return -1;
}

View File

@ -1,5 +1,5 @@
/* Inline math functions for powerpc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -72,6 +72,14 @@ __NTH (__signbit (double __x))
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[0] < 0;
}
# ifdef __LONG_DOUBLE_128__
__MATH_INLINE int
__NTH (__signbitl (long double __x))
{
__extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
return __u.__i[0] < 0;
}
# endif
# endif
#endif /* __USE_ISOC99 */

View File

@ -557,11 +557,6 @@ __process_machine_rela (struct link_map *map,
}
break;
#define CHECK_STATIC_TLS(map, sym_map) \
do { \
if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
_dl_allocate_static_tls (sym_map); \
} while (0)
#define DO_TLS_RELOC(suffix) \
case R_PPC_DTPREL##suffix: \
/* During relocation all TLS symbols are defined and used. \

View File

@ -44,6 +44,8 @@
#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
#define PPC_FEATURE_HAS_VSX 0x00000100 /* P7 Vector Extension. */
#define PPC_FEATURE_ARCH_2_06 0x00000080 /* ISA 2.06 */
#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
#ifdef __ASSEMBLER__

View File

@ -70,6 +70,7 @@
#define IP_PMTUDISC_DONT 0 /* Never send DF frames. */
#define IP_PMTUDISC_WANT 1 /* Use per route hints. */
#define IP_PMTUDISC_DO 2 /* Always DF. */
#define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
/* To select the IP level. */
#define SOL_IP 0
@ -162,6 +163,7 @@ struct in_pktinfo
#define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
#define IPV6_PMTUDISC_WANT 1 /* Use per route hints. */
#define IPV6_PMTUDISC_DO 2 /* Always DF. */
#define IPV6_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
/* Socket level values for IPv6. */
#define SOL_IPV6 41

View File

@ -1,5 +1,5 @@
/* clock_getres -- Get the resolution of a POSIX clockid_t. Linux version.
Copyright (C) 2003,2004,2005,2006 Free Software Foundation, Inc.
Copyright (C) 2003,2004,2005,2006, 2008 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

View File

@ -1,5 +1,5 @@
/* Find path of executable.
Copyright (C) 1998-2000, 2002, 2004, 2008 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -36,28 +36,29 @@ const char *
_dl_get_origin (void)
{
char linkval[PATH_MAX];
const char *str;
char *result = (char *) -1l;
char *result;
int len;
str = GLRO(dl_execfn);
if (str == NULL || str[0] != '/')
{
INTERNAL_SYSCALL_DECL (err);
len = INTERNAL_SYSCALL (readlink, err, 3, "/proc/self/exe", linkval,
sizeof (linkval));
if (! INTERNAL_SYSCALL_ERROR_P (len, err)
&& len > 0 && linkval[0] != '[')
str = linkval;
if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[')
{
/* We can use this value. */
assert (linkval[0] == '/');
while (len > 1 && linkval[len - 1] != '/')
--len;
result = (char *) malloc (len + 1);
if (result == NULL)
result = (char *) -1;
else if (len == 1)
memcpy (result, "/", 2);
else
str = NULL;
*((char *) __mempcpy (result, linkval, len - 1)) = '\0';
}
else
len = strlen (str);
if (str == NULL)
{
result = (char *) -1;
/* We use the environment variable LD_ORIGIN_PATH. If it is set make
a copy and strip out trailing slashes. */
if (GLRO(dl_origin_path) != NULL)
@ -75,20 +76,6 @@ _dl_get_origin (void)
}
}
}
else
{
/* We can use this value. */
assert (str[0] == '/');
while (len > 1 && str[len - 1] != '/')
--len;
result = (char *) malloc (len + 1);
if (result == NULL)
result = (char *) -1;
else if (len == 1)
memcpy (result, "/", 2);
else
*((char *) __mempcpy (result, str, len - 1)) = '\0';
}
return result;
}

View File

@ -63,6 +63,7 @@
# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
#endif
/* Flags to `msync'. */

View File

@ -1,5 +1,5 @@
/* getifaddrs -- get names and addresses of all network interfaces
Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2003-2007, 2008 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
@ -49,6 +49,22 @@ int __no_netlink_support attribute_hidden;
#endif
/* There is a problem with this type. The address length for
Infiniband sockets is much longer than the 8 bytes allocated in the
sockaddr_ll definition. Hence we use here a special
definition. */
struct sockaddr_ll_max
{
unsigned short int sll_family;
unsigned short int sll_protocol;
int sll_ifindex;
unsigned short int sll_hatype;
unsigned char sll_pkttype;
unsigned char sll_halen;
unsigned char sll_addr[24];
};
/* struct to hold the data for one ifaddrs entry, so we can allocate
everything at once. */
struct ifaddrs_storage
@ -59,7 +75,7 @@ struct ifaddrs_storage
/* Save space for the biggest of the four used sockaddr types and
avoid a lot of casts. */
struct sockaddr sa;
struct sockaddr_ll sl;
struct sockaddr_ll_max sl;
struct sockaddr_in s4;
struct sockaddr_in6 s6;
} addr, netmask, broadaddr;
@ -307,7 +323,7 @@ map_newlink (int index, struct ifaddrs_storage *ifas, int *map, int max)
/* Create a linked list of `struct ifaddrs' structures, one for each
network interface on the host machine. If successful, store the
list in *IFAP and return 0. On errors, return -1 and set `errno'. */
list in *IFAP and 2004, 2005, 2006, return 0. On errors, return -1 and set `errno'. */
int
getifaddrs (struct ifaddrs **ifap)
{

View File

@ -1,132 +0,0 @@
/* Inline math functions for powerpc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2004, 2006, 2007, 2008
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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#ifndef _MATH_H
# error "Never use <bits/mathinline.h> directly; include <math.h> instead."
#endif
#ifndef __extern_inline
# define __MATH_INLINE __inline
#else
# define __MATH_INLINE __extern_inline
#endif /* __cplusplus */
#if defined __GNUC__ && !defined _SOFT_FLOAT
#ifdef __USE_ISOC99
# if !__GNUC_PREREQ (2,97)
# define __unordered_cmp(x, y) \
(__extension__ \
({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \
unsigned __r; \
__asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y) \
: "cr7"); \
__r; }))
# undef isgreater
# undef isgreaterequal
# undef isless
# undef islessequal
# undef islessgreater
# undef isunordered
# define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
# define isgreaterequal(x, y) ((__unordered_cmp (x, y) & 6) != 0)
# define isless(x, y) (__unordered_cmp (x, y) >> 3 & 1)
# define islessequal(x, y) ((__unordered_cmp (x, y) & 0xA) != 0)
# define islessgreater(x, y) ((__unordered_cmp (x, y) & 0xC) != 0)
# define isunordered(x, y) (__unordered_cmp (x, y) & 1)
# endif /* __GNUC_PREREQ (2,97) */
/* The gcc, version 2.7 or below, has problems with all this inlining
code. So disable it for this version of the compiler. */
# if __GNUC_PREREQ (2, 8)
/* Test for negative number. Used in the signbit() macro. */
__MATH_INLINE int
__NTH (__signbitf (float __x))
{
__extension__ union { float __f; int __i; } __u = { __f: __x };
return __u.__i < 0;
}
__MATH_INLINE int
__NTH (__signbit (double __x))
{
__extension__ union { double __d; int __i[2]; } __u = { __d: __x };
return __u.__i[0] < 0;
}
# ifdef __LONGDOUBLE128
__MATH_INLINE int
__NTH (__signbitl (long double __x))
{
__extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
return __u.__i[0] < 0;
}
# endif
# endif
#endif /* __USE_ISOC99 */
#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
#ifdef __USE_ISOC99
# ifndef __powerpc64__
__MATH_INLINE long int lrint (double __x) __THROW;
__MATH_INLINE long int
__NTH (lrint (double __x))
{
union {
double __d;
int __ll[2];
} __u;
__asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
return __u.__ll[1];
}
__MATH_INLINE long int lrintf (float __x) __THROW;
__MATH_INLINE long int
__NTH (lrintf (float __x))
{
union {
double __d;
int __ll[2];
} __u;
__asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
return __u.__ll[1];
}
# endif
__MATH_INLINE double fdim (double __x, double __y) __THROW;
__MATH_INLINE double
__NTH (fdim (double __x, double __y))
{
return __x <= __y ? 0 : __x - __y;
}
__MATH_INLINE float fdimf (float __x, float __y) __THROW;
__MATH_INLINE float
__NTH (fdimf (float __x, float __y))
{
return __x <= __y ? 0 : __x - __y;
}
#endif /* __USE_ISOC99 */
#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
#endif /* __GNUC__ && !_SOFT_FLOAT */

View File

@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/PowerPC version.
Copyright (C) 1997, 2000, 2003, 2005, 2006 Free Software Foundation, Inc.
Copyright (C) 1997,2000,2003,2005,2006,2008 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
@ -34,6 +34,7 @@
#define PROT_WRITE 0x2 /* Page can be written. */
#define PROT_EXEC 0x4 /* Page can be executed. */
#define PROT_NONE 0x0 /* Page can not be accessed. */
#define PROT_SAO 0x10 /* Strong Access Ordering. */
#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
growsdown vma (mprotect only). */
#define PROT_GROWSUP 0x02000000 /* Extend change to start of

View File

@ -64,6 +64,7 @@
# define MAP_NORESERVE 0x04000 /* Don't check for reservations. */
# define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
# define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
# define MAP_STACK 0x20000 /* Allocation is for a stack. */
#endif
/* Flags to `msync'. */

View File

@ -1,5 +1,5 @@
/* ix87 specific implementation of exp(x)-1.
Copyright (C) 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 2001, 2002, 2008 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
Based on code by John C. Bowman <bowman@ipp-garching.mpg.de>.
@ -48,6 +48,11 @@ l2e: .tfloat 1.442695040888963407359924681002
.text
ENTRY(__expm1l)
movzwl 8+8(%rsp), %eax // load sign bit and 15-bit exponent
xorb $0x80, %ah // invert sign bit (now 1 is "positive")
cmpl $0xc006, %eax // is num positive and exp >= 6 (number is >= 128.0)?
jae __ieee754_expl // (if num is denormal, it is at least >= 64.0)
fldt 8(%rsp) // x
fxam // Is NaN or +-Inf?
fstsw %ax

View File

@ -55,12 +55,14 @@ L(now_dw_aligned):
cmp $0x90,%r8
jg L(ck_mem_ops_method)
L(now_dw_aligned_small):
lea L(setPxQx)(%rip),%r11
add %r8,%rdi
#ifndef PIC
lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
movslq (%r11,%r8,4),%rcx
lea L(Got0)(%rip),%r11
lea L(setPxQx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -115,177 +117,177 @@ L(setPxQx):
# endif
#else
L(setPxQx):
.int L(Got0)-L(setPxQx)
.int L(P1Q0)-L(setPxQx)
.int L(P2Q0)-L(setPxQx)
.int L(P3Q0)-L(setPxQx)
.int L(P4Q0)-L(setPxQx)
.int L(P5Q0)-L(setPxQx)
.int L(P6Q0)-L(setPxQx)
.int L(P7Q0)-L(setPxQx)
.short L(Got0)-L(Got0)
.short L(P1Q0)-L(Got0)
.short L(P2Q0)-L(Got0)
.short L(P3Q0)-L(Got0)
.short L(P4Q0)-L(Got0)
.short L(P5Q0)-L(Got0)
.short L(P6Q0)-L(Got0)
.short L(P7Q0)-L(Got0)
.int L(P0Q1)-L(setPxQx)
.int L(P1Q1)-L(setPxQx)
.int L(P2Q1)-L(setPxQx)
.int L(P3Q1)-L(setPxQx)
.int L(P4Q1)-L(setPxQx)
.int L(P5Q1)-L(setPxQx)
.int L(P6Q1)-L(setPxQx)
.int L(P7Q1)-L(setPxQx)
.short L(P0Q1)-L(Got0)
.short L(P1Q1)-L(Got0)
.short L(P2Q1)-L(Got0)
.short L(P3Q1)-L(Got0)
.short L(P4Q1)-L(Got0)
.short L(P5Q1)-L(Got0)
.short L(P6Q1)-L(Got0)
.short L(P7Q1)-L(Got0)
.int L(P0Q2)-L(setPxQx)
.int L(P1Q2)-L(setPxQx)
.int L(P2Q2)-L(setPxQx)
.int L(P3Q2)-L(setPxQx)
.int L(P4Q2)-L(setPxQx)
.int L(P5Q2)-L(setPxQx)
.int L(P6Q2)-L(setPxQx)
.int L(P7Q2)-L(setPxQx)
.short L(P0Q2)-L(Got0)
.short L(P1Q2)-L(Got0)
.short L(P2Q2)-L(Got0)
.short L(P3Q2)-L(Got0)
.short L(P4Q2)-L(Got0)
.short L(P5Q2)-L(Got0)
.short L(P6Q2)-L(Got0)
.short L(P7Q2)-L(Got0)
.int L(P0Q3)-L(setPxQx)
.int L(P1Q3)-L(setPxQx)
.int L(P2Q3)-L(setPxQx)
.int L(P3Q3)-L(setPxQx)
.int L(P4Q3)-L(setPxQx)
.int L(P5Q3)-L(setPxQx)
.int L(P6Q3)-L(setPxQx)
.int L(P7Q3)-L(setPxQx)
.short L(P0Q3)-L(Got0)
.short L(P1Q3)-L(Got0)
.short L(P2Q3)-L(Got0)
.short L(P3Q3)-L(Got0)
.short L(P4Q3)-L(Got0)
.short L(P5Q3)-L(Got0)
.short L(P6Q3)-L(Got0)
.short L(P7Q3)-L(Got0)
.int L(P0Q4)-L(setPxQx)
.int L(P1Q4)-L(setPxQx)
.int L(P2Q4)-L(setPxQx)
.int L(P3Q4)-L(setPxQx)
.int L(P4Q4)-L(setPxQx)
.int L(P5Q4)-L(setPxQx)
.int L(P6Q4)-L(setPxQx)
.int L(P7Q4)-L(setPxQx)
.short L(P0Q4)-L(Got0)
.short L(P1Q4)-L(Got0)
.short L(P2Q4)-L(Got0)
.short L(P3Q4)-L(Got0)
.short L(P4Q4)-L(Got0)
.short L(P5Q4)-L(Got0)
.short L(P6Q4)-L(Got0)
.short L(P7Q4)-L(Got0)
.int L(P0Q5)-L(setPxQx)
.int L(P1Q5)-L(setPxQx)
.int L(P2Q5)-L(setPxQx)
.int L(P3Q5)-L(setPxQx)
.int L(P4Q5)-L(setPxQx)
.int L(P5Q5)-L(setPxQx)
.int L(P6Q5)-L(setPxQx)
.int L(P7Q5)-L(setPxQx)
.short L(P0Q5)-L(Got0)
.short L(P1Q5)-L(Got0)
.short L(P2Q5)-L(Got0)
.short L(P3Q5)-L(Got0)
.short L(P4Q5)-L(Got0)
.short L(P5Q5)-L(Got0)
.short L(P6Q5)-L(Got0)
.short L(P7Q5)-L(Got0)
.int L(P0Q6)-L(setPxQx)
.int L(P1Q6)-L(setPxQx)
.int L(P2Q6)-L(setPxQx)
.int L(P3Q6)-L(setPxQx)
.int L(P4Q6)-L(setPxQx)
.int L(P5Q6)-L(setPxQx)
.int L(P6Q6)-L(setPxQx)
.int L(P7Q6)-L(setPxQx)
.short L(P0Q6)-L(Got0)
.short L(P1Q6)-L(Got0)
.short L(P2Q6)-L(Got0)
.short L(P3Q6)-L(Got0)
.short L(P4Q6)-L(Got0)
.short L(P5Q6)-L(Got0)
.short L(P6Q6)-L(Got0)
.short L(P7Q6)-L(Got0)
.int L(P0Q7)-L(setPxQx)
.int L(P1Q7)-L(setPxQx)
.int L(P2Q7)-L(setPxQx)
.int L(P3Q7)-L(setPxQx)
.int L(P4Q7)-L(setPxQx)
.int L(P5Q7)-L(setPxQx)
.int L(P6Q7)-L(setPxQx)
.int L(P7Q7)-L(setPxQx)
.short L(P0Q7)-L(Got0)
.short L(P1Q7)-L(Got0)
.short L(P2Q7)-L(Got0)
.short L(P3Q7)-L(Got0)
.short L(P4Q7)-L(Got0)
.short L(P5Q7)-L(Got0)
.short L(P6Q7)-L(Got0)
.short L(P7Q7)-L(Got0)
.int L(P0Q8)-L(setPxQx)
.int L(P1Q8)-L(setPxQx)
.int L(P2Q8)-L(setPxQx)
.int L(P3Q8)-L(setPxQx)
.int L(P4Q8)-L(setPxQx)
.int L(P5Q8)-L(setPxQx)
.int L(P6Q8)-L(setPxQx)
.int L(P7Q8)-L(setPxQx)
.short L(P0Q8)-L(Got0)
.short L(P1Q8)-L(Got0)
.short L(P2Q8)-L(Got0)
.short L(P3Q8)-L(Got0)
.short L(P4Q8)-L(Got0)
.short L(P5Q8)-L(Got0)
.short L(P6Q8)-L(Got0)
.short L(P7Q8)-L(Got0)
.int L(P0Q9)-L(setPxQx)
.int L(P1Q9)-L(setPxQx)
.int L(P2Q9)-L(setPxQx)
.int L(P3Q9)-L(setPxQx)
.int L(P4Q9)-L(setPxQx)
.int L(P5Q9)-L(setPxQx)
.int L(P6Q9)-L(setPxQx)
.int L(P7Q9)-L(setPxQx)
.short L(P0Q9)-L(Got0)
.short L(P1Q9)-L(Got0)
.short L(P2Q9)-L(Got0)
.short L(P3Q9)-L(Got0)
.short L(P4Q9)-L(Got0)
.short L(P5Q9)-L(Got0)
.short L(P6Q9)-L(Got0)
.short L(P7Q9)-L(Got0)
.int L(P0QA)-L(setPxQx)
.int L(P1QA)-L(setPxQx)
.int L(P2QA)-L(setPxQx)
.int L(P3QA)-L(setPxQx)
.int L(P4QA)-L(setPxQx)
.int L(P5QA)-L(setPxQx)
.int L(P6QA)-L(setPxQx)
.int L(P7QA)-L(setPxQx)
.short L(P0QA)-L(Got0)
.short L(P1QA)-L(Got0)
.short L(P2QA)-L(Got0)
.short L(P3QA)-L(Got0)
.short L(P4QA)-L(Got0)
.short L(P5QA)-L(Got0)
.short L(P6QA)-L(Got0)
.short L(P7QA)-L(Got0)
.int L(P0QB)-L(setPxQx)
.int L(P1QB)-L(setPxQx)
.int L(P2QB)-L(setPxQx)
.int L(P3QB)-L(setPxQx)
.int L(P4QB)-L(setPxQx)
.int L(P5QB)-L(setPxQx)
.int L(P6QB)-L(setPxQx)
.int L(P7QB)-L(setPxQx)
.short L(P0QB)-L(Got0)
.short L(P1QB)-L(Got0)
.short L(P2QB)-L(Got0)
.short L(P3QB)-L(Got0)
.short L(P4QB)-L(Got0)
.short L(P5QB)-L(Got0)
.short L(P6QB)-L(Got0)
.short L(P7QB)-L(Got0)
.int L(P0QC)-L(setPxQx)
.int L(P1QC)-L(setPxQx)
.int L(P2QC)-L(setPxQx)
.int L(P3QC)-L(setPxQx)
.int L(P4QC)-L(setPxQx)
.int L(P5QC)-L(setPxQx)
.int L(P6QC)-L(setPxQx)
.int L(P7QC)-L(setPxQx)
.short L(P0QC)-L(Got0)
.short L(P1QC)-L(Got0)
.short L(P2QC)-L(Got0)
.short L(P3QC)-L(Got0)
.short L(P4QC)-L(Got0)
.short L(P5QC)-L(Got0)
.short L(P6QC)-L(Got0)
.short L(P7QC)-L(Got0)
.int L(P0QD)-L(setPxQx)
.int L(P1QD)-L(setPxQx)
.int L(P2QD)-L(setPxQx)
.int L(P3QD)-L(setPxQx)
.int L(P4QD)-L(setPxQx)
.int L(P5QD)-L(setPxQx)
.int L(P6QD)-L(setPxQx)
.int L(P7QD)-L(setPxQx)
.short L(P0QD)-L(Got0)
.short L(P1QD)-L(Got0)
.short L(P2QD)-L(Got0)
.short L(P3QD)-L(Got0)
.short L(P4QD)-L(Got0)
.short L(P5QD)-L(Got0)
.short L(P6QD)-L(Got0)
.short L(P7QD)-L(Got0)
.int L(P0QE)-L(setPxQx)
.int L(P1QE)-L(setPxQx)
.int L(P2QE)-L(setPxQx)
.int L(P3QE)-L(setPxQx)
.int L(P4QE)-L(setPxQx)
.int L(P5QE)-L(setPxQx)
.int L(P6QE)-L(setPxQx)
.int L(P7QE)-L(setPxQx)
.short L(P0QE)-L(Got0)
.short L(P1QE)-L(Got0)
.short L(P2QE)-L(Got0)
.short L(P3QE)-L(Got0)
.short L(P4QE)-L(Got0)
.short L(P5QE)-L(Got0)
.short L(P6QE)-L(Got0)
.short L(P7QE)-L(Got0)
.int L(P0QF)-L(setPxQx)
.int L(P1QF)-L(setPxQx)
.int L(P2QF)-L(setPxQx)
.int L(P3QF)-L(setPxQx)
.int L(P4QF)-L(setPxQx)
.int L(P5QF)-L(setPxQx)
.int L(P6QF)-L(setPxQx)
.int L(P7QF)-L(setPxQx)
.short L(P0QF)-L(Got0)
.short L(P1QF)-L(Got0)
.short L(P2QF)-L(Got0)
.short L(P3QF)-L(Got0)
.short L(P4QF)-L(Got0)
.short L(P5QF)-L(Got0)
.short L(P6QF)-L(Got0)
.short L(P7QF)-L(Got0)
.int L(P0QG)-L(setPxQx)
.int L(P1QG)-L(setPxQx)
.int L(P2QG)-L(setPxQx)
.int L(P3QG)-L(setPxQx)
.int L(P4QG)-L(setPxQx)
.int L(P5QG)-L(setPxQx)
.int L(P6QG)-L(setPxQx)
.int L(P7QG)-L(setPxQx)
.short L(P0QG)-L(Got0)
.short L(P1QG)-L(Got0)
.short L(P2QG)-L(Got0)
.short L(P3QG)-L(Got0)
.short L(P4QG)-L(Got0)
.short L(P5QG)-L(Got0)
.short L(P6QG)-L(Got0)
.short L(P7QG)-L(Got0)
.int L(P0QH)-L(setPxQx)
.int L(P1QH)-L(setPxQx)
.int L(P2QH)-L(setPxQx)
.int L(P3QH)-L(setPxQx)
.int L(P4QH)-L(setPxQx)
.int L(P5QH)-L(setPxQx)
.int L(P6QH)-L(setPxQx)
.int L(P7QH)-L(setPxQx)
.short L(P0QH)-L(Got0)
.short L(P1QH)-L(Got0)
.short L(P2QH)-L(Got0)
.short L(P3QH)-L(Got0)
.short L(P4QH)-L(Got0)
.short L(P5QH)-L(Got0)
.short L(P6QH)-L(Got0)
.short L(P7QH)-L(Got0)
.int L(P0QI)-L(setPxQx)
.short L(P0QI)-L(Got0)
# ifdef USE_EXTRA_TABLE
.int L(P1QI)-L(setPxQx)
.int L(P2QI)-L(setPxQx)
.int L(P3QI)-L(setPxQx)
.int L(P4QI)-L(setPxQx)
.int L(P5QI)-L(setPxQx)
.int L(P6QI)-L(setPxQx)
.int L(P7QI)-L(setPxQx)
.short L(P1QI)-L(Got0)
.short L(P2QI)-L(Got0)
.short L(P3QI)-L(Got0)
.short L(P4QI)-L(Got0)
.short L(P5QI)-L(Got0)
.short L(P6QI)-L(Got0)
.short L(P7QI)-L(Got0)
# endif
#endif
.popsection
@ -499,7 +501,6 @@ L(ck_mem_ops_method):
# align to 16 byte boundary first
#test $0xf,%rdi
#jz L(aligned_now)
lea L(AliPxQx)(%rip),%r11
mov $0x10,%r10
mov %rdi,%r9
and $0xf,%r9
@ -508,9 +509,12 @@ L(ck_mem_ops_method):
add %r10,%rdi
sub %r10,%r8
#ifndef PIC
lea L(AliPxQx)(%rip),%r11
jmpq *(%r11,%r10,8)
#else
movslq (%r11,%r10,4),%rcx
lea L(aligned_now)(%rip), %r11
lea L(AliPxQx)(%rip),%rcx
movswq (%rcx,%r10,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -525,23 +529,23 @@ L(AliPxQx):
.quad L(A4Q1), L(A5Q1), L(A6Q1), L(A7Q1)
#else
L(AliPxQx):
.int L(aligned_now)-L(AliPxQx)
.int L(A1Q0)-L(AliPxQx)
.int L(A2Q0)-L(AliPxQx)
.int L(A3Q0)-L(AliPxQx)
.int L(A4Q0)-L(AliPxQx)
.int L(A5Q0)-L(AliPxQx)
.int L(A6Q0)-L(AliPxQx)
.int L(A7Q0)-L(AliPxQx)
.short L(aligned_now)-L(aligned_now)
.short L(A1Q0)-L(aligned_now)
.short L(A2Q0)-L(aligned_now)
.short L(A3Q0)-L(aligned_now)
.short L(A4Q0)-L(aligned_now)
.short L(A5Q0)-L(aligned_now)
.short L(A6Q0)-L(aligned_now)
.short L(A7Q0)-L(aligned_now)
.int L(A0Q1)-L(AliPxQx)
.int L(A1Q1)-L(AliPxQx)
.int L(A2Q1)-L(AliPxQx)
.int L(A3Q1)-L(AliPxQx)
.int L(A4Q1)-L(AliPxQx)
.int L(A5Q1)-L(AliPxQx)
.int L(A6Q1)-L(AliPxQx)
.int L(A7Q1)-L(AliPxQx)
.short L(A0Q1)-L(aligned_now)
.short L(A1Q1)-L(aligned_now)
.short L(A2Q1)-L(aligned_now)
.short L(A3Q1)-L(aligned_now)
.short L(A4Q1)-L(aligned_now)
.short L(A5Q1)-L(aligned_now)
.short L(A6Q1)-L(aligned_now)
.short L(A7Q1)-L(aligned_now)
#endif
.popsection
@ -634,12 +638,14 @@ L(8byte_move_loop):
L(8byte_move_skip):
andl $127,%r8d
lea (%rdi,%r8,1),%rdi
lea L(setPxQx)(%rip),%r11
#ifndef PIC
lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
movslq (%r11,%r8,4),%rcx
lea L(Got0)(%rip),%r11
lea L(setPxQx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -676,11 +682,13 @@ L(8byte_stos_skip):
andl $7,%r8d
lea (%rdi,%r8,1),%rdi
lea L(setPxQx)(%rip),%r11
#ifndef PIC
lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
movslq (%r11,%r8,4),%rcx
lea L(Got0)(%rip),%r11
lea L(setPxQx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -722,11 +730,13 @@ L(8byte_nt_move_skip):
andl $127,%r8d
lea (%rdi,%r8,1),%rdi
lea L(setPxQx)(%rip),%r11
#ifndef PIC
lea L(setPxQx)(%rip),%r11
jmpq *(%r11,%r8,8) # old scheme remained for nonPIC
#else
movslq (%r11,%r8,4),%rcx
lea L(Got0)(%rip),%r11
lea L(setPxQx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -736,15 +746,17 @@ L(SSE_pre):
movd %rdx,%xmm0
punpcklqdq %xmm0,%xmm0
lea L(SSExDx)(%rip),%r9 # for later after the alignment
cmp $0xb0,%r8 # 176
jge L(byte32sse2_pre)
add %r8,%rdi
#ifndef PIC
lea L(SSExDx)(%rip),%r9
jmpq *(%r9,%r8,8)
#else
movslq (%r9,%r8,4),%rcx
lea L(SSE0Q0)(%rip),%r9
lea L(SSExDx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r9,1),%r9
jmpq *%r9
#endif
@ -1012,12 +1024,14 @@ L(byte32sse2):
lea 0x80(%rdi),%rdi
jge L(byte32sse2)
lea L(SSExDx)(%rip),%r11
add %r8,%rdi
#ifndef PIC
lea L(SSExDx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
movslq (%r11,%r8,4),%rcx
lea L(SSE0Q0)(%rip),%r11
lea L(SSExDx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -1044,13 +1058,15 @@ L(sse2_nt_move):
lea 0x80(%rdi),%rdi
jge L(sse2_nt_move)
lea L(SSExDx)(%rip),%r11
sfence
add %r8,%rdi
#ifndef PIC
lea L(SSExDx)(%rip),%r11
jmpq *(%r11,%r8,8)
#else
movslq (%r11,%r8,4),%rcx
lea L(SSE0Q0)(%rip),%r11
lea L(SSExDx)(%rip),%rcx
movswq (%rcx,%r8,2),%rcx
lea (%rcx,%r11,1),%r11
jmpq *%r11
#endif
@ -1109,221 +1125,221 @@ L(SSExDx):
.quad L(SSE12QB), L(SSE13QB), L(SSE14QB), L(SSE15QB)
#else
L(SSExDx):
.int L(SSE0Q0) -L(SSExDx)
.int L(SSE1Q0) -L(SSExDx)
.int L(SSE2Q0) -L(SSExDx)
.int L(SSE3Q0) -L(SSExDx)
.int L(SSE4Q0) -L(SSExDx)
.int L(SSE5Q0) -L(SSExDx)
.int L(SSE6Q0) -L(SSExDx)
.int L(SSE7Q0) -L(SSExDx)
.short L(SSE0Q0) -L(SSE0Q0)
.short L(SSE1Q0) -L(SSE0Q0)
.short L(SSE2Q0) -L(SSE0Q0)
.short L(SSE3Q0) -L(SSE0Q0)
.short L(SSE4Q0) -L(SSE0Q0)
.short L(SSE5Q0) -L(SSE0Q0)
.short L(SSE6Q0) -L(SSE0Q0)
.short L(SSE7Q0) -L(SSE0Q0)
.int L(SSE8Q0) -L(SSExDx)
.int L(SSE9Q0) -L(SSExDx)
.int L(SSE10Q0)-L(SSExDx)
.int L(SSE11Q0)-L(SSExDx)
.int L(SSE12Q0)-L(SSExDx)
.int L(SSE13Q0)-L(SSExDx)
.int L(SSE14Q0)-L(SSExDx)
.int L(SSE15Q0)-L(SSExDx)
.short L(SSE8Q0) -L(SSE0Q0)
.short L(SSE9Q0) -L(SSE0Q0)
.short L(SSE10Q0)-L(SSE0Q0)
.short L(SSE11Q0)-L(SSE0Q0)
.short L(SSE12Q0)-L(SSE0Q0)
.short L(SSE13Q0)-L(SSE0Q0)
.short L(SSE14Q0)-L(SSE0Q0)
.short L(SSE15Q0)-L(SSE0Q0)
.int L(SSE0Q1) -L(SSExDx)
.int L(SSE1Q1) -L(SSExDx)
.int L(SSE2Q1) -L(SSExDx)
.int L(SSE3Q1) -L(SSExDx)
.int L(SSE4Q1) -L(SSExDx)
.int L(SSE5Q1) -L(SSExDx)
.int L(SSE6Q1) -L(SSExDx)
.int L(SSE7Q1) -L(SSExDx)
.short L(SSE0Q1) -L(SSE0Q0)
.short L(SSE1Q1) -L(SSE0Q0)
.short L(SSE2Q1) -L(SSE0Q0)
.short L(SSE3Q1) -L(SSE0Q0)
.short L(SSE4Q1) -L(SSE0Q0)
.short L(SSE5Q1) -L(SSE0Q0)
.short L(SSE6Q1) -L(SSE0Q0)
.short L(SSE7Q1) -L(SSE0Q0)
.int L(SSE8Q1) -L(SSExDx)
.int L(SSE9Q1) -L(SSExDx)
.int L(SSE10Q1)-L(SSExDx)
.int L(SSE11Q1)-L(SSExDx)
.int L(SSE12Q1)-L(SSExDx)
.int L(SSE13Q1)-L(SSExDx)
.int L(SSE14Q1)-L(SSExDx)
.int L(SSE15Q1)-L(SSExDx)
.short L(SSE8Q1) -L(SSE0Q0)
.short L(SSE9Q1) -L(SSE0Q0)
.short L(SSE10Q1)-L(SSE0Q0)
.short L(SSE11Q1)-L(SSE0Q0)
.short L(SSE12Q1)-L(SSE0Q0)
.short L(SSE13Q1)-L(SSE0Q0)
.short L(SSE14Q1)-L(SSE0Q0)
.short L(SSE15Q1)-L(SSE0Q0)
.int L(SSE0Q2) -L(SSExDx)
.int L(SSE1Q2) -L(SSExDx)
.int L(SSE2Q2) -L(SSExDx)
.int L(SSE3Q2) -L(SSExDx)
.int L(SSE4Q2) -L(SSExDx)
.int L(SSE5Q2) -L(SSExDx)
.int L(SSE6Q2) -L(SSExDx)
.int L(SSE7Q2) -L(SSExDx)
.short L(SSE0Q2) -L(SSE0Q0)
.short L(SSE1Q2) -L(SSE0Q0)
.short L(SSE2Q2) -L(SSE0Q0)
.short L(SSE3Q2) -L(SSE0Q0)
.short L(SSE4Q2) -L(SSE0Q0)
.short L(SSE5Q2) -L(SSE0Q0)
.short L(SSE6Q2) -L(SSE0Q0)
.short L(SSE7Q2) -L(SSE0Q0)
.int L(SSE8Q2) -L(SSExDx)
.int L(SSE9Q2) -L(SSExDx)
.int L(SSE10Q2)-L(SSExDx)
.int L(SSE11Q2)-L(SSExDx)
.int L(SSE12Q2)-L(SSExDx)
.int L(SSE13Q2)-L(SSExDx)
.int L(SSE14Q2)-L(SSExDx)
.int L(SSE15Q2)-L(SSExDx)
.short L(SSE8Q2) -L(SSE0Q0)
.short L(SSE9Q2) -L(SSE0Q0)
.short L(SSE10Q2)-L(SSE0Q0)
.short L(SSE11Q2)-L(SSE0Q0)
.short L(SSE12Q2)-L(SSE0Q0)
.short L(SSE13Q2)-L(SSE0Q0)
.short L(SSE14Q2)-L(SSE0Q0)
.short L(SSE15Q2)-L(SSE0Q0)
.int L(SSE0Q3) -L(SSExDx)
.int L(SSE1Q3) -L(SSExDx)
.int L(SSE2Q3) -L(SSExDx)
.int L(SSE3Q3) -L(SSExDx)
.int L(SSE4Q3) -L(SSExDx)
.int L(SSE5Q3) -L(SSExDx)
.int L(SSE6Q3) -L(SSExDx)
.int L(SSE7Q3) -L(SSExDx)
.short L(SSE0Q3) -L(SSE0Q0)
.short L(SSE1Q3) -L(SSE0Q0)
.short L(SSE2Q3) -L(SSE0Q0)
.short L(SSE3Q3) -L(SSE0Q0)
.short L(SSE4Q3) -L(SSE0Q0)
.short L(SSE5Q3) -L(SSE0Q0)
.short L(SSE6Q3) -L(SSE0Q0)
.short L(SSE7Q3) -L(SSE0Q0)
.int L(SSE8Q3) -L(SSExDx)
.int L(SSE9Q3) -L(SSExDx)
.int L(SSE10Q3)-L(SSExDx)
.int L(SSE11Q3)-L(SSExDx)
.int L(SSE12Q3)-L(SSExDx)
.int L(SSE13Q3)-L(SSExDx)
.int L(SSE14Q3)-L(SSExDx)
.int L(SSE15Q3)-L(SSExDx)
.short L(SSE8Q3) -L(SSE0Q0)
.short L(SSE9Q3) -L(SSE0Q0)
.short L(SSE10Q3)-L(SSE0Q0)
.short L(SSE11Q3)-L(SSE0Q0)
.short L(SSE12Q3)-L(SSE0Q0)
.short L(SSE13Q3)-L(SSE0Q0)
.short L(SSE14Q3)-L(SSE0Q0)
.short L(SSE15Q3)-L(SSE0Q0)
.int L(SSE0Q4) -L(SSExDx)
.int L(SSE1Q4) -L(SSExDx)
.int L(SSE2Q4) -L(SSExDx)
.int L(SSE3Q4) -L(SSExDx)
.int L(SSE4Q4) -L(SSExDx)
.int L(SSE5Q4) -L(SSExDx)
.int L(SSE6Q4) -L(SSExDx)
.int L(SSE7Q4) -L(SSExDx)
.short L(SSE0Q4) -L(SSE0Q0)
.short L(SSE1Q4) -L(SSE0Q0)
.short L(SSE2Q4) -L(SSE0Q0)
.short L(SSE3Q4) -L(SSE0Q0)
.short L(SSE4Q4) -L(SSE0Q0)
.short L(SSE5Q4) -L(SSE0Q0)
.short L(SSE6Q4) -L(SSE0Q0)
.short L(SSE7Q4) -L(SSE0Q0)
.int L(SSE8Q4) -L(SSExDx)
.int L(SSE9Q4) -L(SSExDx)
.int L(SSE10Q4)-L(SSExDx)
.int L(SSE11Q4)-L(SSExDx)
.int L(SSE12Q4)-L(SSExDx)
.int L(SSE13Q4)-L(SSExDx)
.int L(SSE14Q4)-L(SSExDx)
.int L(SSE15Q4)-L(SSExDx)
.short L(SSE8Q4) -L(SSE0Q0)
.short L(SSE9Q4) -L(SSE0Q0)
.short L(SSE10Q4)-L(SSE0Q0)
.short L(SSE11Q4)-L(SSE0Q0)
.short L(SSE12Q4)-L(SSE0Q0)
.short L(SSE13Q4)-L(SSE0Q0)
.short L(SSE14Q4)-L(SSE0Q0)
.short L(SSE15Q4)-L(SSE0Q0)
.int L(SSE0Q5) -L(SSExDx)
.int L(SSE1Q5) -L(SSExDx)
.int L(SSE2Q5) -L(SSExDx)
.int L(SSE3Q5) -L(SSExDx)
.int L(SSE4Q5) -L(SSExDx)
.int L(SSE5Q5) -L(SSExDx)
.int L(SSE6Q5) -L(SSExDx)
.int L(SSE7Q5) -L(SSExDx)
.short L(SSE0Q5) -L(SSE0Q0)
.short L(SSE1Q5) -L(SSE0Q0)
.short L(SSE2Q5) -L(SSE0Q0)
.short L(SSE3Q5) -L(SSE0Q0)
.short L(SSE4Q5) -L(SSE0Q0)
.short L(SSE5Q5) -L(SSE0Q0)
.short L(SSE6Q5) -L(SSE0Q0)
.short L(SSE7Q5) -L(SSE0Q0)
.int L(SSE8Q5) -L(SSExDx)
.int L(SSE9Q5) -L(SSExDx)
.int L(SSE10Q5)-L(SSExDx)
.int L(SSE11Q5)-L(SSExDx)
.int L(SSE12Q5)-L(SSExDx)
.int L(SSE13Q5)-L(SSExDx)
.int L(SSE14Q5)-L(SSExDx)
.int L(SSE15Q5)-L(SSExDx)
.short L(SSE8Q5) -L(SSE0Q0)
.short L(SSE9Q5) -L(SSE0Q0)
.short L(SSE10Q5)-L(SSE0Q0)
.short L(SSE11Q5)-L(SSE0Q0)
.short L(SSE12Q5)-L(SSE0Q0)
.short L(SSE13Q5)-L(SSE0Q0)
.short L(SSE14Q5)-L(SSE0Q0)
.short L(SSE15Q5)-L(SSE0Q0)
.int L(SSE0Q6) -L(SSExDx)
.int L(SSE1Q6) -L(SSExDx)
.int L(SSE2Q6) -L(SSExDx)
.int L(SSE3Q6) -L(SSExDx)
.int L(SSE4Q6) -L(SSExDx)
.int L(SSE5Q6) -L(SSExDx)
.int L(SSE6Q6) -L(SSExDx)
.int L(SSE7Q6) -L(SSExDx)
.short L(SSE0Q6) -L(SSE0Q0)
.short L(SSE1Q6) -L(SSE0Q0)
.short L(SSE2Q6) -L(SSE0Q0)
.short L(SSE3Q6) -L(SSE0Q0)
.short L(SSE4Q6) -L(SSE0Q0)
.short L(SSE5Q6) -L(SSE0Q0)
.short L(SSE6Q6) -L(SSE0Q0)
.short L(SSE7Q6) -L(SSE0Q0)
.int L(SSE8Q6) -L(SSExDx)
.int L(SSE9Q6) -L(SSExDx)
.int L(SSE10Q6)-L(SSExDx)
.int L(SSE11Q6)-L(SSExDx)
.int L(SSE12Q6)-L(SSExDx)
.int L(SSE13Q6)-L(SSExDx)
.int L(SSE14Q6)-L(SSExDx)
.int L(SSE15Q6)-L(SSExDx)
.short L(SSE8Q6) -L(SSE0Q0)
.short L(SSE9Q6) -L(SSE0Q0)
.short L(SSE10Q6)-L(SSE0Q0)
.short L(SSE11Q6)-L(SSE0Q0)
.short L(SSE12Q6)-L(SSE0Q0)
.short L(SSE13Q6)-L(SSE0Q0)
.short L(SSE14Q6)-L(SSE0Q0)
.short L(SSE15Q6)-L(SSE0Q0)
.int L(SSE0Q7) -L(SSExDx)
.int L(SSE1Q7) -L(SSExDx)
.int L(SSE2Q7) -L(SSExDx)
.int L(SSE3Q7) -L(SSExDx)
.int L(SSE4Q7) -L(SSExDx)
.int L(SSE5Q7) -L(SSExDx)
.int L(SSE6Q7) -L(SSExDx)
.int L(SSE7Q7) -L(SSExDx)
.short L(SSE0Q7) -L(SSE0Q0)
.short L(SSE1Q7) -L(SSE0Q0)
.short L(SSE2Q7) -L(SSE0Q0)
.short L(SSE3Q7) -L(SSE0Q0)
.short L(SSE4Q7) -L(SSE0Q0)
.short L(SSE5Q7) -L(SSE0Q0)
.short L(SSE6Q7) -L(SSE0Q0)
.short L(SSE7Q7) -L(SSE0Q0)
.int L(SSE8Q7) -L(SSExDx)
.int L(SSE9Q7) -L(SSExDx)
.int L(SSE10Q7)-L(SSExDx)
.int L(SSE11Q7)-L(SSExDx)
.int L(SSE12Q7)-L(SSExDx)
.int L(SSE13Q7)-L(SSExDx)
.int L(SSE14Q7)-L(SSExDx)
.int L(SSE15Q7)-L(SSExDx)
.short L(SSE8Q7) -L(SSE0Q0)
.short L(SSE9Q7) -L(SSE0Q0)
.short L(SSE10Q7)-L(SSE0Q0)
.short L(SSE11Q7)-L(SSE0Q0)
.short L(SSE12Q7)-L(SSE0Q0)
.short L(SSE13Q7)-L(SSE0Q0)
.short L(SSE14Q7)-L(SSE0Q0)
.short L(SSE15Q7)-L(SSE0Q0)
.int L(SSE0Q8) -L(SSExDx)
.int L(SSE1Q8) -L(SSExDx)
.int L(SSE2Q8) -L(SSExDx)
.int L(SSE3Q8) -L(SSExDx)
.int L(SSE4Q8) -L(SSExDx)
.int L(SSE5Q8) -L(SSExDx)
.int L(SSE6Q8) -L(SSExDx)
.int L(SSE7Q8) -L(SSExDx)
.short L(SSE0Q8) -L(SSE0Q0)
.short L(SSE1Q8) -L(SSE0Q0)
.short L(SSE2Q8) -L(SSE0Q0)
.short L(SSE3Q8) -L(SSE0Q0)
.short L(SSE4Q8) -L(SSE0Q0)
.short L(SSE5Q8) -L(SSE0Q0)
.short L(SSE6Q8) -L(SSE0Q0)
.short L(SSE7Q8) -L(SSE0Q0)
.int L(SSE8Q8) -L(SSExDx)
.int L(SSE9Q8) -L(SSExDx)
.int L(SSE10Q8)-L(SSExDx)
.int L(SSE11Q8)-L(SSExDx)
.int L(SSE12Q8)-L(SSExDx)
.int L(SSE13Q8)-L(SSExDx)
.int L(SSE14Q8)-L(SSExDx)
.int L(SSE15Q8)-L(SSExDx)
.short L(SSE8Q8) -L(SSE0Q0)
.short L(SSE9Q8) -L(SSE0Q0)
.short L(SSE10Q8)-L(SSE0Q0)
.short L(SSE11Q8)-L(SSE0Q0)
.short L(SSE12Q8)-L(SSE0Q0)
.short L(SSE13Q8)-L(SSE0Q0)
.short L(SSE14Q8)-L(SSE0Q0)
.short L(SSE15Q8)-L(SSE0Q0)
.int L(SSE0Q9) -L(SSExDx)
.int L(SSE1Q9) -L(SSExDx)
.int L(SSE2Q9) -L(SSExDx)
.int L(SSE3Q9) -L(SSExDx)
.int L(SSE4Q9) -L(SSExDx)
.int L(SSE5Q9) -L(SSExDx)
.int L(SSE6Q9) -L(SSExDx)
.int L(SSE7Q9) -L(SSExDx)
.short L(SSE0Q9) -L(SSE0Q0)
.short L(SSE1Q9) -L(SSE0Q0)
.short L(SSE2Q9) -L(SSE0Q0)
.short L(SSE3Q9) -L(SSE0Q0)
.short L(SSE4Q9) -L(SSE0Q0)
.short L(SSE5Q9) -L(SSE0Q0)
.short L(SSE6Q9) -L(SSE0Q0)
.short L(SSE7Q9) -L(SSE0Q0)
.int L(SSE8Q9) -L(SSExDx)
.int L(SSE9Q9) -L(SSExDx)
.int L(SSE10Q9)-L(SSExDx)
.int L(SSE11Q9)-L(SSExDx)
.int L(SSE12Q9)-L(SSExDx)
.int L(SSE13Q9)-L(SSExDx)
.int L(SSE14Q9)-L(SSExDx)
.int L(SSE15Q9)-L(SSExDx)
.short L(SSE8Q9) -L(SSE0Q0)
.short L(SSE9Q9) -L(SSE0Q0)
.short L(SSE10Q9)-L(SSE0Q0)
.short L(SSE11Q9)-L(SSE0Q0)
.short L(SSE12Q9)-L(SSE0Q0)
.short L(SSE13Q9)-L(SSE0Q0)
.short L(SSE14Q9)-L(SSE0Q0)
.short L(SSE15Q9)-L(SSE0Q0)
.int L(SSE0QA) -L(SSExDx)
.int L(SSE1QA) -L(SSExDx)
.int L(SSE2QA) -L(SSExDx)
.int L(SSE3QA) -L(SSExDx)
.int L(SSE4QA) -L(SSExDx)
.int L(SSE5QA) -L(SSExDx)
.int L(SSE6QA) -L(SSExDx)
.int L(SSE7QA) -L(SSExDx)
.short L(SSE0QA) -L(SSE0Q0)
.short L(SSE1QA) -L(SSE0Q0)
.short L(SSE2QA) -L(SSE0Q0)
.short L(SSE3QA) -L(SSE0Q0)
.short L(SSE4QA) -L(SSE0Q0)
.short L(SSE5QA) -L(SSE0Q0)
.short L(SSE6QA) -L(SSE0Q0)
.short L(SSE7QA) -L(SSE0Q0)
.int L(SSE8QA) -L(SSExDx)
.int L(SSE9QA) -L(SSExDx)
.int L(SSE10QA)-L(SSExDx)
.int L(SSE11QA)-L(SSExDx)
.int L(SSE12QA)-L(SSExDx)
.int L(SSE13QA)-L(SSExDx)
.int L(SSE14QA)-L(SSExDx)
.int L(SSE15QA)-L(SSExDx)
.short L(SSE8QA) -L(SSE0Q0)
.short L(SSE9QA) -L(SSE0Q0)
.short L(SSE10QA)-L(SSE0Q0)
.short L(SSE11QA)-L(SSE0Q0)
.short L(SSE12QA)-L(SSE0Q0)
.short L(SSE13QA)-L(SSE0Q0)
.short L(SSE14QA)-L(SSE0Q0)
.short L(SSE15QA)-L(SSE0Q0)
.int L(SSE0QB) -L(SSExDx)
.int L(SSE1QB) -L(SSExDx)
.int L(SSE2QB) -L(SSExDx)
.int L(SSE3QB) -L(SSExDx)
.int L(SSE4QB) -L(SSExDx)
.int L(SSE5QB) -L(SSExDx)
.int L(SSE6QB) -L(SSExDx)
.int L(SSE7QB) -L(SSExDx)
.short L(SSE0QB) -L(SSE0Q0)
.short L(SSE1QB) -L(SSE0Q0)
.short L(SSE2QB) -L(SSE0Q0)
.short L(SSE3QB) -L(SSE0Q0)
.short L(SSE4QB) -L(SSE0Q0)
.short L(SSE5QB) -L(SSE0Q0)
.short L(SSE6QB) -L(SSE0Q0)
.short L(SSE7QB) -L(SSE0Q0)
.int L(SSE8QB) -L(SSExDx)
.int L(SSE9QB) -L(SSExDx)
.int L(SSE10QB)-L(SSExDx)
.int L(SSE11QB)-L(SSExDx)
.int L(SSE12QB)-L(SSExDx)
.int L(SSE13QB)-L(SSExDx)
.int L(SSE14QB)-L(SSExDx)
.int L(SSE15QB)-L(SSExDx)
.short L(SSE8QB) -L(SSE0Q0)
.short L(SSE9QB) -L(SSE0Q0)
.short L(SSE10QB)-L(SSE0Q0)
.short L(SSE11QB)-L(SSE0Q0)
.short L(SSE12QB)-L(SSE0Q0)
.short L(SSE13QB)-L(SSE0Q0)
.short L(SSE14QB)-L(SSE0Q0)
.short L(SSE15QB)-L(SSE0Q0)
#endif
.popsection