mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 18:23:41 +08:00
Update.
* sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init): We don't have to call __gmon_start__ in the libpthread DSO. * sysdeps/pthread/pt-initfini.c (_init): Likewise.
This commit is contained in:
parent
b5edfe6131
commit
7e9463020b
@ -1,7 +1,8 @@
|
|||||||
2001-04-23 Ulrich Drepper <drepper@redhat.com>
|
2001-04-23 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/pthread/pt-initfini.c (_init): We don't have to call
|
* sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init): We don't
|
||||||
__gmon_start__ in the libpthread DSO.
|
have to call __gmon_start__ in the libpthread DSO.
|
||||||
|
* sysdeps/pthread/pt-initfini.c (_init): Likewise.
|
||||||
|
|
||||||
* Makefile (libpthread-routines): Add ptclock_gettime and
|
* Makefile (libpthread-routines): Add ptclock_gettime and
|
||||||
ptclock_settime.
|
ptclock_settime.
|
||||||
|
@ -70,16 +70,6 @@ call_initialize_minimal (void)
|
|||||||
__pthread_initialize_minimal ();
|
__pthread_initialize_minimal ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
call_gmon_start(void)
|
|
||||||
{
|
|
||||||
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
|
|
||||||
void (*gmon_start) (void) = __gmon_start__;
|
|
||||||
|
|
||||||
if (gmon_start)
|
|
||||||
gmon_start ();
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTION (".init");
|
SECTION (".init");
|
||||||
extern void _init (void);
|
extern void _init (void);
|
||||||
void
|
void
|
||||||
@ -88,14 +78,6 @@ _init (void)
|
|||||||
/* The very first thing we must do is to set up the registers. */
|
/* The very first thing we must do is to set up the registers. */
|
||||||
call_initialize_minimal ();
|
call_initialize_minimal ();
|
||||||
|
|
||||||
/* We cannot use the normal constructor mechanism in gcrt1.o because it
|
|
||||||
appears before crtbegin.o in the link, so the header elt of .ctors
|
|
||||||
would come after the elt for __gmon_start__. One approach is for
|
|
||||||
gcrt1.o to reference a symbol which would be defined by some library
|
|
||||||
module which has a constructor; but then user code's constructors
|
|
||||||
would come first, and not be profiled. */
|
|
||||||
call_gmon_start ();
|
|
||||||
|
|
||||||
asm ("ALIGN");
|
asm ("ALIGN");
|
||||||
asm("END_INIT");
|
asm("END_INIT");
|
||||||
/* Now the epilog. */
|
/* Now the epilog. */
|
||||||
|
@ -52,17 +52,12 @@ _init:
|
|||||||
mov r32 = r12
|
mov r32 = r12
|
||||||
mov r33 = b0
|
mov r33 = b0
|
||||||
adds r12 = -16, r12
|
adds r12 = -16, r12
|
||||||
addl r14 = @ltoff(@fptr(__gmon_start__#)), gp
|
|
||||||
;;
|
;;
|
||||||
ld8 r15 = [r14]
|
|
||||||
/* we could use r35 to save gp, but we use the stack since that's what
|
/* we could use r35 to save gp, but we use the stack since that's what
|
||||||
* all the other init routines will do --davidm 00/04/05 */
|
* all the other init routines will do --davidm 00/04/05 */
|
||||||
st8 [r12] = gp, -16
|
st8 [r12] = gp, -16
|
||||||
br.call.sptk.many b0 = __pthread_initialize_minimal# ;;
|
br.call.sptk.many b0 = __pthread_initialize_minimal# ;;
|
||||||
;;
|
;;
|
||||||
cmp.ne p6, p0 = 0, r15
|
|
||||||
|
|
||||||
(p6) br.call.sptk.many b0 = __gmon_start__# ;;
|
|
||||||
adds r12 = 16, r12
|
adds r12 = 16, r12
|
||||||
;;
|
;;
|
||||||
ld8 gp = [r12]
|
ld8 gp = [r12]
|
||||||
@ -97,8 +92,6 @@ _fini:
|
|||||||
.endp _fini#
|
.endp _fini#
|
||||||
|
|
||||||
/*@_fini_PROLOG_ENDS*/
|
/*@_fini_PROLOG_ENDS*/
|
||||||
br.call.sptk.many b0 = i_am_not_a_leaf# ;;
|
|
||||||
;;
|
|
||||||
|
|
||||||
/*@_fini_EPILOG_BEGINS*/
|
/*@_fini_EPILOG_BEGINS*/
|
||||||
.section .fini
|
.section .fini
|
||||||
|
Loading…
Reference in New Issue
Block a user