* 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.
This commit is contained in:
Richard Henderson 2007-03-13 21:25:16 +00:00
parent 22771b82f5
commit e8f9994576
4 changed files with 40 additions and 59 deletions

View File

@ -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;

View File

@ -0,0 +1,2 @@
#include "dl-auxv.h"
#include <elf/dl-support.c>

View File

@ -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>

View File

@ -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)