components/gcc53/patches/009-r234365.patch
changeset 6859 569bef81e3c4
parent 6858 0f8601e37dad
child 6860 fbbec9b86c26
--- a/components/gcc53/patches/009-r234365.patch	Wed Sep 07 14:47:15 2016 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-#
-# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38239 
-# This will be fixed in 5.4.
-# 
-# Index: libgcc/ChangeLog
-# ===================================================================
-# --- a/libgcc/ChangeLog	(revision 234364)
-# +++ b/libgcc/ChangeLog	(revision 234365)
-# @@ -1,3 +1,13 @@
-# +2016-03-21  Rainer Orth  <[email protected]>
-# +
-# +	Backport from mainline
-# +	2016-03-16  Rainer Orth  <[email protected]>
-# +
-# +	PR target/38239
-# +	* config/sol2/gmon.c [__i386__] (_mcount): Save and restore
-# +	call-clobbered registers.
-# +	(internal_mcount): Remove __i386__ handling.
-# +
-#  2016-02-10  Ian Lance Taylor  <[email protected]>
-#  
-#  	PR go/68562
-Index: libgcc/config/sol2/gmon.c
-===================================================================
---- a/libgcc/config/sol2/gmon.c	(revision 234364)
-+++ b/libgcc/config/sol2/gmon.c	(revision 234365)
-@@ -44,11 +44,7 @@
- 
- extern void monstartup (char *, char *);
- extern void _mcleanup (void);
--#ifdef __i386__
--static void internal_mcount (void) __attribute__ ((used));
--#else
- static void internal_mcount (char *, unsigned short *) __attribute__ ((used));
--#endif
- static void moncontrol (int);
- 
- struct phdr {
-@@ -223,8 +219,19 @@
- /* Solaris 2 libraries use _mcount.  */
- #if defined __i386__
- asm(".globl _mcount\n"
-+    "	.type	_mcount, @function\n"
-     "_mcount:\n"
--    "	jmp	internal_mcount\n");
-+    /* Save and restore the call-clobbered registers.  */
-+    "	pushl	%eax\n"
-+    "	pushl	%ecx\n"
-+    "	pushl	%edx\n"
-+    "	movl	12(%esp), %edx\n"
-+    "	movl	4(%ebp), %eax\n"
-+    "	call	internal_mcount\n"
-+    "	popl	%edx\n"
-+    "	popl	%ecx\n"
-+    "	popl	%eax\n"
-+    "	ret\n");
- #elif defined __x86_64__
- /* See GLIBC for additional information about this technique.  */
- asm(".globl _mcount\n" 
-@@ -299,11 +306,7 @@
- #endif
- 
- static void
--#ifdef __i386__
--internal_mcount (void)
--#else
- internal_mcount (char *selfpc, unsigned short *frompcindex)
--#endif
- {
-   struct tostruct *top;
-   struct tostruct *prevtop;
-@@ -310,21 +313,6 @@
-   long toindex;
-   static char already_setup;
- 
--#ifdef __i386__
--  char *selfpc;
--  unsigned short *frompcindex;
--
--  /* Find the return address for mcount and the return address for mcount's
--     caller.  */
--
--  /* selfpc = pc pushed by mcount call.
--     This identifies the function that was just entered.  */
--  selfpc = (void *) __builtin_return_address (0);
--  /* frompcindex = pc in preceding frame.
--     This identifies the caller of the function just entered.  */
--  frompcindex = (void *) __builtin_return_address (1);
--#endif
--
- /* Only necessary without the Solaris CRTs or a proper gcrt1.o, otherwise
-    crtpg.o or gcrt1.o take care of that.
-