summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-09-07 22:02:42 -0400
committerUlrich Drepper <drepper@gmail.com>2011-09-07 22:02:42 -0400
commit24f579d86e13131beb3f4823e944cc447633a2c1 (patch)
tree5c59cfce65f79055e2db19597ff47ebe2d0c064d
parent2270037782b05f2973372fe12f6e8d2a8c413188 (diff)
downloadglibc-24f579d86e13131beb3f4823e944cc447633a2c1.tar.gz
Fix profiling on powerpc32 secure-plt shared libs and PIEs
-rw-r--r--ChangeLog12
-rw-r--r--NEWS4
-rw-r--r--sysdeps/powerpc/Makefile4
-rw-r--r--sysdeps/powerpc/powerpc32/Makefile5
-rw-r--r--sysdeps/powerpc/powerpc32/Versions3
-rw-r--r--sysdeps/powerpc/powerpc32/ppc-mcount.S3
-rw-r--r--sysdeps/powerpc/powerpc64/Makefile1
7 files changed, 24 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 1ed1e58e5f..283259bacc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-08-15 Alan Modra <amodra@gmail.com>
+
+ [BZ #13092]
+ * sysdeps/powerpc/Makefile (gmon): Move sysdep_routines to..
+ * sysdeps/powerpc/powerpc64/Makefile (gmon): ..here..
+ * sysdeps/powerpc/powerpc32/Makefile (gmon): ..and here. Add
+ ppc_mcount to static-only-routines.
+ * sysdeps/powerpc/powerpc32/Versions: Export GLIBC_PRIVATE
+ __mcount_internal.
+ * sysdeps/powerpc/powerpc32/ppc-mcount.S (_mcount): Call
+ __mcount_internal with usual JUMPTARGET. Remove useless nop.
+
2011-08-04 Will Schmidt <will_schmidt@vnet.ibm.com>
* sysdeps/powerpc/powerpc32/power7/strncmp.S: Adjust the alignment
diff --git a/NEWS b/NEWS
index 3eda9c1952..f4d6ab5ca2 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2011-9-5
+GNU C Library NEWS -- history of user-visible changes. 2011-9-7
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -10,7 +10,7 @@ Version 2.15
* The following bugs are resolved with this release:
9696, 12868, 12852, 12874, 12885, 12907, 12922, 12935, 13007, 13021,
- 13068, 13114, 13134, 13144, 13150
+ 13068, 13092, 13114, 13134, 13144, 13150
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.
diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
index 616458f136..e43ca704f0 100644
--- a/sysdeps/powerpc/Makefile
+++ b/sysdeps/powerpc/Makefile
@@ -2,10 +2,6 @@
# machine.
+cflags += -mnew-mnemonics
-ifeq ($(subdir),gmon)
-sysdep_routines += ppc-mcount
-endif
-
ifeq ($(subdir),string)
CFLAGS-memcmp.c += -Wno-uninitialized
endif
diff --git a/sysdeps/powerpc/powerpc32/Makefile b/sysdeps/powerpc/powerpc32/Makefile
index 1d58a063d6..ed24484c2e 100644
--- a/sysdeps/powerpc/powerpc32/Makefile
+++ b/sysdeps/powerpc/powerpc32/Makefile
@@ -5,6 +5,11 @@ ifeq ($(with-fp),no)
sysdep-LDFLAGS += -msoft-float
endif
+ifeq ($(subdir),gmon)
+sysdep_routines += ppc-mcount
+static-only-routines += ppc-mcount
+endif
+
ifeq ($(subdir),misc)
sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1
endif
diff --git a/sysdeps/powerpc/powerpc32/Versions b/sysdeps/powerpc/powerpc32/Versions
index 3635c4a4a1..ad4972e4dd 100644
--- a/sysdeps/powerpc/powerpc32/Versions
+++ b/sysdeps/powerpc/powerpc32/Versions
@@ -8,6 +8,9 @@ libc {
__fixsfdi; __fixunssfdi;
__floatdidf; __floatdisf;
}
+ GLIBC_PRIVATE {
+ __mcount_internal;
+ }
}
libm {
diff --git a/sysdeps/powerpc/powerpc32/ppc-mcount.S b/sysdeps/powerpc/powerpc32/ppc-mcount.S
index 7e39acb55b..c7720a15bc 100644
--- a/sysdeps/powerpc/powerpc32/ppc-mcount.S
+++ b/sysdeps/powerpc/powerpc32/ppc-mcount.S
@@ -58,8 +58,7 @@ ENTRY(_mcount)
stw r4, 44(r1)
cfi_offset (lr, -4)
stw r5, 8(r1)
- bl __mcount_internal@local
- nop
+ bl JUMPTARGET(__mcount_internal)
/* Restore the registers... */
lwz r6, 8(r1)
lwz r0, 44(r1)
diff --git a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
index 136de3008e..9056e60c4e 100644
--- a/sysdeps/powerpc/powerpc64/Makefile
+++ b/sysdeps/powerpc/powerpc64/Makefile
@@ -45,4 +45,5 @@ ifeq ($(subdir),gmon)
# Compiling with -msoft-float ensures that fp regs are not used
# for moving memory around.
CFLAGS-mcount.c += $(no-special-regs)
+sysdep_routines += ppc-mcount
endif