From fca9d8e489ecdaaef96861e879658425e2db1297 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 25 Sep 2003 03:55:10 +0000 Subject: * sysdeps/mach/hurd/bits/libc-lock.h (__libc_cleanup_push, __libc_cleanup_pop): New macros. 2003-08-01 Alfred M. Szmidt * sysdeps/i386/dl-procinfo.h: New file, contents taken from ... * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here. #include_next dl-procinfo.h to get them. (_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h. (_DL_PLATFORMS_COUNT): Likewise. (_DL_FIRST_PLATFORM): Likewise. (_DL_HWCAP_PLATFORM): Likewise. (HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE, HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE, HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR, HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV, HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR, HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D, HWCAP_IMPORTANT): Likewise. (_DL_PROCINFO_H_): Likewise. (_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap): Likewise. (_dl_string_platform): Likewise. * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ... * sysdeps/i386/dl-procinfo.c: ... here, new file. --- ChangeLog | 27 +++++++ nptl/ChangeLog | 5 ++ sysdeps/i386/dl-procinfo.c | 83 ++++++++++++++++++++++ sysdeps/i386/dl-procinfo.h | 110 +++++++++++++++++++++++++++++ sysdeps/mach/hurd/bits/libc-lock.h | 2 + sysdeps/unix/sysv/linux/i386/dl-procinfo.c | 83 ---------------------- sysdeps/unix/sysv/linux/i386/dl-procinfo.h | 90 +---------------------- 7 files changed, 229 insertions(+), 171 deletions(-) create mode 100644 sysdeps/i386/dl-procinfo.c create mode 100644 sysdeps/i386/dl-procinfo.h delete mode 100644 sysdeps/unix/sysv/linux/i386/dl-procinfo.c diff --git a/ChangeLog b/ChangeLog index 2b0b36f10f..15bedd0817 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2003-08-07 Alfred M. Szmidt + + * sysdeps/mach/hurd/bits/libc-lock.h + (__libc_cleanup_push, __libc_cleanup_pop): New macros. + +2003-08-01 Alfred M. Szmidt + + * sysdeps/i386/dl-procinfo.h: New file, contents taken from ... + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: ... here. + #include_next dl-procinfo.h to get them. + (_DL_HWCAP_COUNT): Moved to sysdeps/i386/dl-procinfo.h. + (_DL_PLATFORMS_COUNT): Likewise. + (_DL_FIRST_PLATFORM): Likewise. + (_DL_HWCAP_PLATFORM): Likewise. + (HWCAP_I386_FPU, HWCAP_I386_VME, HWCAP_I386_DE, HWCAP_I386_PSE, + HWCAP_I386_TSC, HWCAP_I386_MSR, HWCAP_I386_PAE, HWCAP_I386_MCE, + HWCAP_I386_CX8, HWCAP_I386_APIC, HWCAP_I386_SEP, HWCAP_I386_MTRR, + HWCAP_I386_PGE, HWCAP_I386_MCA, HWCAP_I386_CMOV, + HWCAP_I386_FCMOV, HWCAP_I386_MMX, HWCAP_I386_OSFXSR, + HWCAP_I386_XMM, HWCAP_I386_XMM2, HWCAP_I386_AMD3D, + HWCAP_IMPORTANT): Likewise. + (_DL_PROCINFO_H_): Likewise. + (_dl_hwcap_string, _dl_platform_string, _dl_string_hwcap): Likewise. + (_dl_string_platform): Likewise. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Moved to ... + * sysdeps/i386/dl-procinfo.c: ... here, new file. + 2003-09-24 Ulrich Drepper * sysdeps/unix/sysv/linux/dl-execstack.c diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 30b7d9eb1d..61152e4476 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2003-09-24 Roland McGrath + + * allocatestack.c (__make_stacks_executable): Don't ignore return + value from _dl_make_stack_executable. + 2003-09-24 Ulrich Drepper * allocatestack.c (__make_stacks_executable): Also change diff --git a/sysdeps/i386/dl-procinfo.c b/sysdeps/i386/dl-procinfo.c new file mode 100644 index 0000000000..01b24d15b1 --- /dev/null +++ b/sysdeps/i386/dl-procinfo.c @@ -0,0 +1,83 @@ +/* Data for i386 version of processor capability information. + Copyright (C) 2001,2002,2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + + 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. */ + +/* This information must be kept in sync with the _DL_HWCAP_COUNT and + _DL_PLATFORM_COUNT definitions in procinfo.h. + + If anything should be added here check whether the size of each string + is still ok with the given array size. + + All the #ifdefs in the definitions ar equite irritating but + necessary if we want to avoid duplicating the information. There + are three different modes: + + - PROCINFO_DECL is defined. This means we are only interested in + declarations. + + - PROCINFO_DECL is not defined: + + + if SHARED is defined the file is included in an array + initializer. The .element = { ... } syntax is needed. + + + if SHARED is not defined a normal array initialization is + needed. + */ + +#ifndef PROCINFO_CLASS +#define PROCINFO_CLASS +#endif + +#if !defined PROCINFO_DECL && defined SHARED + ._dl_x86_cap_flags +#else +PROCINFO_CLASS const char _dl_x86_cap_flags[32][8] +#endif +#ifndef PROCINFO_DECL += { + "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", + "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov", + "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx", + "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe" + } +#endif +#if !defined SHARED || defined PROCINFO_DECL +; +#else +, +#endif + +#if !defined PROCINFO_DECL && defined SHARED + ._dl_x86_platforms +#else +PROCINFO_CLASS const char _dl_x86_platforms[4][5] +#endif +#ifndef PROCINFO_DECL += { + "i386", "i486", "i586", "i686" + } +#endif +#if !defined SHARED || defined PROCINFO_DECL +; +#else +, +#endif + +#undef PROCINFO_DECL +#undef PROCINFO_CLASS diff --git a/sysdeps/i386/dl-procinfo.h b/sysdeps/i386/dl-procinfo.h new file mode 100644 index 0000000000..51f783a95a --- /dev/null +++ b/sysdeps/i386/dl-procinfo.h @@ -0,0 +1,110 @@ +/* i386 version of processor capability information handling macros. + Copyright (C) 1998, 2000, 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _DL_PROCINFO_H +#define _DL_PROCINFO_H 1 +#include + +#define _DL_HWCAP_COUNT 32 + +#define _DL_PLATFORMS_COUNT 4 + +/* Start at 48 to reserve some space. */ +#define _DL_FIRST_PLATFORM 48 +/* Mask to filter out platforms. */ +#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ + << _DL_FIRST_PLATFORM) + +enum +{ + HWCAP_I386_FPU = 1 << 0, + HWCAP_I386_VME = 1 << 1, + HWCAP_I386_DE = 1 << 2, + HWCAP_I386_PSE = 1 << 3, + HWCAP_I386_TSC = 1 << 4, + HWCAP_I386_MSR = 1 << 5, + HWCAP_I386_PAE = 1 << 6, + HWCAP_I386_MCE = 1 << 7, + HWCAP_I386_CX8 = 1 << 8, + HWCAP_I386_APIC = 1 << 9, + HWCAP_I386_SEP = 1 << 11, + HWCAP_I386_MTRR = 1 << 12, + HWCAP_I386_PGE = 1 << 13, + HWCAP_I386_MCA = 1 << 14, + HWCAP_I386_CMOV = 1 << 15, + HWCAP_I386_FCMOV = 1 << 16, + HWCAP_I386_MMX = 1 << 23, + HWCAP_I386_OSFXSR = 1 << 24, + HWCAP_I386_XMM = 1 << 25, + HWCAP_I386_XMM2 = 1 << 26, + HWCAP_I386_AMD3D = 1 << 31, + + /* XXX Which others to add here? */ + HWCAP_IMPORTANT = (HWCAP_I386_MMX) + +}; + +/* We cannot provide a general printing function. */ +#define _dl_procinfo(word) -1 + +static inline const char * +__attribute__ ((unused)) +_dl_hwcap_string (int idx) +{ + return GL(dl_x86_cap_flags)[idx]; +}; + +static inline const char * +__attribute__ ((unused)) +_dl_platform_string (int idx) +{ + return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM]; +}; + +static inline int +__attribute__ ((unused, always_inline)) +_dl_string_hwcap (const char *str) +{ + int i; + + for (i = 0; i < _DL_HWCAP_COUNT; i++) + { + if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0) + return i; + } + return -1; +}; + +static inline int +__attribute__ ((unused, always_inline)) +_dl_string_platform (const char *str) +{ + int i; + + if (str != NULL) + for (i = 0; i < _DL_PLATFORMS_COUNT; ++i) + { + if (strcmp (str, GL(dl_x86_platforms)[i]) == 0) + return _DL_FIRST_PLATFORM + i; + } + return -1; +}; + +#endif /* dl-procinfo.h */ diff --git a/sysdeps/mach/hurd/bits/libc-lock.h b/sysdeps/mach/hurd/bits/libc-lock.h index bc83eafc49..5e3388e795 100644 --- a/sysdeps/mach/hurd/bits/libc-lock.h +++ b/sysdeps/mach/hurd/bits/libc-lock.h @@ -159,6 +159,8 @@ typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t; if ((DOIT) && __save_FCT != 0) \ (*__save_FCT)(__save_ARG); \ +#define __libc_cleanup_push(fct, arg) __libc_cleanup_region_start (1, fct, arg) +#define __libc_cleanup_pop(execute) __libc_cleanup_end (execute) #if (_CTHREADS_ - 0) diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.c b/sysdeps/unix/sysv/linux/i386/dl-procinfo.c deleted file mode 100644 index 3b1f9bb25e..0000000000 --- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Data for Linux/i386 version of processor capability information. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2001. - - 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. */ - -/* This information must be kept in sync with the _DL_HWCAP_COUNT and - _DL_PLATFORM_COUNT definitions in procinfo.h. - - If anything should be added here check whether the size of each string - is still ok with the given array size. - - All the #ifdefs in the definitions ar equite irritating but - necessary if we want to avoid duplicating the information. There - are three different modes: - - - PROCINFO_DECL is defined. This means we are only interested in - declarations. - - - PROCINFO_DECL is not defined: - - + if SHARED is defined the file is included in an array - initializer. The .element = { ... } syntax is needed. - - + if SHARED is not defined a normal array initialization is - needed. - */ - -#ifndef PROCINFO_CLASS -#define PROCINFO_CLASS -#endif - -#if !defined PROCINFO_DECL && defined SHARED - ._dl_x86_cap_flags -#else -PROCINFO_CLASS const char _dl_x86_cap_flags[32][8] -#endif -#ifndef PROCINFO_DECL -= { - "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", - "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov", - "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx", - "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "pbe" - } -#endif -#if !defined SHARED || defined PROCINFO_DECL -; -#else -, -#endif - -#if !defined PROCINFO_DECL && defined SHARED - ._dl_x86_platforms -#else -PROCINFO_CLASS const char _dl_x86_platforms[4][5] -#endif -#ifndef PROCINFO_DECL -= { - "i386", "i486", "i586", "i686" - } -#endif -#if !defined SHARED || defined PROCINFO_DECL -; -#else -, -#endif - -#undef PROCINFO_DECL -#undef PROCINFO_CLASS diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h index 3ffca4abc5..de12a1522b 100644 --- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h +++ b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h @@ -18,22 +18,11 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef _DL_PROCINFO_H -#define _DL_PROCINFO_H 1 - +#include_next #include -#define _DL_HWCAP_COUNT 32 - -#define _DL_PLATFORMS_COUNT 4 - -/* Start at 48 to reserve some space. */ -#define _DL_FIRST_PLATFORM 48 -/* Mask to filter out platforms. */ -#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ - << _DL_FIRST_PLATFORM) - +#undef _dl_procinfo static inline int __attribute__ ((unused)) _dl_procinfo (int word) @@ -52,78 +41,3 @@ _dl_procinfo (int word) return 0; } - -static inline const char * -__attribute__ ((unused)) -_dl_hwcap_string (int idx) -{ - return GL(dl_x86_cap_flags)[idx]; -}; - -static inline const char * -__attribute__ ((unused)) -_dl_platform_string (int idx) -{ - return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM]; -}; - -enum -{ - HWCAP_I386_FPU = 1 << 0, - HWCAP_I386_VME = 1 << 1, - HWCAP_I386_DE = 1 << 2, - HWCAP_I386_PSE = 1 << 3, - HWCAP_I386_TSC = 1 << 4, - HWCAP_I386_MSR = 1 << 5, - HWCAP_I386_PAE = 1 << 6, - HWCAP_I386_MCE = 1 << 7, - HWCAP_I386_CX8 = 1 << 8, - HWCAP_I386_APIC = 1 << 9, - HWCAP_I386_SEP = 1 << 11, - HWCAP_I386_MTRR = 1 << 12, - HWCAP_I386_PGE = 1 << 13, - HWCAP_I386_MCA = 1 << 14, - HWCAP_I386_CMOV = 1 << 15, - HWCAP_I386_FCMOV = 1 << 16, - HWCAP_I386_MMX = 1 << 23, - HWCAP_I386_OSFXSR = 1 << 24, - HWCAP_I386_XMM = 1 << 25, - HWCAP_I386_XMM2 = 1 << 26, - HWCAP_I386_AMD3D = 1 << 31, - - /* XXX Which others to add here? */ - HWCAP_IMPORTANT = (HWCAP_I386_MMX) - -}; - -static inline int -__attribute__ ((unused, always_inline)) -_dl_string_hwcap (const char *str) -{ - int i; - - for (i = 0; i < _DL_HWCAP_COUNT; i++) - { - if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0) - return i; - } - return -1; -}; - - -static inline int -__attribute__ ((unused, always_inline)) -_dl_string_platform (const char *str) -{ - int i; - - if (str != NULL) - for (i = 0; i < _DL_PLATFORMS_COUNT; ++i) - { - if (strcmp (str, GL(dl_x86_platforms)[i]) == 0) - return _DL_FIRST_PLATFORM + i; - } - return -1; -}; - -#endif /* dl-procinfo.h */ -- cgit v1.2.3