author | "Yann E. MORIN" <yann.morin.1998@free.fr> |
Mon Jan 07 00:58:13 2013 +0100 (2013-01-07) | |
changeset 3155 | d988235eab7b |
permissions | -rw-r--r-- |
yann@1625 | 1 |
http://bugs.gentoo.org/196245 |
yann@1625 | 2 |
http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html |
yann@1625 | 3 |
|
yann@1625 | 4 |
Attached is a patch to add __attribute__ ((noinline)) to |
yann@1625 | 5 |
call_gmon_start. |
yann@1625 | 6 |
|
yann@1625 | 7 |
Without this patch, the sec script that processed initfini.s removes a |
yann@1625 | 8 |
part of inlined call_gmon_start, causing undefined label errors. |
yann@1625 | 9 |
|
yann@1625 | 10 |
This patch solves the problem by forcing gcc not to inline |
yann@1625 | 11 |
call_gmon_start with __attribute__ ((noinline)). |
yann@1625 | 12 |
|
yann@1625 | 13 |
Tested by building for arm-none-lixux-gnueabi. OK to apply? |
yann@1625 | 14 |
|
yann@1625 | 15 |
Kazu Hirata |
yann@1625 | 16 |
|
yann@1625 | 17 |
2006-05-07 Kazu Hirata <kazu@codesourcery.com> |
yann@1625 | 18 |
|
yann@1625 | 19 |
* sysdeps/generic/initfini.c (call_gmon_start): Add |
yann@1625 | 20 |
__attribute__ ((noinline)). |
yann@1625 | 21 |
|
yann@1625 | 22 |
Index: sysdeps/generic/initfini.c |
yann@1625 | 23 |
=================================================================== |
yann@1625 | 24 |
|
yann@1625 | 25 |
diff -durN glibc-2.10.1.orig/sysdeps/generic/initfini.c glibc-2.10.1/sysdeps/generic/initfini.c |
yann@1625 | 26 |
--- glibc-2.10.1.orig/sysdeps/generic/initfini.c 2007-06-17 20:02:40.000000000 +0200 |
yann@1625 | 27 |
+++ glibc-2.10.1/sysdeps/generic/initfini.c 2009-11-13 00:50:09.000000000 +0100 |
yann@1625 | 28 |
@@ -70,7 +70,7 @@ |
yann@1625 | 29 |
/* The beginning of _init: */ |
yann@1625 | 30 |
asm ("\n/*@_init_PROLOG_BEGINS*/"); |
yann@1625 | 31 |
|
yann@1625 | 32 |
-static void |
yann@1625 | 33 |
+static void __attribute__ ((noinline)) |
yann@1625 | 34 |
call_gmon_start(void) |
yann@1625 | 35 |
{ |
yann@1625 | 36 |
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/ |