aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-03-26 20:09:10 +0000
committerUlrich Drepper <drepper@redhat.com>2007-03-26 20:09:10 +0000
commitc7693af7ef36972aa266030da26211db21fc82fb (patch)
tree6e901b42ef2afa124a601b13f465730b09087018
parentfa03b94e106937cc4ddefd66605e038a1584d553 (diff)
downloadglibc-c7693af7ef36972aa266030da26211db21fc82fb.tar
glibc-c7693af7ef36972aa266030da26211db21fc82fb.tar.gz
glibc-c7693af7ef36972aa266030da26211db21fc82fb.tar.bz2
glibc-c7693af7ef36972aa266030da26211db21fc82fb.zip
007-03-20 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/libc-start.c (__cache_line_size): Define the variable here. Add attribute_hidden, remove weak_extern. (__libc_start_main): Set __cache_line_size unconditionally. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (__cache_line_size): Define the variable here. Add attribute_hidden, remove weak_extern. (DL_PLATFORM_AUXV): Set __cache_line_size unconditionally. * sysdeps/powerpc/powerpc32/dl-machine.c (__cache_line_size): Remove weak_extern, add attribute_hidden. (__elf_machine_runtime_setup): Assume __cache_line_size is always defined in ld.so. * sysdeps/powerpc/powerpc32/memset.S (__cache_line_size): Remove definition. * sysdeps/powerpc/powerpc64/memset.S (__cache_line_size): Likewise.
-rw-r--r--ChangeLog20
-rw-r--r--sysdeps/powerpc/powerpc32/dl-machine.c17
-rw-r--r--sysdeps/powerpc/powerpc32/memset.S10
-rw-r--r--sysdeps/powerpc/powerpc64/memset.S9
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c14
5 files changed, 33 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index 9daefc35d2..1a5f369b2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+007-03-20 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/libc-start.c
+ (__cache_line_size): Define the variable here. Add
+ attribute_hidden, remove weak_extern.
+ (__libc_start_main): Set __cache_line_size
+ unconditionally.
+ * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+ (__cache_line_size): Define the variable here. Add
+ attribute_hidden, remove weak_extern.
+ (DL_PLATFORM_AUXV): Set __cache_line_size
+ unconditionally.
+ * sysdeps/powerpc/powerpc32/dl-machine.c (__cache_line_size): Remove
+ weak_extern, add attribute_hidden.
+ (__elf_machine_runtime_setup): Assume __cache_line_size is always
+ defined in ld.so.
+ * sysdeps/powerpc/powerpc32/memset.S (__cache_line_size): Remove
+ definition.
+ * sysdeps/powerpc/powerpc64/memset.S (__cache_line_size): Likewise.
+
2007-03-26 Jakub Jelinek <jakub@redhat.com>
[BZ #4276]
diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c
index fc460993b1..fc2ce7c1d9 100644
--- a/sysdeps/powerpc/powerpc32/dl-machine.c
+++ b/sysdeps/powerpc/powerpc32/dl-machine.c
@@ -26,10 +26,9 @@
#include <dl-machine.h>
#include <stdio-common/_itoa.h>
-/* The value __cache_line_size is defined in memset.S and is initialised
+/* The value __cache_line_size is defined in dl-sysdep.c and is initialised
by _dl_sysdep_start via DL_PLATFORM_INIT. */
-extern int __cache_line_size;
-weak_extern (__cache_line_size)
+extern int __cache_line_size attribute_hidden;
/* Because ld.so is now versioned, these functions can be in their own file;
no relocations need to be done to call them.
@@ -318,15 +317,9 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
/* Default minimum 4 words per cache line. */
int line_size_words = 4;
- /* Don't try this until ld.so has relocated itself! */
- int *line_size_ptr = &__cache_line_size;
- if (lazy && line_size_ptr != NULL)
- {
- /* Verify that __cache_line_size is defined and set. */
- if (*line_size_ptr != 0)
- /* Convert bytes to words. */
- line_size_words = *line_size_ptr / 4;
- }
+ if (lazy && __cache_line_size != 0)
+ /* Convert bytes to words. */
+ line_size_words = __cache_line_size / 4;
size_modified = lazy ? rel_offset_words : 6;
for (i = 0; i < size_modified; i += line_size_words)
diff --git a/sysdeps/powerpc/powerpc32/memset.S b/sysdeps/powerpc/powerpc32/memset.S
index f09c294674..454abb2b65 100644
--- a/sysdeps/powerpc/powerpc32/memset.S
+++ b/sysdeps/powerpc/powerpc32/memset.S
@@ -1,5 +1,5 @@
/* Optimized memset implementation for PowerPC.
- Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2003, 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
@@ -21,14 +21,6 @@
#include <bp-sym.h>
#include <bp-asm.h>
-/* Define a global static that can hold the cache line size. The
- assumption is that startup code will access the "aux vector" to
- to obtain the value set by the kernel and store it into this
- variable. */
-
- .globl __cache_line_size
- .lcomm __cache_line_size,4,4
-
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
Returns 's'.
diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S
index 09c79fccd7..e0742ea73f 100644
--- a/sysdeps/powerpc/powerpc64/memset.S
+++ b/sysdeps/powerpc/powerpc64/memset.S
@@ -1,5 +1,6 @@
/* Optimized memset implementation for PowerPC64.
- Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2002, 2003, 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
@@ -21,12 +22,6 @@
#include <bp-sym.h>
#include <bp-asm.h>
-/* Define a global static that can hold the cache line size. The
- assumption is that startup code will access the "aux vector" to
- to obtain the value set by the kernel and store it into this
- variable. */
- .globl __cache_line_size
- .lcomm __cache_line_size,4,4
.section ".toc","aw"
.LC0:
.tc __cache_line_size[TC],__cache_line_size
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
index 7c02c68985..9bb8ec3f61 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
@@ -1,5 +1,6 @@
/* Operating system support for run-time dynamic linker. Linux/PPC version.
- Copyright (C) 1997, 1998, 2001, 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2001, 2003, 2006, 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
@@ -21,8 +22,7 @@
#include <kernel-features.h>
#include <ldsodefs.h>
-extern int __cache_line_size;
-weak_extern (__cache_line_size)
+int __cache_line_size attribute_hidden;
/* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
verify that the static extern __cache_line_size is defined by checking
@@ -30,12 +30,8 @@ weak_extern (__cache_line_size)
value to __cache_line_size. */
#define DL_PLATFORM_AUXV \
case AT_DCACHEBSIZE: \
- { \
- int *cls = & __cache_line_size; \
- if (cls != NULL) \
- *cls = av->a_un.a_val; \
- } \
- break;
+ __cache_line_size = av->a_un.a_val; \
+ break;
#ifndef __ASSUME_STD_AUXV