diff options
author | Richard Henderson <rth@redhat.com> | 2007-03-13 21:25:16 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2007-03-13 21:25:16 +0000 |
commit | 47dbe62b552dee48242bc8437caed215d5f19435 (patch) | |
tree | 19995d87d57293f99fc0a5b10e5a89edef14888d | |
parent | b8097bed55c6d3e4fcdeedc231d659de60911d61 (diff) | |
download | glibc-47dbe62b552dee48242bc8437caed215d5f19435.tar.gz glibc-47dbe62b552dee48242bc8437caed215d5f19435.tar.xz glibc-47dbe62b552dee48242bc8437caed215d5f19435.zip |
* elf/dl-support.c (_dl_aux_init): Honor DL_PLATFORM_AUXV.
* sysdeps/unix/sysv/linux/alpha/dl-auxv.h: New file. * sysdeps/unix/sysv/linux/alpha/dl-support.c: New file. * sysdeps/unix/sysv/linux/alpha/dl-sysdep.c (__libc_alpha_cache_shape): Move to dl-auxv.h; initialize instead of extern weak. (DL_PLATFORM_AUXV): Move to dl-auxv.h; don't test for undef weak symbol. * sysdeps/unix/sysv/linux/alpha/sysconf.c (__libc_alpha_cache_shape): Extern instead of initialized. * elf/dl-support.c (_dl_aux_init): Honor DL_PLATFORM_AUXV. * sysdeps/unix/sysv/linux/alpha/dl-auxv.h: New file. * sysdeps/unix/sysv/linux/alpha/dl-support.c: New file. * sysdeps/unix/sysv/linux/alpha/dl-sysdep.c (__libc_alpha_cache_shape): Move to dl-auxv.h; initialize instead of extern weak. (DL_PLATFORM_AUXV): Move to dl-auxv.h; don't test for undef weak symbol. * sysdeps/unix/sysv/linux/alpha/sysconf.c (__libc_alpha_cache_shape): Extern instead of initialized. 2007-03-13 Richard Henderson <rth@redhat.com>
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | elf/dl-support.c | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/dl-auxv.h | 36 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/dl-support.c | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/dl-sysdep.c | 59 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sysconf.c | 2 |
6 files changed, 55 insertions, 59 deletions
diff --git a/ChangeLog b/ChangeLog index ed0555345e..6e70452224 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2007-03-13 Richard Henderson <rth@redhat.com> + * elf/dl-support.c (_dl_aux_init): Honor DL_PLATFORM_AUXV. + * sysdeps/unix/sysv/linux/alpha/dl-auxv.h: New file. + * sysdeps/unix/sysv/linux/alpha/dl-support.c: New file. + * sysdeps/unix/sysv/linux/alpha/dl-sysdep.c (__libc_alpha_cache_shape): + Move to dl-auxv.h; initialize instead of extern weak. + (DL_PLATFORM_AUXV): Move to dl-auxv.h; don't test for undef + weak symbol. + * sysdeps/unix/sysv/linux/alpha/sysconf.c (__libc_alpha_cache_shape): + Extern instead of initialized. + +2007-03-13 Richard Henderson <rth@redhat.com> + * sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Add support for __sigsuspend_nocancel. diff --git a/elf/dl-support.c b/elf/dl-support.c index c1cfc0df41..c7479dc639 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -211,6 +211,9 @@ _dl_aux_init (ElfW(auxv_t) *av) __libc_enable_secure = av->a_un.a_val; __libc_enable_secure_decided = 1; break; +# ifdef DL_PLATFORM_AUXV + DL_PLATFORM_AUXV +# endif } if (seen == 0xf) { diff --git a/sysdeps/unix/sysv/linux/alpha/dl-auxv.h b/sysdeps/unix/sysv/linux/alpha/dl-auxv.h new file mode 100644 index 0000000000..8afc4dba3b --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/dl-auxv.h @@ -0,0 +1,36 @@ +/* Auxiliary vector processing for Linux/Alpha. + Copyright (C) 2007 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* Scan the Aux Vector for the cache shape entries. */ + +long __libc_alpha_cache_shape[4] = { -2, -2, -2, -2 }; + +#define DL_PLATFORM_AUXV \ + case AT_L1I_CACHESHAPE: \ + __libc_alpha_cache_shape[0] = av->a_un.a_val; \ + break; \ + case AT_L1D_CACHESHAPE: \ + __libc_alpha_cache_shape[1] = av->a_un.a_val; \ + break; \ + case AT_L2_CACHESHAPE: \ + __libc_alpha_cache_shape[2] = av->a_un.a_val; \ + break; \ + case AT_L3_CACHESHAPE: \ + __libc_alpha_cache_shape[3] = av->a_un.a_val; \ + break; diff --git a/sysdeps/unix/sysv/linux/alpha/dl-support.c b/sysdeps/unix/sysv/linux/alpha/dl-support.c new file mode 100644 index 0000000000..290217671c --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/dl-support.c @@ -0,0 +1,2 @@ +#include "dl-auxv.h" +#include <elf/dl-support.c> diff --git a/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c b/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c index d95e46f6f1..4034820f4d 100644 --- a/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/alpha/dl-sysdep.c @@ -1,59 +1,2 @@ -/* Operating system support for run-time dynamic linker. Linux/Alpha version. - Copyright (C) 1997, 1998, 2001, 2003, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <config.h> -#include <kernel-features.h> -#include <ldsodefs.h> - -extern long __libc_alpha_cache_shape[4]; -weak_extern (__libc_alpha_cache_shape); - - -/* Scan the Aux Vector for the cache shape entries. */ -#define DL_PLATFORM_AUXV \ - case AT_L1I_CACHESHAPE: \ - { \ - long *cls = __libc_alpha_cache_shape; \ - if (cls != NULL) \ - cls[0] = av->a_un.a_val; \ - break; \ - } \ - case AT_L1D_CACHESHAPE: \ - { \ - long *cls = __libc_alpha_cache_shape; \ - if (cls != NULL) \ - cls[1] = av->a_un.a_val; \ - break; \ - } \ - case AT_L2_CACHESHAPE: \ - { \ - long *cls = __libc_alpha_cache_shape; \ - if (cls != NULL) \ - cls[2] = av->a_un.a_val; \ - break; \ - } \ - case AT_L3_CACHESHAPE: \ - { \ - long *cls = __libc_alpha_cache_shape; \ - if (cls != NULL) \ - cls[3] = av->a_un.a_val; \ - break; \ - } - +#include "dl-auxv.h" #include <sysdeps/unix/sysv/linux/dl-sysdep.c> diff --git a/sysdeps/unix/sysv/linux/alpha/sysconf.c b/sysdeps/unix/sysv/linux/alpha/sysconf.c index 2bbaf1f364..3e5b4ee85f 100644 --- a/sysdeps/unix/sysv/linux/alpha/sysconf.c +++ b/sysdeps/unix/sysv/linux/alpha/sysconf.c @@ -27,7 +27,7 @@ static long int linux_sysconf (int name); #define CSHAPE(totalsize, linesize, assoc) \ ((totalsize & ~0xff) | (linesize << 4) | assoc) -long __libc_alpha_cache_shape[4] = { -2, -2, -2, -2 }; +extern long __libc_alpha_cache_shape[4]; static inline unsigned long implver (void) |