author | Titus von Boxberg <titus@v9g.de> |
Mon May 17 12:23:24 2010 +0200 (2010-05-17) | |
changeset 1959 | a86d3c6ad7fe |
parent 1201 | c9967a6e3b25 |
permissions | -rw-r--r-- |
yann@1201 | 1 |
Original patch from: gentoo/src/patchsets/glibc/2.9/1080_all_glibc-no-inline-gmon.patch |
yann@1201 | 2 |
|
yann@1201 | 3 |
-= BEGIN original header =- |
yann@1201 | 4 |
http://bugs.gentoo.org/196245 |
yann@1201 | 5 |
http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html |
yann@1201 | 6 |
|
yann@1201 | 7 |
Attached is a patch to add __attribute__ ((noinline)) to |
yann@1201 | 8 |
call_gmon_start. |
yann@1201 | 9 |
|
yann@1201 | 10 |
Without this patch, the sec script that processed initfini.s removes a |
yann@1201 | 11 |
part of inlined call_gmon_start, causing undefined label errors. |
yann@1201 | 12 |
|
yann@1201 | 13 |
This patch solves the problem by forcing gcc not to inline |
yann@1201 | 14 |
call_gmon_start with __attribute__ ((noinline)). |
yann@1201 | 15 |
|
yann@1201 | 16 |
Tested by building for arm-none-lixux-gnueabi. OK to apply? |
yann@1201 | 17 |
|
yann@1201 | 18 |
Kazu Hirata |
yann@1201 | 19 |
|
yann@1201 | 20 |
2006-05-07 Kazu Hirata <kazu@codesourcery.com> |
yann@1201 | 21 |
|
yann@1201 | 22 |
* sysdeps/generic/initfini.c (call_gmon_start): Add |
yann@1201 | 23 |
__attribute__ ((noinline)). |
yann@1201 | 24 |
|
yann@1201 | 25 |
-= END original header =- |
yann@1201 | 26 |
|
yann@1201 | 27 |
diff -durN glibc-2_9.orig/sysdeps/generic/initfini.c glibc-2_9/sysdeps/generic/initfini.c |
yann@1201 | 28 |
--- glibc-2_9.orig/sysdeps/generic/initfini.c 2007-06-17 20:02:40.000000000 +0200 |
yann@1201 | 29 |
+++ glibc-2_9/sysdeps/generic/initfini.c 2009-02-02 22:01:01.000000000 +0100 |
yann@1201 | 30 |
@@ -70,7 +70,7 @@ |
yann@1201 | 31 |
/* The beginning of _init: */ |
yann@1201 | 32 |
asm ("\n/*@_init_PROLOG_BEGINS*/"); |
yann@1201 | 33 |
|
yann@1201 | 34 |
-static void |
yann@1201 | 35 |
+static void __attribute__ ((noinline)) |
yann@1201 | 36 |
call_gmon_start(void) |
yann@1201 | 37 |
{ |
yann@1201 | 38 |
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/ |