This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH BZ 14042] PowerPC32 - Fix missing _mcount
- From: Joe Seymour <jseymour at codesourcery dot com>
- To: <carlos_odonell at mentor dot com>, <libc-alpha at sourceware dot org>
- Cc: Joe Seymour <jseymour at codesourcery dot com>
- Date: Tue, 9 Oct 2012 12:43:51 -0700
- Subject: [PATCH BZ 14042] PowerPC32 - Fix missing _mcount
The current 2.16 release branch fails "make check-abi" for powerpc-linux-gnu
hosts:
diff -p -U 0 ../ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist /scratch/jseymour/fsf/joe/libc.symlist
--- ../ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist 2012-10-09 10:23:40.155993474 -0700
+++ /scratch/jseymour/fsf/joe/libc.symlist 2012-10-09 12:18:05.985995434 -0700
@@ -270 +269,0 @@ GLIBC_2.0
- _mcount F
This patch backports the fix from master.
No new warnings. Without check-abi fails, with check-abi passes.
I don't have write access, so if this is acceptable perhaps somone would be
kind enough to push this to the 2.16 branch.
cherry-pick 261f485936b283f4327fc1f2fc8fd1705d805c12
Conflicts:
ChangeLog
---
NEWS | 2 +-
sysdeps/powerpc/powerpc32/Makefile | 3 ++-
sysdeps/powerpc/powerpc32/compat-ppc-mcount.S | 11 +++++++++++
sysdeps/powerpc/powerpc32/ppc-mcount.S | 6 +++++-
4 files changed, 19 insertions(+), 3 deletions(-)
create mode 100644 sysdeps/powerpc/powerpc32/compat-ppc-mcount.S
2012-07-06 Andreas Schwab <schwab@linux-m68k.org>
[BZ #14042]
* sysdeps/powerpc/powerpc32/ppc-mcount.S [SHARED]: Don't use PLT
for call to __mcount_internal.
* sysdeps/powerpc/powerpc32/Makefile (sysdep_routines)
(shared-only-routines) [$(subdir) = gmon]: Add compat-ppc-mcount.
* sysdeps/powerpc/powerpc32/compat-ppc-mcount.S: New file.
diff --git a/NEWS b/NEWS
index 507a0b1..50dd11a 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,7 @@ Version 2.16.1
* The following bugs are resolved with this release:
- 6530, 14195, 14459, 14476, 14562, 14621, 14648
+ 6530, 14042, 14195, 14459, 14476, 14562, 14621, 14648
Version 2.16
diff --git a/sysdeps/powerpc/powerpc32/Makefile b/sysdeps/powerpc/powerpc32/Makefile
index aa2d0b9..64f7900 100644
--- a/sysdeps/powerpc/powerpc32/Makefile
+++ b/sysdeps/powerpc/powerpc32/Makefile
@@ -6,8 +6,9 @@ sysdep-LDFLAGS += -msoft-float
endif
ifeq ($(subdir),gmon)
-sysdep_routines += ppc-mcount
+sysdep_routines += ppc-mcount compat-ppc-mcount
static-only-routines += ppc-mcount
+shared-only-routines += compat-ppc-mcount
endif
ifeq ($(subdir),misc)
diff --git a/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S b/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S
new file mode 100644
index 0000000..2a9cb24
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/compat-ppc-mcount.S
@@ -0,0 +1,11 @@
+#include <shlib-compat.h>
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_15)
+
+ compat_text_section
+# define _mcount __compat_mcount
+# include "ppc-mcount.S"
+# undef _mcount
+
+compat_symbol (libc, __compat_mcount, _mcount, GLIBC_2_0)
+#endif
diff --git a/sysdeps/powerpc/powerpc32/ppc-mcount.S b/sysdeps/powerpc/powerpc32/ppc-mcount.S
index 9a3c041..911638b 100644
--- a/sysdeps/powerpc/powerpc32/ppc-mcount.S
+++ b/sysdeps/powerpc/powerpc32/ppc-mcount.S
@@ -1,5 +1,5 @@
/* PowerPC-specific implementation of profiling support.
- Copyright (C) 1997, 1999, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1997-2012 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
@@ -57,7 +57,11 @@ ENTRY(_mcount)
stw r4, 44(r1)
cfi_offset (lr, -4)
stw r5, 8(r1)
+#ifndef SHARED
bl JUMPTARGET(__mcount_internal)
+#else
+ bl __mcount_internal@local
+#endif
/* Restore the registers... */
lwz r6, 8(r1)
lwz r0, 44(r1)
--
1.7.4.1