diff options
Diffstat (limited to 'sysdeps/generic')
97 files changed, 651 insertions, 326 deletions
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile index 091d5d9d4e..ed269f3454 100644 --- a/sysdeps/generic/Makefile +++ b/sysdeps/generic/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1992-2014 Free Software Foundation, Inc. +# Copyright (C) 1992-2015 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 diff --git a/sysdeps/generic/_itoa.h b/sysdeps/generic/_itoa.h index 98e91cce79..632e24c34f 100644 --- a/sysdeps/generic/_itoa.h +++ b/sysdeps/generic/_itoa.h @@ -1,5 +1,5 @@ /* Internal function for converting integers to ASCII. - Copyright (C) 1994-2014 Free Software Foundation, Inc. + Copyright (C) 1994-2015 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 @@ -46,12 +46,12 @@ extern char *_itoa (unsigned long long int value, char *buflim, extern const char _itoa_upper_digits[]; extern const char _itoa_lower_digits[]; -#if !defined NOT_IN_libc || defined IS_IN_rtld +#if IS_IN (libc) || IS_IN (rtld) hidden_proto (_itoa_upper_digits) hidden_proto (_itoa_lower_digits) #endif -#ifndef NOT_IN_libc +#if IS_IN (libc) extern char *_itoa_word (_ITOA_WORD_TYPE value, char *buflim, unsigned int base, int upper_case); #else diff --git a/sysdeps/generic/abort-instr.h b/sysdeps/generic/abort-instr.h index 106a330b2b..4ee8609872 100644 --- a/sysdeps/generic/abort-instr.h +++ b/sysdeps/generic/abort-instr.h @@ -1,2 +1,31 @@ +/* Magic instruction to crash quickly and reliably. Generic/stub version. + Copyright (C) 2014-2015 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/>. */ + +#ifndef _ABORT_INSTR_H +#define _ABORT_INSTR_H 1 + +/* If the compiler provides the generic way to generate the right + instruction, we can use that without any machine-specific knowledge. */ +#if HAVE_BUILTIN_TRAP +# define ABORT_INSTRUCTION __builtin_trap () +#else /* We cannot give any generic instruction to crash the program. - abort() will have to make sure it never returns. */ + abort will have to make sure it never returns. */ +#endif + +#endif /* abort-instr.h */ diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h index 5a865963b9..49aa08e707 100644 --- a/sysdeps/generic/aio_misc.h +++ b/sysdeps/generic/aio_misc.h @@ -1,5 +1,5 @@ /* Internal declarations for <aio.h> functions implementation. Stub version. - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 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 diff --git a/sysdeps/generic/bits/hwcap.h b/sysdeps/generic/bits/hwcap.h index 16a26a4963..3912113a02 100644 --- a/sysdeps/generic/bits/hwcap.h +++ b/sysdeps/generic/bits/hwcap.h @@ -1,5 +1,5 @@ /* Defines for bits in AT_HWCAP. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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 diff --git a/sysdeps/generic/c++-types.data b/sysdeps/generic/c++-types.data new file mode 100644 index 0000000000..2ebe1f9abd --- /dev/null +++ b/sysdeps/generic/c++-types.data @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../c++-types.data file to make the test pass. diff --git a/sysdeps/generic/device-nrs.h b/sysdeps/generic/device-nrs.h index 50962143fb..9f36369ac7 100644 --- a/sysdeps/generic/device-nrs.h +++ b/sysdeps/generic/device-nrs.h @@ -1,5 +1,5 @@ /* Device numbers of devices used in the implementation. Generic version. - Copyright (C) 2000-2014 Free Software Foundation, Inc. + Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/dirstream.h b/sysdeps/generic/dirstream.h index fa108a44f0..1524c6ac58 100644 --- a/sysdeps/generic/dirstream.h +++ b/sysdeps/generic/dirstream.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2014 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 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 diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h index fe8f3c8dc0..4b49869c63 100644 --- a/sysdeps/generic/dl-cache.h +++ b/sysdeps/generic/dl-cache.h @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 1999-2014 Free Software Foundation, Inc. + Copyright (C) 1999-2015 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 diff --git a/sysdeps/generic/dl-dtprocnum.h b/sysdeps/generic/dl-dtprocnum.h index 419fd0905f..a41c594210 100644 --- a/sysdeps/generic/dl-dtprocnum.h +++ b/sysdeps/generic/dl-dtprocnum.h @@ -1,5 +1,5 @@ /* Configuration of lookup functions. - Copyright (C) 2000-2014 Free Software Foundation, Inc. + Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/dl-fileid.h b/sysdeps/generic/dl-fileid.h new file mode 100644 index 0000000000..2cbd21dcbe --- /dev/null +++ b/sysdeps/generic/dl-fileid.h @@ -0,0 +1,46 @@ +/* File identity for the dynamic linker. Stub version. + Copyright (C) 2015 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 <stdbool.h> + +/* This type stores whatever information is fetched by _dl_get_file_id + and compared by _dl_file_id_match_p. */ +struct r_file_id + { + /* In the stub version, we don't record anything at all. */ + }; + +/* Sample FD to fill in *ID. Returns true on success. + On error, returns false, with errno set. */ +static inline bool +_dl_get_file_id (int fd __attribute__ ((unused)), + struct r_file_id *id __attribute__ ((unused))) +{ + return true; +} + +/* Compare two results from _dl_get_file_id for equality. + It's crucial that this never return false-positive matches. + It's ideal that it never return false-negative mismatches either, + but lack of matches is survivable. */ +static inline bool +_dl_file_id_match_p (const struct r_file_id *a __attribute__ ((unused)), + const struct r_file_id *b __attribute__ ((unused))) +{ + return false; +} diff --git a/sysdeps/generic/dl-fptr.h b/sysdeps/generic/dl-fptr.h index ae79a08e39..3f16e8ea60 100644 --- a/sysdeps/generic/dl-fptr.h +++ b/sysdeps/generic/dl-fptr.h @@ -1,5 +1,5 @@ /* Function descriptors. Generic version. - Copyright (C) 1995-2014 Free Software Foundation, Inc. + Copyright (C) 1995-2015 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 diff --git a/sysdeps/generic/dl-hash.h b/sysdeps/generic/dl-hash.h index ca211eb362..6ee5d1a668 100644 --- a/sysdeps/generic/dl-hash.h +++ b/sysdeps/generic/dl-hash.h @@ -1,5 +1,5 @@ /* Compute hash value for given string according to ELF standard. - Copyright (C) 1995-2014 Free Software Foundation, Inc. + Copyright (C) 1995-2015 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 diff --git a/sysdeps/generic/dl-irel.h b/sysdeps/generic/dl-irel.h index b8648b2266..2c3f031779 100644 --- a/sysdeps/generic/dl-irel.h +++ b/sysdeps/generic/dl-irel.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF indirect relocation inline functions. - Copyright (C) 2009-2014 Free Software Foundation, Inc. + Copyright (C) 2009-2015 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 diff --git a/sysdeps/generic/dl-librecon.h b/sysdeps/generic/dl-librecon.h index 7fa3fa7efc..41952e0bf3 100644 --- a/sysdeps/generic/dl-librecon.h +++ b/sysdeps/generic/dl-librecon.h @@ -1,5 +1,5 @@ /* Optional code to distinguish library flavours. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/sysdeps/generic/dl-lookupcfg.h b/sysdeps/generic/dl-lookupcfg.h index 0260a769dc..a75093eaee 100644 --- a/sysdeps/generic/dl-lookupcfg.h +++ b/sysdeps/generic/dl-lookupcfg.h @@ -1,5 +1,5 @@ /* Configuration of lookup functions. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 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 diff --git a/sysdeps/generic/dl-machine.h b/sysdeps/generic/dl-machine.h index d7a2b60c0c..0731f37200 100644 --- a/sysdeps/generic/dl-machine.h +++ b/sysdeps/generic/dl-machine.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. Stub version. - Copyright (C) 1995-2014 Free Software Foundation, Inc. + Copyright (C) 1995-2015 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 diff --git a/sysdeps/generic/dl-osinfo.h b/sysdeps/generic/dl-osinfo.h index d7667f862d..53c4ce7d06 100644 --- a/sysdeps/generic/dl-osinfo.h +++ b/sysdeps/generic/dl-osinfo.h @@ -1,5 +1,5 @@ /* Operating system specific code for generic dynamic loader functions. - Copyright (C) 2009-2014 Free Software Foundation, Inc. + Copyright (C) 2009-2015 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 diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h index 56d4535b65..66e52dd1ba 100644 --- a/sysdeps/generic/dl-procinfo.h +++ b/sysdeps/generic/dl-procinfo.h @@ -1,5 +1,5 @@ /* Stub version of processor capability information handling macros. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/sysdeps/generic/dl-sysdep.h b/sysdeps/generic/dl-sysdep.h index ae0e4be6d1..3c522ade0b 100644 --- a/sysdeps/generic/dl-sysdep.h +++ b/sysdeps/generic/dl-sysdep.h @@ -1,5 +1,5 @@ /* System-specific settings for dynamic linker code. Generic version. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 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 @@ -27,7 +27,7 @@ all the libc functions that ld.so uses are called without PLT and always get the versions linked into ld.so rather than the libc ones. */ -#ifdef IS_IN_rtld +#if IS_IN (rtld) # define RTLD_PRIVATE_ERRNO 1 #else # define RTLD_PRIVATE_ERRNO 0 diff --git a/sysdeps/generic/dwarf2.h b/sysdeps/generic/dwarf2.h index 57c2d4e744..b714c172cf 100644 --- a/sysdeps/generic/dwarf2.h +++ b/sysdeps/generic/dwarf2.h @@ -1,6 +1,6 @@ /* Declarations and definitions of codes relating to the DWARF2 symbolic debugging information format. - Copyright (C) 1992-2014 Free Software Foundation, Inc. + Copyright (C) 1992-2015 Free Software Foundation, Inc. Contributed by Gary Funck (gary@intrepid.com). Derived from the DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com). diff --git a/sysdeps/generic/testrtsig.h b/sysdeps/generic/elide.h index 421691043d..80a3a039aa 100644 --- a/sysdeps/generic/testrtsig.h +++ b/sysdeps/generic/elide.h @@ -1,7 +1,6 @@ -/* Test whether RT signals are really available. - Copyright (C) 1997-2014 Free Software Foundation, Inc. +/* elide.h: Fallback noop lock elision support. + Copyright (C) 2014-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -16,12 +15,11 @@ 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/>. */ +#ifndef ELIDE_H +#define ELIDE_H 1 -#include <string.h> -#include <sys/utsname.h> +#define ELIDE_LOCK(adapt_count, is_lock_free) 0 +#define ELIDE_TRYLOCK(adapt_count, is_lock_free, write) 0 +#define ELIDE_UNLOCK(is_lock_free) 0 -static int -kernel_has_rtsig (void) -{ - return 0; -} +#endif diff --git a/sysdeps/generic/eloop-threshold.h b/sysdeps/generic/eloop-threshold.h index ce7da147ba..00acc43104 100644 --- a/sysdeps/generic/eloop-threshold.h +++ b/sysdeps/generic/eloop-threshold.h @@ -1,5 +1,5 @@ /* Threshold at which to diagnose ELOOP. Generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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 diff --git a/sysdeps/generic/exit-thread.h b/sysdeps/generic/exit-thread.h new file mode 100644 index 0000000000..787029a8de --- /dev/null +++ b/sysdeps/generic/exit-thread.h @@ -0,0 +1,28 @@ +/* Call to terminate the current thread. Stub version. + Copyright (C) 2014-2015 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/>. */ + +/* This causes the current thread to exit, without affecting other + threads in the process if there are any. If there are no other + threads left, then this has the effect of _exit (0). */ + +static inline void __attribute__ ((noreturn, always_inline, unused)) +__exit_thread (void) +{ + while (1) + asm ("write me!"); +} diff --git a/sysdeps/generic/fd_to_filename.h b/sysdeps/generic/fd_to_filename.h index 5606401bc3..d2c291fe76 100644 --- a/sysdeps/generic/fd_to_filename.h +++ b/sysdeps/generic/fd_to_filename.h @@ -1,5 +1,5 @@ /* Query filename corresponding to an open FD. Generic version. - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 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 diff --git a/sysdeps/generic/fips-private.h b/sysdeps/generic/fips-private.h index 1f4b99f394..81cc97705b 100644 --- a/sysdeps/generic/fips-private.h +++ b/sysdeps/generic/fips-private.h @@ -1,5 +1,5 @@ /* Dummy implementation of FIPS compliance status test. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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 diff --git a/sysdeps/generic/fpu_control.h b/sysdeps/generic/fpu_control.h index 39a3e6612c..48e4460983 100644 --- a/sysdeps/generic/fpu_control.h +++ b/sysdeps/generic/fpu_control.h @@ -1,5 +1,5 @@ /* FPU control word definitions. Stub version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/frame.h b/sysdeps/generic/frame.h index 14d23d8a87..4e9dcd1cd5 100644 --- a/sysdeps/generic/frame.h +++ b/sysdeps/generic/frame.h @@ -1,5 +1,5 @@ /* Definition of stack frame structure. Generic version. - Copyright (C) 2000-2014 Free Software Foundation, Inc. + Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c index fadc0add40..8612a1ddc7 100644 --- a/sysdeps/generic/framestate.c +++ b/sysdeps/generic/framestate.c @@ -1,5 +1,5 @@ /* __frame_state_for unwinder helper function wrapper. - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Jakub Jelinek <jakub@redhat.com>, 2001. diff --git a/sysdeps/generic/gcc-compat.h b/sysdeps/generic/gcc-compat.h index ac4fa1e95b..199f648932 100644 --- a/sysdeps/generic/gcc-compat.h +++ b/sysdeps/generic/gcc-compat.h @@ -1,5 +1,5 @@ /* Macros for checking required GCC compatibility. Generic version. - Copyright (C) 2014 Free Software Foundation, Inc. + Copyright (C) 2014-2015 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 diff --git a/sysdeps/generic/gccframe.h b/sysdeps/generic/gccframe.h index 2927ce7b7e..2954b7accb 100644 --- a/sysdeps/generic/gccframe.h +++ b/sysdeps/generic/gccframe.h @@ -1,5 +1,5 @@ /* Definition of object in frame unwind info. Generic version. - Copyright (C) 2000-2014 Free Software Foundation, Inc. + Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/get-rounding-mode.h b/sysdeps/generic/get-rounding-mode.h index b46cab5926..d09bb78a36 100644 --- a/sysdeps/generic/get-rounding-mode.h +++ b/sysdeps/generic/get-rounding-mode.h @@ -1,5 +1,5 @@ /* Determine floating-point rounding mode within libc. Generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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,6 +20,7 @@ #define _GET_ROUNDING_MODE_H 1 #include <fpu_control.h> +#include <stdlib.h> /* Define values for FE_* modes not defined for this architecture. */ #ifdef FE_DOWNWARD diff --git a/sysdeps/generic/gmp-mparam.h b/sysdeps/generic/gmp-mparam.h index 8355881b25..a9c4abf517 100644 --- a/sysdeps/generic/gmp-mparam.h +++ b/sysdeps/generic/gmp-mparam.h @@ -1,5 +1,5 @@ /* gmp-mparam.h -- Compiler/machine parameter header file. -Copyright (C) 1991-2014 Free Software Foundation, Inc. +Copyright (C) 1991-2015 Free Software Foundation, Inc. This file is part of the GNU MP Library. diff --git a/sysdeps/generic/hp-timing-common.h b/sysdeps/generic/hp-timing-common.h new file mode 100644 index 0000000000..1e3e9b50a5 --- /dev/null +++ b/sysdeps/generic/hp-timing-common.h @@ -0,0 +1,62 @@ +/* High precision, low overhead timing functions. Generic version. + Copyright (C) 1998-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. + + 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/>. */ + +/* In case a platform supports timers in the hardware the following macros + and types must be defined: + + - HP_TIMING_AVAIL: test for availability. + + - HP_TIMING_INLINE: this macro is non-zero if the functionality is not + implemented using function calls but instead uses some inlined code + which might simply consist of a few assembler instructions. We have to + know this since we might want to use the macros here in places where we + cannot make function calls. + + - hp_timing_t: This is the type for variables used to store the time + values. This type must be integral. + + - HP_TIMING_NOW: place timestamp for current time in variable given as + parameter. +*/ + +/* The target supports hp-timing. Share the common infrastructure. */ + +#include <string.h> +#include <sys/param.h> +#include <_itoa.h> + +/* Compute the difference between START and END, storing into DIFF. */ +#define HP_TIMING_DIFF(Diff, Start, End) ((Diff) = (End) - (Start)) + +/* Accumulate ADD into SUM. No attempt is made to be thread-safe. */ +#define HP_TIMING_ACCUM_NT(Sum, Diff) ((Sum) += (Diff)) + +/* Write a decimal representation of the timing value into the given string. */ +#define HP_TIMING_PRINT(Dest, Len, Val) \ + do { \ + char __buf[20]; \ + char *__dest = (Dest); \ + size_t __len = (Len); \ + char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0); \ + size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len); \ + memcpy (__dest, __cp, __cp_len); \ + memcpy (__dest + __cp_len, " cycles", \ + MIN (__len - __cp_len, sizeof (" cycles"))); \ + __dest[__len - 1] = '\0'; \ + } while (0) diff --git a/sysdeps/generic/hp-timing.h b/sysdeps/generic/hp-timing.h index eddc971520..142fa62a77 100644 --- a/sysdeps/generic/hp-timing.h +++ b/sysdeps/generic/hp-timing.h @@ -1,5 +1,5 @@ /* High precision, low overhead timing functions. Generic version. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. @@ -20,59 +20,17 @@ #ifndef _HP_TIMING_H #define _HP_TIMING_H 1 - /* There are no generic definitions for the times. We could write something using the `gettimeofday' system call where available but the overhead of - the system call might be too high. - - In case a platform supports timers in the hardware the following macros - and types must be defined: - - - HP_TIMING_AVAIL: test for availability. - - - HP_TIMING_INLINE: this macro is non-zero if the functionality is not - implemented using function calls but instead uses some inlined code - which might simply consist of a few assembler instructions. We have to - know this since we might want to use the macros here in places where we - cannot make function calls. - - - hp_timing_t: This is the type for variables used to store the time - values. - - - HP_TIMING_ZERO: clear `hp_timing_t' object. - - - HP_TIMING_NOW: place timestamp for current time in variable given as - parameter. - - - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the - HP_TIMING_DIFF macro. - - - HP_TIMING_DIFF: compute difference between two times and store it - in a third. Source and destination might overlap. - - - HP_TIMING_ACCUM: add time difference to another variable. This might - be a bit more complicated to implement for some platforms as the - operation should be thread-safe and 64bit arithmetic on 32bit platforms - is not. - - - HP_TIMING_ACCUM_NT: this is the variant for situations where we know - there are no threads involved. - - - HP_TIMING_PRINT: write decimal representation of the timing value into - the given string. This operation need not be inline even though - HP_TIMING_INLINE is specified. - -*/ + the system call might be too high. */ /* Provide dummy definitions. */ #define HP_TIMING_AVAIL (0) +#define HP_SMALL_TIMING_AVAIL (0) #define HP_TIMING_INLINE (0) typedef int hp_timing_t; -#define HP_TIMING_ZERO(Var) #define HP_TIMING_NOW(var) -#define HP_TIMING_DIFF_INIT() #define HP_TIMING_DIFF(Diff, Start, End) -#define HP_TIMING_ACCUM(Sum, Diff) #define HP_TIMING_ACCUM_NT(Sum, Diff) #define HP_TIMING_PRINT(Buf, Len, Val) diff --git a/sysdeps/generic/ifreq.h b/sysdeps/generic/ifreq.h index b6c1c9fb14..8e83287486 100644 --- a/sysdeps/generic/ifreq.h +++ b/sysdeps/generic/ifreq.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2014 Free Software Foundation, Inc. +/* Copyright (C) 1999-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>. diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h index 72837f329c..4559c176e5 100644 --- a/sysdeps/generic/inttypes.h +++ b/sysdeps/generic/inttypes.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2014 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 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 diff --git a/sysdeps/generic/ld.abilist b/sysdeps/generic/ld.abilist new file mode 100644 index 0000000000..ca9b8479ce --- /dev/null +++ b/sysdeps/generic/ld.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../ld.abilist file to make the test pass. diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h index ba1d9535b2..f6028373b3 100644 --- a/sysdeps/generic/ldconfig.h +++ b/sysdeps/generic/ldconfig.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2014 Free Software Foundation, Inc. +/* Copyright (C) 1999-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>, 1999. diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index ffeb093887..7a0fe8dbe4 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - Copyright (C) 1995-2014 Free Software Foundation, Inc. + Copyright (C) 1995-2015 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 @@ -38,7 +38,6 @@ #include <bits/libc-lock.h> #include <hp-timing.h> #include <tls.h> -#include <kernel-features.h> __BEGIN_DECLS @@ -91,9 +90,7 @@ typedef struct link_map *lookup_t; /* Unmap a loaded object, called by _dl_close (). */ #ifndef DL_UNMAP_IS_SPECIAL -# define DL_UNMAP(map) \ - __munmap ((void *) (map)->l_map_start, \ - (map)->l_map_end - (map)->l_map_start) +# define DL_UNMAP(map) _dl_unmap_segments (map) #endif /* By default we do not need special support to initialize DSOs loaded @@ -108,13 +105,23 @@ typedef struct link_map *lookup_t; satisfied by any symbol in the executable. Some architectures do not support copy relocations. In this case we define the macro to zero so that the code for handling them gets automatically optimized - out. */ + out. ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA means address of protected + data defined in the shared library may be external, i.e., due to copy + relocation. */ #define ELF_RTYPE_CLASS_PLT 1 #ifndef DL_NO_COPY_RELOCS # define ELF_RTYPE_CLASS_COPY 2 #else # define ELF_RTYPE_CLASS_COPY 0 #endif +/* If DL_EXTERN_PROTECTED_DATA is defined, address of protected data + defined in the shared library may be external, i.e., due to copy + relocation. */ +#ifdef DL_EXTERN_PROTECTED_DATA +# define ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 4 +#else +# define ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 0 +#endif /* ELF uses the PF_x macros to specify the segment permissions, mmap uses PROT_xxx. In most cases the three macros have the values 1, 2, @@ -253,7 +260,7 @@ typedef void (*receiver_fct) (int, const char *, const char *); # define GL(name) _##name #else # define EXTERN -# ifdef IS_IN_rtld +# if IS_IN (rtld) # define GL(name) _rtld_local._##name # else # define GL(name) _rtld_global._##name @@ -322,7 +329,7 @@ struct rtld_global /* The object to be initialized first. */ EXTERN struct link_map *_dl_initfirst; -#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL +#if HP_SMALL_TIMING_AVAIL /* Start time on CPU clock. */ EXTERN hp_timing_t _dl_cpuclock_offset; #endif @@ -412,7 +419,7 @@ struct rtld_global #ifdef SHARED }; # define __rtld_global_attribute__ -# ifdef IS_IN_rtld +# if IS_IN (rtld) # ifdef HAVE_SDATA_SECTION # define __rtld_local_attribute__ \ __attribute__ ((visibility ("hidden"), section (".sdata"))) @@ -431,7 +438,7 @@ extern struct rtld_global _rtld_global __rtld_global_attribute__; #ifndef SHARED # define GLRO(name) _##name #else -# ifdef IS_IN_rtld +# if IS_IN (rtld) # define GLRO(name) _rtld_local_ro._##name # else # define GLRO(name) _rtld_global_ro._##name @@ -535,11 +542,6 @@ struct rtld_global_ro /* All search directories defined at startup. */ EXTERN struct r_search_path_elem *_dl_init_all_dirs; -#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL - /* Overhead of a high-precision timing measurement. */ - EXTERN hp_timing_t _dl_hp_timing_overhead; -#endif - #ifdef NEED_DL_SYSINFO /* Syscall handling improvements. This is very specific to x86. */ EXTERN uintptr_t _dl_sysinfo; @@ -595,7 +597,7 @@ struct rtld_global_ro EXTERN int _dl_pointer_guard; }; # define __rtld_global_attribute__ -# ifdef IS_IN_rtld +# if IS_IN (rtld) # define __rtld_local_attribute__ __attribute__ ((visibility ("hidden"))) extern struct rtld_global_ro _rtld_local_ro attribute_relro __rtld_local_attribute__; @@ -618,7 +620,7 @@ extern const ElfW(Phdr) *_dl_phdr; extern size_t _dl_phnum; #endif -#ifdef IS_IN_rtld +#if IS_IN (rtld) /* This is the initial value of GL(dl_error_catch_tsd). A non-TLS libpthread will change it. */ extern void **_dl_initial_error_catch_tsd (void) __attribute__ ((const)) @@ -649,7 +651,8 @@ extern char **_dl_argv attribute_relro #endif ; -#ifdef IS_IN_rtld +rtld_hidden_proto (_dl_argv) +#if IS_IN (rtld) extern unsigned int _dl_skip_args attribute_hidden # ifndef DL_ARGV_NOT_RELRO attribute_relro @@ -660,22 +663,13 @@ extern unsigned int _dl_skip_args_internal attribute_hidden attribute_relro # endif ; -extern char **_dl_argv_internal attribute_hidden -# ifndef DL_ARGV_NOT_RELRO - attribute_relro -# endif - ; -# define rtld_progname (INTUSE(_dl_argv)[0]) -#else -# define rtld_progname _dl_argv[0] #endif +#define rtld_progname _dl_argv[0] /* Flag set at startup and cleared when the last initializer has run. */ extern int _dl_starting_up; weak_extern (_dl_starting_up) -#ifdef IS_IN_rtld -extern int _dl_starting_up_internal attribute_hidden; -#endif +rtld_hidden_proto (_dl_starting_up) /* Random data provided by the kernel. */ extern void *_dl_random attribute_hidden attribute_relro; @@ -899,8 +893,7 @@ extern void _dl_start_profile (void) internal_function attribute_hidden; /* The actual functions used to keep book on the calls. */ extern void _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc); -extern void _dl_mcount_internal (ElfW(Addr) frompc, ElfW(Addr) selfpc) - attribute_hidden; +rtld_hidden_proto (_dl_mcount) /* This function is simply a wrapper around the _dl_mcount function which does not require a FROMPC parameter since this is the @@ -922,8 +915,8 @@ extern const struct r_strlenpair *_dl_important_hwcaps (const char *platform, internal_function; /* Look up NAME in ld.so.cache and return the file name stored there, - or null if none is found. */ -extern const char *_dl_load_cache_lookup (const char *name) + or null if none is found. Caller must free returned string. */ +extern char *_dl_load_cache_lookup (const char *name) internal_function; /* If the system does not support MAP_COPY we cannot leave the file open @@ -957,6 +950,9 @@ extern void _dl_sysdep_start_cleanup (void) /* Determine next available module ID. */ extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden; +/* Count the modules with TLS segments. */ +extern size_t _dl_count_modids (void) internal_function attribute_hidden; + /* Calculate offset of the TLS blocks in the static TLS block. */ extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden; diff --git a/sysdeps/generic/libBrokenLocale.abilist b/sysdeps/generic/libBrokenLocale.abilist new file mode 100644 index 0000000000..2e069e14b9 --- /dev/null +++ b/sysdeps/generic/libBrokenLocale.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libBrokenLocale.abilist file to make the test pass. diff --git a/sysdeps/generic/libanl.abilist b/sysdeps/generic/libanl.abilist new file mode 100644 index 0000000000..c407ab305d --- /dev/null +++ b/sysdeps/generic/libanl.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libanl.abilist file to make the test pass. diff --git a/sysdeps/generic/libc-mmap.h b/sysdeps/generic/libc-mmap.h index 8236ef71ba..c17ff07890 100644 --- a/sysdeps/generic/libc-mmap.h +++ b/sysdeps/generic/libc-mmap.h @@ -1,5 +1,5 @@ /* Internal logic for dealing with mmap quirks. - Copyright (C) 2013-2014 Free Software Foundation, Inc. + Copyright (C) 2013-2015 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 diff --git a/sysdeps/generic/libc.abilist b/sysdeps/generic/libc.abilist new file mode 100644 index 0000000000..ff6e8f68e8 --- /dev/null +++ b/sysdeps/generic/libc.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libc.abilist file to make the test pass. diff --git a/sysdeps/generic/libcrypt.abilist b/sysdeps/generic/libcrypt.abilist new file mode 100644 index 0000000000..418d399ecb --- /dev/null +++ b/sysdeps/generic/libcrypt.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libcrypt.abilist file to make the test pass. diff --git a/sysdeps/generic/libdl.abilist b/sysdeps/generic/libdl.abilist new file mode 100644 index 0000000000..95735046e3 --- /dev/null +++ b/sysdeps/generic/libdl.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libdl.abilist file to make the test pass. diff --git a/sysdeps/generic/libm.abilist b/sysdeps/generic/libm.abilist new file mode 100644 index 0000000000..de8edb1d76 --- /dev/null +++ b/sysdeps/generic/libm.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libm.abilist file to make the test pass. diff --git a/sysdeps/generic/libpthread.abilist b/sysdeps/generic/libpthread.abilist new file mode 100644 index 0000000000..0e38d32190 --- /dev/null +++ b/sysdeps/generic/libpthread.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libpthread.abilist file to make the test pass. diff --git a/sysdeps/generic/libresolv.abilist b/sysdeps/generic/libresolv.abilist new file mode 100644 index 0000000000..97dde6ae50 --- /dev/null +++ b/sysdeps/generic/libresolv.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../libresolv.abilist file to make the test pass. diff --git a/sysdeps/generic/librt.abilist b/sysdeps/generic/librt.abilist new file mode 100644 index 0000000000..01f32b37dc --- /dev/null +++ b/sysdeps/generic/librt.abilist @@ -0,0 +1,2 @@ +# This is a placeholder file. This configuration needs its own +# sysdeps/.../librt.abilist file to make the test pass. diff --git a/sysdeps/generic/localplt.data b/sysdeps/generic/localplt.data index d2965199f3..1a40cf9841 100644 --- a/sysdeps/generic/localplt.data +++ b/sysdeps/generic/localplt.data @@ -7,3 +7,11 @@ libc.so: malloc libc.so: memalign libc.so: realloc libm.so: matherr +# The dynamic loader uses __libc_memalign internally to allocate aligned +# TLS storage. The other malloc family of functions are expected to allow +# user symbol interposition. +ld.so: __libc_memalign +ld.so: malloc +ld.so: calloc +ld.so: realloc +ld.so: free diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h index e440d66199..ba1c7d0c0a 100644 --- a/sysdeps/generic/machine-gmon.h +++ b/sysdeps/generic/machine-gmon.h @@ -1,5 +1,5 @@ /* Machine-dependent definitions for profiling support. Generic GCC 2 version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/machine-lock.h b/sysdeps/generic/machine-lock.h index 5b9b2145e6..a050f8f52e 100644 --- a/sysdeps/generic/machine-lock.h +++ b/sysdeps/generic/machine-lock.h @@ -1,5 +1,5 @@ /* Machine-specific definition for spin locks. Stub version. - Copyright (C) 1994-2014 Free Software Foundation, Inc. + Copyright (C) 1994-2015 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 diff --git a/sysdeps/generic/machine-sp.h b/sysdeps/generic/machine-sp.h index cc48eac674..a6e17df016 100644 --- a/sysdeps/generic/machine-sp.h +++ b/sysdeps/generic/machine-sp.h @@ -1,5 +1,5 @@ /* Machine-specific function to return the stack pointer. Stub version. - Copyright (C) 1994-2014 Free Software Foundation, Inc. + Copyright (C) 1994-2015 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 diff --git a/sysdeps/generic/malloc-machine.h b/sysdeps/generic/malloc-machine.h index df7adebe26..10f6e72eb2 100644 --- a/sysdeps/generic/malloc-machine.h +++ b/sysdeps/generic/malloc-machine.h @@ -1,6 +1,6 @@ /* Basic platform-independent macro definitions for mutexes, thread-specific data and parameters for malloc. - Copyright (C) 2003-2014 Free Software Foundation, Inc. + Copyright (C) 2003-2015 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 @@ -35,7 +35,7 @@ typedef int mutex_t; # define mutex_init(m) (*(m) = 0) -# define mutex_lock(m) ((*(m) = 1), 0) +# define mutex_lock(m) ({ *(m) = 1; 0; }) # define mutex_trylock(m) (*(m) ? 1 : ((*(m) = 1), 0)) # define mutex_unlock(m) (*(m) = 0) # define MUTEX_INITIALIZER (0) diff --git a/sysdeps/generic/malloc-sysdep.h b/sysdeps/generic/malloc-sysdep.h index a563ab1bac..a6f6489441 100644 --- a/sysdeps/generic/malloc-sysdep.h +++ b/sysdeps/generic/malloc-sysdep.h @@ -1,5 +1,5 @@ /* System-specific malloc support functions. Generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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 diff --git a/sysdeps/generic/math-tests-arch.h b/sysdeps/generic/math-tests-arch.h new file mode 100644 index 0000000000..fb086d9d78 --- /dev/null +++ b/sysdeps/generic/math-tests-arch.h @@ -0,0 +1,24 @@ +/* Runtime architecture check for math tests. + Copyright (C) 2014-2015 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/>. */ + +/* These macros used for architecture check in math tests runtime. + INIT_ARCH_EXT should set up for example some global variable which is + checked by CHECK_ARCH_EXT which produces return from individual test to + prevent run on hardware not supported by tested function implementation. */ +#define INIT_ARCH_EXT +#define CHECK_ARCH_EXT diff --git a/sysdeps/generic/math-tests.h b/sysdeps/generic/math-tests.h index c86b06705e..b92623f7cd 100644 --- a/sysdeps/generic/math-tests.h +++ b/sysdeps/generic/math-tests.h @@ -1,5 +1,5 @@ /* Configuration for math tests. Generic version. - Copyright (C) 2013-2014 Free Software Foundation, Inc. + Copyright (C) 2013-2015 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 @@ -76,3 +76,14 @@ (sizeof (TYPE) == sizeof (float) ? EXCEPTION_TESTS_float \ : sizeof (TYPE) == sizeof (double) ? EXCEPTION_TESTS_double \ : EXCEPTION_TESTS_long_double) + +/* Indicate whether the given exception trap(s) can be enabled + in feenableexcept. If non-zero, the traps are always supported. + If zero, traps may or may not be supported depending on the + target (this can be determined by checking the return value + of feenableexcept). This enables skipping of tests which use + traps. By default traps are supported unless overridden. */ +#ifndef EXCEPTION_ENABLE_SUPPORTED +# define EXCEPTION_ENABLE_SUPPORTED(EXCEPT) \ + (EXCEPTION_TESTS_float || EXCEPTION_TESTS_double) +#endif diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h index 9b881a3e76..0ab547d82f 100644 --- a/sysdeps/generic/math_private.h +++ b/sysdeps/generic/math_private.h @@ -20,6 +20,7 @@ #include <stdint.h> #include <sys/types.h> #include <fenv.h> +#include <get-rounding-mode.h> /* The original fdlibm code used statements like: n0 = ((*(int*)&one)>>29)^1; * index of high word * @@ -398,7 +399,7 @@ extern long double __gamma_productl (long double x, long double x_eps, static __always_inline void default_libc_feholdexcept (fenv_t *e) { - (void) feholdexcept (e); + (void) __feholdexcept (e); } #ifndef libc_feholdexcept @@ -414,7 +415,7 @@ default_libc_feholdexcept (fenv_t *e) static __always_inline void default_libc_fesetround (int r) { - (void) fesetround (r); + (void) __fesetround (r); } #ifndef libc_fesetround @@ -430,8 +431,8 @@ default_libc_fesetround (int r) static __always_inline void default_libc_feholdexcept_setround (fenv_t *e, int r) { - feholdexcept (e); - fesetround (r); + __feholdexcept (e); + __fesetround (r); } #ifndef libc_feholdexcept_setround @@ -461,7 +462,7 @@ default_libc_feholdexcept_setround (fenv_t *e, int r) static __always_inline void default_libc_fesetenv (fenv_t *e) { - (void) fesetenv (e); + (void) __fesetenv (e); } #ifndef libc_fesetenv @@ -477,7 +478,7 @@ default_libc_fesetenv (fenv_t *e) static __always_inline void default_libc_feupdateenv (fenv_t *e) { - (void) feupdateenv (e); + (void) __feupdateenv (e); } #ifndef libc_feupdateenv @@ -498,7 +499,7 @@ static __always_inline int default_libc_feupdateenv_test (fenv_t *e, int ex) { int ret = fetestexcept (ex); - feupdateenv (e); + __feupdateenv (e); return ret; } @@ -551,12 +552,26 @@ default_libc_feupdateenv_test (fenv_t *e, int ex) # define libc_feresetround_noexl libc_fesetenvl #endif +#ifndef HAVE_RM_CTX +# define HAVE_RM_CTX 0 +#endif + #if HAVE_RM_CTX /* Set/Restore Rounding Modes only when necessary. If defined, these functions set/restore floating point state only if the state needed within the lexical block is different from the current state. This saves a lot of time when the floating point unit is much slower than the fixed point units. */ +# ifndef libc_feholdsetround_noex_ctx +# define libc_feholdsetround_noex_ctx libc_feholdsetround_ctx +# endif +# ifndef libc_feholdsetround_noexf_ctx +# define libc_feholdsetround_noexf_ctx libc_feholdsetroundf_ctx +# endif +# ifndef libc_feholdsetround_noexl_ctx +# define libc_feholdsetround_noexl_ctx libc_feholdsetroundl_ctx +# endif + # ifndef libc_feresetround_noex_ctx # define libc_feresetround_noex_ctx libc_fesetenv_ctx # endif @@ -567,24 +582,80 @@ default_libc_feupdateenv_test (fenv_t *e, int ex) # define libc_feresetround_noexl_ctx libc_fesetenvl_ctx # endif -# ifndef libc_feholdsetround_53bit_ctx -# define libc_feholdsetround_53bit_ctx libc_feholdsetround_ctx -# endif +#else -# ifndef libc_feresetround_53bit_ctx -# define libc_feresetround_53bit_ctx libc_feresetround_ctx -# endif +/* Default implementation using standard fenv functions. + Avoid unnecessary rounding mode changes by first checking the + current rounding mode. Note the use of __glibc_unlikely is + important for performance. */ -# define SET_RESTORE_ROUND_GENERIC(RM,ROUNDFUNC,CLEANUPFUNC) \ - struct rm_ctx ctx __attribute__((cleanup(CLEANUPFUNC ## _ctx))); \ - ROUNDFUNC ## _ctx (&ctx, (RM)) -#else -# define SET_RESTORE_ROUND_GENERIC(RM, ROUNDFUNC, CLEANUPFUNC) \ - fenv_t __libc_save_rm __attribute__((cleanup(CLEANUPFUNC))); \ - ROUNDFUNC (&__libc_save_rm, (RM)) +static __always_inline void +libc_feholdsetround_ctx (struct rm_ctx *ctx, int round) +{ + ctx->updated_status = false; + + /* Update rounding mode only if different. */ + if (__glibc_unlikely (round != get_rounding_mode ())) + { + ctx->updated_status = true; + __fegetenv (&ctx->env); + __fesetround (round); + } +} + +static __always_inline void +libc_feresetround_ctx (struct rm_ctx *ctx) +{ + /* Restore the rounding mode if updated. */ + if (__glibc_unlikely (ctx->updated_status)) + __feupdateenv (&ctx->env); +} + +static __always_inline void +libc_feholdsetround_noex_ctx (struct rm_ctx *ctx, int round) +{ + /* Save exception flags and rounding mode. */ + __fegetenv (&ctx->env); + + /* Update rounding mode only if different. */ + if (__glibc_unlikely (round != get_rounding_mode ())) + __fesetround (round); +} + +static __always_inline void +libc_feresetround_noex_ctx (struct rm_ctx *ctx) +{ + /* Restore exception flags and rounding mode. */ + __fesetenv (&ctx->env); +} + +# define libc_feholdsetroundf_ctx libc_feholdsetround_ctx +# define libc_feholdsetroundl_ctx libc_feholdsetround_ctx +# define libc_feresetroundf_ctx libc_feresetround_ctx +# define libc_feresetroundl_ctx libc_feresetround_ctx + +# define libc_feholdsetround_noexf_ctx libc_feholdsetround_noex_ctx +# define libc_feholdsetround_noexl_ctx libc_feholdsetround_noex_ctx +# define libc_feresetround_noexf_ctx libc_feresetround_noex_ctx +# define libc_feresetround_noexl_ctx libc_feresetround_noex_ctx + +#endif + +#ifndef libc_feholdsetround_53bit_ctx +# define libc_feholdsetround_53bit_ctx libc_feholdsetround_ctx +#endif +#ifndef libc_feresetround_53bit_ctx +# define libc_feresetround_53bit_ctx libc_feresetround_ctx #endif -/* Save and restore the rounding mode within a lexical block. */ +#define SET_RESTORE_ROUND_GENERIC(RM,ROUNDFUNC,CLEANUPFUNC) \ + struct rm_ctx ctx __attribute__((cleanup (CLEANUPFUNC ## _ctx))); \ + ROUNDFUNC ## _ctx (&ctx, (RM)) + +/* Set the rounding mode within a lexical block. Restore the rounding mode to + the value at the start of the block. The exception mode must be preserved. + Exceptions raised within the block must be set in the exception flags. + Non-stop mode may be enabled inside the block. */ #define SET_RESTORE_ROUND(RM) \ SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround, libc_feresetround) @@ -593,15 +664,21 @@ default_libc_feupdateenv_test (fenv_t *e, int ex) #define SET_RESTORE_ROUNDL(RM) \ SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetroundl) -/* Save and restore the rounding mode within a lexical block, and also - the set of exceptions raised within the block may be discarded. */ +/* Set the rounding mode within a lexical block. Restore the rounding mode to + the value at the start of the block. The exception mode must be preserved. + Exceptions raised within the block must be discarded, and exception flags + are restored to the value at the start of the block. + Non-stop mode may be enabled inside the block. */ #define SET_RESTORE_ROUND_NOEX(RM) \ - SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround, libc_feresetround_noex) + SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noex, \ + libc_feresetround_noex) #define SET_RESTORE_ROUND_NOEXF(RM) \ - SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundf, libc_feresetround_noexf) + SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexf, \ + libc_feresetround_noexf) #define SET_RESTORE_ROUND_NOEXL(RM) \ - SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetround_noexl) + SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexl, \ + libc_feresetround_noexl) /* Like SET_RESTORE_ROUND, but also set rounding precision to 53 bits. */ #define SET_RESTORE_ROUND_53BIT(RM) \ diff --git a/sysdeps/generic/memcopy.h b/sysdeps/generic/memcopy.h index 49e53630dd..e6bc6e4758 100644 --- a/sysdeps/generic/memcopy.h +++ b/sysdeps/generic/memcopy.h @@ -1,5 +1,5 @@ /* memcopy.h -- definitions for memory copy functions. Generic C version. - Copyright (C) 1991-2014 Free Software Foundation, Inc. + Copyright (C) 1991-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Torbjorn Granlund (tege@sics.se). @@ -40,6 +40,7 @@ #include <sys/cdefs.h> #include <endian.h> +#include <pagecopy.h> /* The macros defined in this file are: @@ -144,8 +145,54 @@ extern void _wordcopy_bwd_dest_aligned (long int, long int, size_t) __THROW; (nbytes_left) = (nbytes) % OPSIZ; \ } while (0) +/* The macro PAGE_COPY_FWD_MAYBE (dstp, srcp, nbytes_left, nbytes) is invoked + like WORD_COPY_FWD et al. The pointers should be at least word aligned. + This will check if virtual copying by pages can and should be done and do it + if so. The pointers will be aligned to PAGE_SIZE bytes. The macro requires + that pagecopy.h defines at least PAGE_COPY_THRESHOLD to 0. If + PAGE_COPY_THRESHOLD is non-zero, the header must also define PAGE_COPY_FWD + and PAGE_SIZE. +*/ +#if PAGE_COPY_THRESHOLD + +# include <assert.h> + +# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) \ + do \ + { \ + if ((nbytes) >= PAGE_COPY_THRESHOLD && \ + PAGE_OFFSET ((dstp) - (srcp)) == 0) \ + { \ + /* The amount to copy is past the threshold for copying \ + pages virtually with kernel VM operations, and the \ + source and destination addresses have the same alignment. */ \ + size_t nbytes_before = PAGE_OFFSET (-(dstp)); \ + if (nbytes_before != 0) \ + { \ + /* First copy the words before the first page boundary. */ \ + WORD_COPY_FWD (dstp, srcp, nbytes_left, nbytes_before); \ + assert (nbytes_left == 0); \ + nbytes -= nbytes_before; \ + } \ + PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes); \ + } \ + } while (0) + +/* The page size is always a power of two, so we can avoid modulo division. */ +# define PAGE_OFFSET(n) ((n) & (PAGE_SIZE - 1)) + +#else + +# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) /* nada */ + +#endif /* Threshold value for when to enter the unrolled loops. */ #define OP_T_THRES 16 +/* Set to 1 if memcpy is safe to use for forward-copying memmove with + overlapping addresses. This is 0 by default because memcpy implementations + are generally not safe for overlapping addresses. */ +#define MEMCPY_OK_FOR_FWD_MEMMOVE 0 + #endif /* memcopy.h */ diff --git a/sysdeps/generic/memusage.h b/sysdeps/generic/memusage.h index b610b7b2ce..775bd18b58 100644 --- a/sysdeps/generic/memusage.h +++ b/sysdeps/generic/memusage.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2014 Free Software Foundation, Inc. +/* Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/net/if.h b/sysdeps/generic/net/if.h index 35bb142086..2346bdab50 100644 --- a/sysdeps/generic/net/if.h +++ b/sysdeps/generic/net/if.h @@ -1,5 +1,5 @@ /* net/if.h -- declarations for inquiring about network interfaces - Copyright (C) 2000-2014 Free Software Foundation, Inc. + Copyright (C) 2000-2015 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 diff --git a/sysdeps/generic/netinet/if_ether.h b/sysdeps/generic/netinet/if_ether.h index a52883e575..54dbf47ef8 100644 --- a/sysdeps/generic/netinet/if_ether.h +++ b/sysdeps/generic/netinet/if_ether.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2014 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 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 @@ -16,17 +16,17 @@ <http://www.gnu.org/licenses/>. */ #ifndef __NETINET_IF_ETHER_H - #define __NETINET_IF_ETHER_H 1 -#include <features.h> #include <sys/types.h> +#define ETH_ALEN 6 /* Octets in one ethernet address. */ + /* This is a name for the 48 bit ethernet address available on many systems. */ struct ether_addr { - u_int8_t ether_addr_octet[6]; + u_int8_t ether_addr_octet[ETH_ALEN]; } __attribute__ ((__packed__)); #endif /* netinet/if_ether.h */ diff --git a/sysdeps/generic/netinet/in_systm.h b/sysdeps/generic/netinet/in_systm.h index 2bc56d9f2b..d12df7a527 100644 --- a/sysdeps/generic/netinet/in_systm.h +++ b/sysdeps/generic/netinet/in_systm.h @@ -1,5 +1,5 @@ /* System specific type definitions for networking code. - Copyright (C) 1997-2014 Free Software Foundation, Inc. + Copyright (C) 1997-2015 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 diff --git a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h index ecf340e07f..97ed63ce7a 100644 --- a/sysdeps/generic/netinet/ip.h +++ b/sysdeps/generic/netinet/ip.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2014 Free Software Foundation, Inc. +/* Copyright (C) 1991-2015 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 @@ -64,7 +64,7 @@ struct iphdr /*The options start here. */ }; -#ifdef __USE_BSD +#ifdef __USE_MISC /* * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. @@ -146,7 +146,7 @@ struct ip_timestamp #endif u_int32_t data[9]; }; -#endif /* __USE_BSD */ +#endif /* __USE_MISC */ #define IPVERSION 4 /* IP version number */ #define IP_MAXPACKET 65535 /* maximum packet size */ diff --git a/sysdeps/generic/nfs/nfs.h b/sysdeps/generic/nfs/nfs.h index c32b1d8498..c8aa74ad10 100644 --- a/sysdeps/generic/nfs/nfs.h +++ b/sysdeps/generic/nfs/nfs.h @@ -1,5 +1,5 @@ /* <nfs/nfs.h> -- ill-specified NFS-related definitions - Copyright (C) 1999-2014 Free Software Foundation, Inc. + Copyright (C) 1999-2015 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 diff --git a/sysdeps/generic/not-cancel.h b/sysdeps/generic/not-cancel.h index cc1d606289..af1e052bf6 100644 --- a/sysdeps/generic/not-cancel.h +++ b/sysdeps/generic/not-cancel.h @@ -1,5 +1,5 @@ /* Uncancelable versions of cancelable interfaces. Generic version. - Copyright (C) 2003-2014 Free Software Foundation, Inc. + Copyright (C) 2003-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. diff --git a/sysdeps/generic/nscd-types.h b/sysdeps/generic/nscd-types.h index c577ca7aea..53fc776eae 100644 --- a/sysdeps/generic/nscd-types.h +++ b/sysdeps/generic/nscd-types.h @@ -1,5 +1,5 @@ /* Types for the NSCD implementation. Generic version. - Copyright (c) 2000-2014 Free Software Foundation, Inc. + Copyright (c) 2000-2015 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 diff --git a/sysdeps/generic/pagecopy.h b/sysdeps/generic/pagecopy.h index 2c35b71b87..b29d93e728 100644 --- a/sysdeps/generic/pagecopy.h +++ b/sysdeps/generic/pagecopy.h @@ -1,5 +1,5 @@ -/* Macros for copying by pages; used in memcpy, memmove. Generic macros. - Copyright (C) 1995-2014 Free Software Foundation, Inc. +/* Macros for copying by pages; used in memcpy, memmove. + Copyright (C) 1995-2015 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 @@ -16,19 +16,15 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -/* This file defines the macro: +/* The macro PAGE_COPY_FWD_MAYBE defined in memcopy.h is used in memmove if the + PAGE_COPY_THRESHOLD macro is set to a non-zero value. The default is 0, + that is copying by pages is not implemented. - PAGE_COPY_FWD_MAYBE (dstp, srcp, nbytes_left, nbytes) - - which is invoked like WORD_COPY_FWD et al. The pointers should be at - least word aligned. This will check if virtual copying by pages can and - should be done and do it if so. - - System-specific pagecopy.h files should define these macros and then - #include this file: + System-specific pagecopy.h files that want to support page copying should + define these macros: PAGE_COPY_THRESHOLD - -- Minimum size for which virtual copying by pages is worthwhile. + -- A non-zero minimum size for which virtual copying by pages is worthwhile. PAGE_SIZE -- Size of a page. @@ -38,37 +34,4 @@ The pointers will be aligned to PAGE_SIZE bytes. */ - -#if PAGE_COPY_THRESHOLD - -#include <assert.h> - -#define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) \ - do \ - { \ - if ((nbytes) >= PAGE_COPY_THRESHOLD && \ - PAGE_OFFSET ((dstp) - (srcp)) == 0) \ - { \ - /* The amount to copy is past the threshold for copying \ - pages virtually with kernel VM operations, and the \ - source and destination addresses have the same alignment. */ \ - size_t nbytes_before = PAGE_OFFSET (-(dstp)); \ - if (nbytes_before != 0) \ - { \ - /* First copy the words before the first page boundary. */ \ - WORD_COPY_FWD (dstp, srcp, nbytes_left, nbytes_before); \ - assert (nbytes_left == 0); \ - nbytes -= nbytes_before; \ - } \ - PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes); \ - } \ - } while (0) - -/* The page size is always a power of two, so we can avoid modulo division. */ -#define PAGE_OFFSET(n) ((n) & (PAGE_SIZE - 1)) - -#else - -#define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) /* nada */ - -#endif +#define PAGE_COPY_THRESHOLD 0 diff --git a/sysdeps/generic/profil-counter.h b/sysdeps/generic/profil-counter.h index 4ff9b496cf..813afa83ec 100644 --- a/sysdeps/generic/profil-counter.h +++ b/sysdeps/generic/profil-counter.h @@ -1,5 +1,5 @@ /* Machine-dependent SIGPROF signal handler. "Generic" version w/ sigcontext - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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,7 +20,7 @@ and the interrupted PC is easily findable in the `struct sigcontext'. */ static void -profil_counter (int signr, int code, struct sigcontext *scp) +__profil_counter (int signr, int code, struct sigcontext *scp) { profil_count ((void *) scp->sc_pc); } diff --git a/sysdeps/generic/pty-private.h b/sysdeps/generic/pty-private.h index aa8fff7781..b07fbcca98 100644 --- a/sysdeps/generic/pty-private.h +++ b/sysdeps/generic/pty-private.h @@ -1,5 +1,5 @@ /* Internal defenitions and declarations for pseudo terminal functions. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998. diff --git a/sysdeps/generic/register-dump.h b/sysdeps/generic/register-dump.h index 486772972a..1d00c5861d 100644 --- a/sysdeps/generic/register-dump.h +++ b/sysdeps/generic/register-dump.h @@ -1,5 +1,5 @@ /* Dump registers. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/sysdeps/generic/safe-fatal.h b/sysdeps/generic/safe-fatal.h new file mode 100644 index 0000000000..526dd32ef3 --- /dev/null +++ b/sysdeps/generic/safe-fatal.h @@ -0,0 +1,37 @@ +/* Crash the process immediately, without possibility of deadlock. Generic. + Copyright (C) 2014-2015 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/>. */ + +#ifndef _SAFE_FATAL_H +#define _SAFE_FATAL_H 1 + +#include <abort-instr.h> + +static inline void +__safe_fatal (void) +{ +#ifdef ABORT_INSTRUCTION + /* This is not guaranteed to be free from the possibility of deadlock, + since it might generate a signal that can be caught. But it's better + than nothing. */ + ABORT_INSTRUCTION; +#else +# error Need an OS-specific or machine-specific safe-fatal.h +#endif +} + +#endif /* safe-fatal.h */ diff --git a/sysdeps/generic/sigcontextinfo.h b/sysdeps/generic/sigcontextinfo.h index 1b8acb876d..3265b981df 100644 --- a/sysdeps/generic/sigcontextinfo.h +++ b/sysdeps/generic/sigcontextinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1998-2014 Free Software Foundation, Inc. +/* Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. diff --git a/sysdeps/generic/siglist.h b/sysdeps/generic/siglist.h index e4f62c288b..3305ccc7f7 100644 --- a/sysdeps/generic/siglist.h +++ b/sysdeps/generic/siglist.h @@ -1,5 +1,5 @@ /* Canonical list of all signal names. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/sigset-cvt-mask.h b/sysdeps/generic/sigset-cvt-mask.h index acb4e01655..5d781e3203 100644 --- a/sysdeps/generic/sigset-cvt-mask.h +++ b/sysdeps/generic/sigset-cvt-mask.h @@ -1,6 +1,6 @@ /* Convert between lowlevel sigmask and libc representation of sigset_t. Generic version. - Copyright (C) 1998-2014 Free Software Foundation, Inc. + Copyright (C) 1998-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Joe Keane <jgk@jgk.org>. diff --git a/sysdeps/generic/stackinfo.h b/sysdeps/generic/stackinfo.h index 6ed686a73a..368868f5df 100644 --- a/sysdeps/generic/stackinfo.h +++ b/sysdeps/generic/stackinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1999-2014 Free Software Foundation, Inc. +/* Copyright (C) 1999-2015 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 diff --git a/sysdeps/generic/stdint.h b/sysdeps/generic/stdint.h index 4660748af1..5c9f0ffd11 100644 --- a/sysdeps/generic/stdint.h +++ b/sysdeps/generic/stdint.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997-2014 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 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 @@ -260,7 +260,11 @@ typedef unsigned long long int uintmax_t; # if __WORDSIZE == 64 # define SIZE_MAX (18446744073709551615UL) # else -# define SIZE_MAX (4294967295U) +# ifdef __WORDSIZE32_SIZE_ULONG +# define SIZE_MAX (4294967295UL) +# else +# define SIZE_MAX (4294967295U) +# endif # endif /* Limits of `wchar_t'. */ diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h index 9eaf014ff2..ce576c9fd2 100644 --- a/sysdeps/generic/symbol-hacks.h +++ b/sysdeps/generic/symbol-hacks.h @@ -1,6 +1,7 @@ /* Some compiler optimizations may transform loops into memset/memmove calls and without proper declaration it may generate PLT calls. */ -#if !defined __ASSEMBLER__ && !defined NOT_IN_libc && defined SHARED +#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED asm ("memmove = __GI_memmove"); asm ("memset = __GI_memset"); +asm ("memcpy = __GI_memcpy"); #endif diff --git a/sysdeps/generic/sys/ptrace.h b/sysdeps/generic/sys/ptrace.h index 7c252a80f4..53992e8c50 100644 --- a/sysdeps/generic/sys/ptrace.h +++ b/sysdeps/generic/sys/ptrace.h @@ -1,5 +1,5 @@ /* `ptrace' debugger support interface. Generic version; constants are common. - Copyright (C) 1991-2014 Free Software Foundation, Inc. + Copyright (C) 1991-2015 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 diff --git a/sysdeps/generic/sys/swap.h b/sysdeps/generic/sys/swap.h index 1db04985f8..62423b91f2 100644 --- a/sysdeps/generic/sys/swap.h +++ b/sysdeps/generic/sys/swap.h @@ -1,5 +1,5 @@ /* Calls to enable and disable swapping on specified locations. Unix version. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/sys/sysinfo.h b/sysdeps/generic/sys/sysinfo.h index 85f0438507..a0bb271ab0 100644 --- a/sysdeps/generic/sys/sysinfo.h +++ b/sysdeps/generic/sys/sysinfo.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1996-2014 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/sys/sysmacros.h b/sysdeps/generic/sys/sysmacros.h index 1d3732291d..06e5d70e90 100644 --- a/sysdeps/generic/sys/sysmacros.h +++ b/sysdeps/generic/sys/sysmacros.h @@ -1,5 +1,5 @@ /* Definitions of macros to access `dev_t' values. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 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 diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h index 24de8dd33d..d9e9295f78 100644 --- a/sysdeps/generic/sys/ucontext.h +++ b/sysdeps/generic/sys/ucontext.h @@ -1,5 +1,5 @@ /* Data structures for user-level context switching. Generic version. - Copyright (C) 1997-2014 Free Software Foundation, Inc. + Copyright (C) 1997-2015 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 diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h index d1104efdf4..89ce421048 100644 --- a/sysdeps/generic/sysdep.h +++ b/sysdeps/generic/sysdep.h @@ -1,5 +1,5 @@ /* Generic asm macros used on many machines. - Copyright (C) 1991-2014 Free Software Foundation, Inc. + Copyright (C) 1991-2015 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 @@ -36,84 +36,62 @@ #endif /* Makros to generate eh_frame unwind information. */ -#ifdef HAVE_ASM_CFI_DIRECTIVES -# ifdef __ASSEMBLER__ -# define cfi_startproc .cfi_startproc -# define cfi_endproc .cfi_endproc -# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off -# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg -# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off -# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off -# define cfi_offset(reg, off) .cfi_offset reg, off -# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off -# define cfi_register(r1, r2) .cfi_register r1, r2 -# define cfi_return_column(reg) .cfi_return_column reg -# define cfi_restore(reg) .cfi_restore reg -# define cfi_same_value(reg) .cfi_same_value reg -# define cfi_undefined(reg) .cfi_undefined reg -# define cfi_remember_state .cfi_remember_state -# define cfi_restore_state .cfi_restore_state -# define cfi_window_save .cfi_window_save -# define cfi_personality(enc, exp) .cfi_personality enc, exp -# define cfi_lsda(enc, exp) .cfi_lsda enc, exp +#ifdef __ASSEMBLER__ +# define cfi_startproc .cfi_startproc +# define cfi_endproc .cfi_endproc +# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off +# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg +# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off +# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off +# define cfi_offset(reg, off) .cfi_offset reg, off +# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off +# define cfi_register(r1, r2) .cfi_register r1, r2 +# define cfi_return_column(reg) .cfi_return_column reg +# define cfi_restore(reg) .cfi_restore reg +# define cfi_same_value(reg) .cfi_same_value reg +# define cfi_undefined(reg) .cfi_undefined reg +# define cfi_remember_state .cfi_remember_state +# define cfi_restore_state .cfi_restore_state +# define cfi_window_save .cfi_window_save +# define cfi_personality(enc, exp) .cfi_personality enc, exp +# define cfi_lsda(enc, exp) .cfi_lsda enc, exp -# else /* ! ASSEMBLER */ +#else /* ! ASSEMBLER */ -# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name) -# define CFI_STRINGIFY2(Name) #Name -# define CFI_STARTPROC ".cfi_startproc" -# define CFI_ENDPROC ".cfi_endproc" -# define CFI_DEF_CFA(reg, off) \ +# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name) +# define CFI_STRINGIFY2(Name) #Name +# define CFI_STARTPROC ".cfi_startproc" +# define CFI_ENDPROC ".cfi_endproc" +# define CFI_DEF_CFA(reg, off) \ ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) -# define CFI_DEF_CFA_REGISTER(reg) \ +# define CFI_DEF_CFA_REGISTER(reg) \ ".cfi_def_cfa_register " CFI_STRINGIFY(reg) -# define CFI_DEF_CFA_OFFSET(off) \ +# define CFI_DEF_CFA_OFFSET(off) \ ".cfi_def_cfa_offset " CFI_STRINGIFY(off) -# define CFI_ADJUST_CFA_OFFSET(off) \ +# define CFI_ADJUST_CFA_OFFSET(off) \ ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off) -# define CFI_OFFSET(reg, off) \ +# define CFI_OFFSET(reg, off) \ ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) -# define CFI_REL_OFFSET(reg, off) \ +# define CFI_REL_OFFSET(reg, off) \ ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off) -# define CFI_REGISTER(r1, r2) \ +# define CFI_REGISTER(r1, r2) \ ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2) -# define CFI_RETURN_COLUMN(reg) \ +# define CFI_RETURN_COLUMN(reg) \ ".cfi_return_column " CFI_STRINGIFY(reg) -# define CFI_RESTORE(reg) \ +# define CFI_RESTORE(reg) \ ".cfi_restore " CFI_STRINGIFY(reg) -# define CFI_UNDEFINED(reg) \ +# define CFI_UNDEFINED(reg) \ ".cfi_undefined " CFI_STRINGIFY(reg) -# define CFI_REMEMBER_STATE \ +# define CFI_REMEMBER_STATE \ ".cfi_remember_state" -# define CFI_RESTORE_STATE \ +# define CFI_RESTORE_STATE \ ".cfi_restore_state" -# define CFI_WINDOW_SAVE \ +# define CFI_WINDOW_SAVE \ ".cfi_window_save" -# define CFI_PERSONALITY(enc, exp) \ +# define CFI_PERSONALITY(enc, exp) \ ".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) -# define CFI_LSDA(enc, exp) \ +# define CFI_LSDA(enc, exp) \ ".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp) -# endif - -#else - -# define CFI_STARTPROC -# define CFI_ENDPROC -# define CFI_DEF_CFA(reg, off) -# define CFI_DEF_CFA_REGISTER(reg) -# define CFI_DEF_CFA_OFFSET(off) -# define CFI_ADJUST_CFA_OFFSET(off) -# define CFI_OFFSET(reg, off) -# define CFI_REL_OFFSET(reg, off) -# define CFI_REGISTER(r1, r2) -# define CFI_RETURN_COLUMN(reg) -# define CFI_RESTORE(reg) -# define CFI_UNDEFINED(reg) -# define CFI_REMEMBER_STATE -# define CFI_RESTORE_STATE -# define CFI_WINDOW_SAVE -# define CFI_PERSONALITY(enc, exp) -# define CFI_LSDA(enc, exp) #endif #include "dwarf2.h" diff --git a/sysdeps/generic/thread_state.h b/sysdeps/generic/thread_state.h index 28d6c9a895..15b9a4b4de 100644 --- a/sysdeps/generic/thread_state.h +++ b/sysdeps/generic/thread_state.h @@ -1,5 +1,5 @@ /* Mach thread state definitions for machine-independent code. Stub version. - Copyright (C) 1994-2014 Free Software Foundation, Inc. + Copyright (C) 1994-2015 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 diff --git a/sysdeps/generic/tininess.h b/sysdeps/generic/tininess.h index 58cd4dd46e..a8d4bb66ee 100644 --- a/sysdeps/generic/tininess.h +++ b/sysdeps/generic/tininess.h @@ -1,6 +1,6 @@ /* Specify architecture-specific rules for determining tininess of floating-point results. Generic version. - Copyright (C) 2012-2014 Free Software Foundation, Inc. + Copyright (C) 2012-2015 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 diff --git a/sysdeps/generic/tls.h b/sysdeps/generic/tls.h index fb3d965bb9..dcbadbb860 100644 --- a/sysdeps/generic/tls.h +++ b/sysdeps/generic/tls.h @@ -1,5 +1,5 @@ /* Definition for thread-local data handling. Generic version. - Copyright (C) 2002-2014 Free Software Foundation, Inc. + Copyright (C) 2002-2015 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 @@ -59,12 +59,11 @@ use the value. - TLS_INIT_TP(tcb, firstcall) + TLS_INIT_TP(tcb) This macro must initialize the thread pointer to enable normal TLS - operation. The first parameter is a pointer to the thread control - block. The second parameter specifies whether this is the first - call for the TCB. ld.so calls this macro more than once. + operation. The parameter is a pointer to the thread control block. + ld.so calls this macro once. THREAD_DTV() diff --git a/sysdeps/generic/tst-stack-align.h b/sysdeps/generic/tst-stack-align.h index 884b349d0d..b18116af18 100644 --- a/sysdeps/generic/tst-stack-align.h +++ b/sysdeps/generic/tst-stack-align.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2003-2014 Free Software Foundation, Inc. +/* Copyright (C) 2003-2015 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 diff --git a/sysdeps/generic/unwind-dw2-fde-glibc.c b/sysdeps/generic/unwind-dw2-fde-glibc.c index 586cca5b9b..e02d0dfca1 100644 --- a/sysdeps/generic/unwind-dw2-fde-glibc.c +++ b/sysdeps/generic/unwind-dw2-fde-glibc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001-2014 Free Software Foundation, Inc. +/* Copyright (C) 2001-2015 Free Software Foundation, Inc. Contributed by Jakub Jelinek <jakub@redhat.com>. This file is part of the GNU C Library. diff --git a/sysdeps/generic/unwind-dw2-fde.c b/sysdeps/generic/unwind-dw2-fde.c index ba003a9f15..1da37ab508 100644 --- a/sysdeps/generic/unwind-dw2-fde.c +++ b/sysdeps/generic/unwind-dw2-fde.c @@ -1,5 +1,5 @@ /* Subroutines needed for unwinding stack frames for exception handling. */ -/* Copyright (C) 1997-2014 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 Free Software Foundation, Inc. Contributed by Jason Merrill <jason@cygnus.com>. This file is part of the GNU C Library. @@ -60,12 +60,15 @@ __libc_lock_define_initialized (static, object_mutex) #define __gthread_mutex_lock(m) __libc_lock_lock (*(m)) #define __gthread_mutex_unlock(m) __libc_lock_unlock (*(m)) -void __register_frame_info_bases_internal (void *begin, struct object *ob, - void *tbase, void *dbase); -void __register_frame_info_table_bases_internal (void *begin, - struct object *ob, - void *tbase, void *dbase); -void *__deregister_frame_info_bases_internal (void *begin); +void __register_frame_info_bases (void *begin, struct object *ob, + void *tbase, void *dbase); +hidden_proto (__register_frame_info_bases) +void __register_frame_info_table_bases (void *begin, + struct object *ob, + void *tbase, void *dbase); +hidden_proto (__register_frame_info_table_bases) +void *__deregister_frame_info_bases (void *begin); +hidden_proto (__deregister_frame_info_bases) #else @@ -122,12 +125,12 @@ __register_frame_info_bases (void *begin, struct object *ob, __gthread_mutex_unlock (&object_mutex); } -INTDEF(__register_frame_info_bases) +hidden_def (__register_frame_info_bases) void __register_frame_info (void *begin, struct object *ob) { - INTUSE(__register_frame_info_bases) (begin, ob, 0, 0); + __register_frame_info_bases (begin, ob, 0, 0); } void @@ -140,7 +143,7 @@ __register_frame (void *begin) return; ob = (struct object *) malloc (sizeof (struct object)); - INTUSE(__register_frame_info_bases) (begin, ob, 0, 0); + __register_frame_info_bases (begin, ob, 0, 0); } /* Similar, but BEGIN is actually a pointer to a table of unwind entries @@ -167,19 +170,19 @@ __register_frame_info_table_bases (void *begin, struct object *ob, __gthread_mutex_unlock (&object_mutex); } -INTDEF(__register_frame_info_table_bases) +hidden_def (__register_frame_info_table_bases) void __register_frame_info_table (void *begin, struct object *ob) { - INTUSE(__register_frame_info_table_bases) (begin, ob, 0, 0); + __register_frame_info_table_bases (begin, ob, 0, 0); } void __register_frame_table (void *begin) { struct object *ob = (struct object *) malloc (sizeof (struct object)); - INTUSE(__register_frame_info_table_bases) (begin, ob, 0, 0); + __register_frame_info_table_bases (begin, ob, 0, 0); } /* Called from crtbegin.o to deregister the unwind info for an object. */ @@ -243,12 +246,12 @@ __deregister_frame_info_bases (void *begin) __gthread_mutex_unlock (&object_mutex); return (void *) ob; } -INTDEF(__deregister_frame_info_bases) +hidden_def (__deregister_frame_info_bases) void * __deregister_frame_info (void *begin) { - return INTUSE(__deregister_frame_info_bases) (begin); + return __deregister_frame_info_bases (begin); } void @@ -256,7 +259,7 @@ __deregister_frame (void *begin) { /* If .eh_frame is empty, we haven't registered. */ if (*(uword *) begin != 0) - free (INTUSE(__deregister_frame_info_bases) (begin)); + free (__deregister_frame_info_bases (begin)); } diff --git a/sysdeps/generic/unwind-dw2-fde.h b/sysdeps/generic/unwind-dw2-fde.h index d759f95e75..66aa084d40 100644 --- a/sysdeps/generic/unwind-dw2-fde.h +++ b/sysdeps/generic/unwind-dw2-fde.h @@ -1,5 +1,5 @@ /* Subroutines needed for unwinding stack frames for exception handling. */ -/* Copyright (C) 1997-2014 Free Software Foundation, Inc. +/* Copyright (C) 1997-2015 Free Software Foundation, Inc. Contributed by Jason Merrill <jason@cygnus.com>. This file is part of the GNU C Library. diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c index 0f33d5b47a..4107d8bf44 100644 --- a/sysdeps/generic/unwind-dw2.c +++ b/sysdeps/generic/unwind-dw2.c @@ -1,5 +1,5 @@ /* DWARF2 exception handling and frame unwind runtime interface routines. - Copyright (C) 1997-2014 Free Software Foundation, Inc. + Copyright (C) 1997-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/generic/unwind-pe.h b/sysdeps/generic/unwind-pe.h index a4afe5c757..e3d2485e95 100644 --- a/sysdeps/generic/unwind-pe.h +++ b/sysdeps/generic/unwind-pe.h @@ -1,5 +1,5 @@ /* Exception handling and frame unwind runtime interface routines. - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -22,7 +22,7 @@ than duplicating code, however. */ /* If using C++, references to abort have to be qualified with std::. */ -#if __cplusplus +#ifdef __cplusplus #define __gxx_abort std::abort #else #define __gxx_abort abort diff --git a/sysdeps/generic/unwind-resume.h b/sysdeps/generic/unwind-resume.h new file mode 100644 index 0000000000..74c1a517e9 --- /dev/null +++ b/sysdeps/generic/unwind-resume.h @@ -0,0 +1,33 @@ +/* Definitions for unwind-resume.c. Generic version. + Copyright (C) 2015 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; see the file COPYING.LIB. If + not, see <http://www.gnu.org/licenses/>. */ + +/* These describe the arguments to unwinder personality functions, + specifically __gcc_personality_v0. A machine-specific sysdeps + file might define them differently. */ +#define PERSONALITY_PROTO \ + (int version, _Unwind_Action actions, \ + _Unwind_Exception_Class exception_class, \ + struct _Unwind_Exception *ue_header, \ + struct _Unwind_Context *context) +#define PERSONALITY_ARGS \ + (version, actions, exception_class, ue_header, context) + +/* This is defined nonzero by a machine-specific sysdeps file if + _Unwind_Resume is provided separately and thus the generic C + version should not be defined. */ +#define HAVE_ARCH_UNWIND_RESUME 0 diff --git a/sysdeps/generic/unwind.h b/sysdeps/generic/unwind.h index f2c744b4f5..41b6aecd62 100644 --- a/sysdeps/generic/unwind.h +++ b/sysdeps/generic/unwind.h @@ -1,5 +1,5 @@ /* Exception handling and frame unwind runtime interface routines. - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. diff --git a/sysdeps/generic/utmp-equal.h b/sysdeps/generic/utmp-equal.h index 3f8ab05b69..79dc037345 100644 --- a/sysdeps/generic/utmp-equal.h +++ b/sysdeps/generic/utmp-equal.h @@ -1,5 +1,5 @@ /* Helper function for utmp functions to see if two entries are equal. - Copyright (C) 1996-2014 Free Software Foundation, Inc. + Copyright (C) 1996-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com> and Paul Janzen <pcj@primenet.com>, 1996. |