From 24f579d86e13131beb3f4823e944cc447633a2c1 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 7 Sep 2011 22:02:42 -0400 Subject: [PATCH] Fix profiling on powerpc32 secure-plt shared libs and PIEs --- ChangeLog | 12 ++++++++++++ NEWS | 4 ++-- sysdeps/powerpc/Makefile | 4 ---- sysdeps/powerpc/powerpc32/Makefile | 5 +++++ sysdeps/powerpc/powerpc32/Versions | 3 +++ sysdeps/powerpc/powerpc32/ppc-mcount.S | 3 +-- sysdeps/powerpc/powerpc64/Makefile | 1 + 7 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ed1e58..283259b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2011-08-15 Alan Modra + + [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 * sysdeps/powerpc/powerpc32/power7/strncmp.S: Adjust the alignment diff --git a/NEWS b/NEWS index 3eda9c1..f4d6ab5 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 616458f..e43ca70 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 1d58a06..ed24484 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 3635c4a..ad4972e 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 7e39acb..c7720a1 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 136de30..9056e60 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 -- 2.7.4