diff options
| author | Eric Andersen <andersen@codepoet.org> | 2002-04-03 14:09:25 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2002-04-03 14:09:25 +0000 | 
| commit | 9f18d3e1a8da09598b75e9ebf1561a8909fb320e (patch) | |
| tree | 6e6ac95faa5c2fa47fb8d7cdc4f313b5af675069 /libc/sysdeps/linux | |
| parent | 30e35d4aadb5a5b06c5cd4a52910a2258af48858 (diff) | |
| download | uClibc-alpine-9f18d3e1a8da09598b75e9ebf1561a8909fb320e.tar.bz2 uClibc-alpine-9f18d3e1a8da09598b75e9ebf1561a8909fb320e.tar.xz  | |
Teach initfini to build properly on arches where gcc tries to be
sneaky behind our back...
 -Erik
Diffstat (limited to 'libc/sysdeps/linux')
| -rw-r--r-- | libc/sysdeps/linux/common/initfini.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/initfini.c b/libc/sysdeps/linux/common/initfini.c index 9a23c55d0..4f95fbfd1 100644 --- a/libc/sysdeps/linux/common/initfini.c +++ b/libc/sysdeps/linux/common/initfini.c @@ -84,6 +84,16 @@ _init (void)       module which has a constructor; but then user code's constructors       would come first, and not be profiled.  */    call_gmon_start (); +#else +  asm ("\n/*@_init_PROLOG_PAUSES*/"); +  { +    /* Let GCC know that _init is not a leaf function by having a dummy +     * function call here.  We arrange for this call to be omitted from +     * either crt file.  */ +    extern void i_am_not_a_leaf (void); +    i_am_not_a_leaf (); +  } +  asm ("\n/*@_init_PROLOG_UNPAUSES*/");  #endif    asm ("ALIGN");  | 
