mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
* elf/dl-reloc.c [PROF] (_dl_relocate_object): Define
consider_profiling always to zero. Don't count of compiler to remove unreached if block. * sysdeps/x86_64/dl-trampoline.S [PROF] (_dl_runtime_profile): Don't compile. * sysdeps/i386/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise. * sysdeps/ia64/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise. * sysdeps/s390/s390-64/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise. * sysdeps/s390/s390-32/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise. * sysdeps/powerpc/powerpc64/dl-trampoline.S [PROF] (_dl_profile_resolve): Likewise. * sysdeps/powerpc/powerpc32/dl-trampoline.S [PROF] (_dl_profile_resolve): Likewise. * gmon/Makefile: Add rules to build and run tst-profile-static. * gmon/tst-profile-static.c: New file. * Makeconfig (+link-static): Allow passing program-specific flags.
This commit is contained in:
parent
016c70ea61
commit
9f0d7b6df9
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
|||||||
|
2005-07-06 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/dl-reloc.c [PROF] (_dl_relocate_object): Define
|
||||||
|
consider_profiling always to zero. Don't count of compiler to
|
||||||
|
remove unreached if block.
|
||||||
|
* sysdeps/x86_64/dl-trampoline.S [PROF] (_dl_runtime_profile):
|
||||||
|
Don't compile.
|
||||||
|
* sysdeps/i386/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise.
|
||||||
|
* sysdeps/ia64/dl-trampoline.S [PROF] (_dl_runtime_profile): Likewise.
|
||||||
|
* sysdeps/s390/s390-64/dl-trampoline.S [PROF] (_dl_runtime_profile):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/s390/s390-32/dl-trampoline.S [PROF] (_dl_runtime_profile):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/dl-trampoline.S [PROF]
|
||||||
|
(_dl_profile_resolve): Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc32/dl-trampoline.S [PROF]
|
||||||
|
(_dl_profile_resolve): Likewise.
|
||||||
|
* gmon/Makefile: Add rules to build and run tst-profile-static.
|
||||||
|
* gmon/tst-profile-static.c: New file.
|
||||||
|
* Makeconfig (+link-static): Allow passing program-specific flags.
|
||||||
|
|
||||||
2005-07-05 Thorsten Kukuk <kukuk@suse.de>
|
2005-07-05 Thorsten Kukuk <kukuk@suse.de>
|
||||||
|
|
||||||
* nis/nss_compat/compat-grp.c (internal_getgrgid_r): Check if NSS
|
* nis/nss_compat/compat-grp.c (internal_getgrgid_r): Check if NSS
|
||||||
|
@ -415,7 +415,7 @@ endif
|
|||||||
# Command for statically linking programs with the C library.
|
# Command for statically linking programs with the C library.
|
||||||
ifndef +link-static
|
ifndef +link-static
|
||||||
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
||||||
$(sysdep-LDFLAGS) $(LDFLAGS) \
|
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||||
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
|
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
|
||||||
$(+preinit) $(+prector) \
|
$(+preinit) $(+prector) \
|
||||||
$(filter-out $(addprefix $(csu-objpfx),start.o \
|
$(filter-out $(addprefix $(csu-objpfx),start.o \
|
||||||
|
@ -153,6 +153,9 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
|||||||
#ifdef SHARED
|
#ifdef SHARED
|
||||||
/* If we are auditing, install the same handlers we need for profiling. */
|
/* If we are auditing, install the same handlers we need for profiling. */
|
||||||
consider_profiling |= GLRO(dl_audit) != NULL;
|
consider_profiling |= GLRO(dl_audit) != NULL;
|
||||||
|
#elif defined PROF
|
||||||
|
/* Never use dynamic linker profiling for gprof profiling code. */
|
||||||
|
# define consider_profiling 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (l->l_relocated)
|
if (l->l_relocated)
|
||||||
@ -264,6 +267,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
|||||||
|
|
||||||
ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling);
|
ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling);
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
if (__builtin_expect (consider_profiling, 0))
|
if (__builtin_expect (consider_profiling, 0))
|
||||||
{
|
{
|
||||||
/* Allocate the array which will contain the already found
|
/* Allocate the array which will contain the already found
|
||||||
@ -288,6 +292,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
|
|||||||
goto fatal;
|
goto fatal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mark the object so we know this work has been done. */
|
/* Mark the object so we know this work has been done. */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 1995, 1996, 1997, 2001, 2002 Free Software Foundation, Inc.
|
# Copyright (C) 1995,1996,1997,2001,2002,2005 Free Software Foundation, Inc.
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -27,7 +27,15 @@ routines := gmon mcount profil sprofil bb_init_func bb_exit_func prof-freq
|
|||||||
|
|
||||||
elide-routines.os = bb_init_func bb_exit_func
|
elide-routines.os = bb_init_func bb_exit_func
|
||||||
|
|
||||||
tests := tst-sprofil
|
include ../Makeconfig
|
||||||
|
|
||||||
|
tests = tst-sprofil
|
||||||
|
ifeq ($(build-profile),yes)
|
||||||
|
tests += tst-profile-static
|
||||||
|
tests-static += tst-profile-static
|
||||||
|
|
||||||
|
LDFLAGS-tst-profile-static = -profile
|
||||||
|
endif
|
||||||
|
|
||||||
# The mcount code won't work without a frame pointer.
|
# The mcount code won't work without a frame pointer.
|
||||||
CFLAGS-mcount.c := -fno-omit-frame-pointer
|
CFLAGS-mcount.c := -fno-omit-frame-pointer
|
||||||
|
10
gmon/tst-profile-static.c
Normal file
10
gmon/tst-profile-static.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
puts ("Hello world");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include "../test-skeleton.c"
|
@ -45,6 +45,7 @@ _dl_runtime_resolve:
|
|||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
.globl _dl_runtime_profile
|
.globl _dl_runtime_profile
|
||||||
.type _dl_runtime_profile, @function
|
.type _dl_runtime_profile, @function
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
@ -180,3 +181,4 @@ _dl_runtime_profile:
|
|||||||
ret
|
ret
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile
|
.size _dl_runtime_profile, .-_dl_runtime_profile
|
||||||
|
#endif
|
||||||
|
@ -175,7 +175,7 @@ END(_dl_runtime_resolve)
|
|||||||
16byte f13
|
16byte f13
|
||||||
16byte f14
|
16byte f14
|
||||||
16byte f15
|
16byte f15
|
||||||
|
|
||||||
Since stack has to be 16 byte aligned, the stack allocation is in
|
Since stack has to be 16 byte aligned, the stack allocation is in
|
||||||
16byte increment. Before calling _dl_profile_fixup, the stack will
|
16byte increment. Before calling _dl_profile_fixup, the stack will
|
||||||
look like
|
look like
|
||||||
@ -189,6 +189,7 @@ END(_dl_runtime_resolve)
|
|||||||
#define PLTENTER_FRAME_SIZE (4*8 + 8*8 + 8*16 + 2*8 + 16)
|
#define PLTENTER_FRAME_SIZE (4*8 + 8*8 + 8*16 + 2*8 + 16)
|
||||||
#define PLTEXIT_FRAME_SIZE (PLTENTER_FRAME_SIZE + 4*8 + 8*16)
|
#define PLTEXIT_FRAME_SIZE (PLTENTER_FRAME_SIZE + 4*8 + 8*16)
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
ENTRY(_dl_runtime_profile)
|
ENTRY(_dl_runtime_profile)
|
||||||
{ .mii
|
{ .mii
|
||||||
.prologue
|
.prologue
|
||||||
@ -535,3 +536,4 @@ ENTRY(_dl_runtime_profile)
|
|||||||
;;
|
;;
|
||||||
}
|
}
|
||||||
END(_dl_runtime_profile)
|
END(_dl_runtime_profile)
|
||||||
|
#endif
|
||||||
|
@ -66,6 +66,7 @@ _dl_runtime_resolve:
|
|||||||
bctr
|
bctr
|
||||||
.size _dl_runtime_resolve,.-_dl_runtime_resolve
|
.size _dl_runtime_resolve,.-_dl_runtime_resolve
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
.align 2
|
.align 2
|
||||||
.globl _dl_prof_resolve
|
.globl _dl_prof_resolve
|
||||||
.type _dl_prof_resolve,@function
|
.type _dl_prof_resolve,@function
|
||||||
@ -172,3 +173,4 @@ _dl_prof_resolve:
|
|||||||
addi r1,r1,320
|
addi r1,r1,320
|
||||||
bctr
|
bctr
|
||||||
.size _dl_prof_resolve,.-_dl_prof_resolve
|
.size _dl_prof_resolve,.-_dl_prof_resolve
|
||||||
|
#endif
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
and r11 contains the link_map (from PLT0+16). The link_map becomes
|
and r11 contains the link_map (from PLT0+16). The link_map becomes
|
||||||
parm1 (r3) and the index (r0) need to be converted to an offset
|
parm1 (r3) and the index (r0) need to be converted to an offset
|
||||||
(index * 24) in parm2 (r4). */
|
(index * 24) in parm2 (r4). */
|
||||||
|
|
||||||
EALIGN(_dl_runtime_resolve, 4, 0)
|
EALIGN(_dl_runtime_resolve, 4, 0)
|
||||||
/* We need to save the registers used to pass parameters, ie. r3 thru
|
/* We need to save the registers used to pass parameters, ie. r3 thru
|
||||||
r10; the registers are saved in a stack frame. */
|
r10; the registers are saved in a stack frame. */
|
||||||
@ -139,8 +139,8 @@ END(_dl_runtime_resolve)
|
|||||||
* Parameter save area, Allocated by the call, at least 8 double words
|
* Parameter save area, Allocated by the call, at least 8 double words
|
||||||
+40 TOC save area
|
+40 TOC save area
|
||||||
+32 Reserved for linker
|
+32 Reserved for linker
|
||||||
+24 Reserved for compiler
|
+24 Reserved for compiler
|
||||||
+16 LR save area
|
+16 LR save area
|
||||||
+8 CR save area
|
+8 CR save area
|
||||||
r1+0 stack back chain
|
r1+0 stack back chain
|
||||||
*/
|
*/
|
||||||
@ -169,7 +169,7 @@ END(_dl_runtime_resolve)
|
|||||||
and r11 contains the link_map (from PLT0+16). The link_map becomes
|
and r11 contains the link_map (from PLT0+16). The link_map becomes
|
||||||
parm1 (r3) and the index (r0) needs to be converted to an offset
|
parm1 (r3) and the index (r0) needs to be converted to an offset
|
||||||
(index * 24) in parm2 (r4). */
|
(index * 24) in parm2 (r4). */
|
||||||
|
#ifndef PROF
|
||||||
EALIGN(_dl_profile_resolve, 4, 0)
|
EALIGN(_dl_profile_resolve, 4, 0)
|
||||||
/* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
|
/* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
|
||||||
need to call _dl_call_pltexit. */
|
need to call _dl_call_pltexit. */
|
||||||
@ -215,23 +215,23 @@ EALIGN(_dl_profile_resolve, 4, 0)
|
|||||||
li r12,64
|
li r12,64
|
||||||
stvx v2,0,r10
|
stvx v2,0,r10
|
||||||
stvx v3,0,r9
|
stvx v3,0,r9
|
||||||
|
|
||||||
stvx v4,r11,r10
|
stvx v4,r11,r10
|
||||||
stvx v5,r11,r9
|
stvx v5,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
stvx v6,r12,r10
|
stvx v6,r12,r10
|
||||||
stvx v7,r12,r9
|
stvx v7,r12,r9
|
||||||
addi r12,r12,64
|
addi r12,r12,64
|
||||||
|
|
||||||
stvx v8,r11,r10
|
stvx v8,r11,r10
|
||||||
stvx v9,r11,r9
|
stvx v9,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
stvx v10,r12,r10
|
stvx v10,r12,r10
|
||||||
stvx v11,r12,r9
|
stvx v11,r12,r9
|
||||||
mfspr r0,VRSAVE
|
mfspr r0,VRSAVE
|
||||||
|
|
||||||
stvx v12,r11,r10
|
stvx v12,r11,r10
|
||||||
stvx v13,r11,r9
|
stvx v13,r11,r9
|
||||||
L(saveFP):
|
L(saveFP):
|
||||||
@ -262,7 +262,7 @@ L(saveFP):
|
|||||||
nop
|
nop
|
||||||
/* Test *framesizep > 0 to see if need to do pltexit processing. */
|
/* Test *framesizep > 0 to see if need to do pltexit processing. */
|
||||||
ld r0,STACK_FRAME(r1)
|
ld r0,STACK_FRAME(r1)
|
||||||
/* Put the registers back. */
|
/* Put the registers back. */
|
||||||
lwz r12,VR_VRSAVE(r1)
|
lwz r12,VR_VRSAVE(r1)
|
||||||
cmpdi cr1,r0,0
|
cmpdi cr1,r0,0
|
||||||
cmpdi cr0,r12,0
|
cmpdi cr0,r12,0
|
||||||
@ -275,22 +275,22 @@ L(saveFP):
|
|||||||
li r12,64
|
li r12,64
|
||||||
lvx v2,0,r10
|
lvx v2,0,r10
|
||||||
lvx v3,0,r9
|
lvx v3,0,r9
|
||||||
|
|
||||||
lvx v4,r11,r10
|
lvx v4,r11,r10
|
||||||
lvx v5,r11,r9
|
lvx v5,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
lvx v6,r12,r10
|
lvx v6,r12,r10
|
||||||
lvx v7,r12,r9
|
lvx v7,r12,r9
|
||||||
addi r12,r12,64
|
addi r12,r12,64
|
||||||
|
|
||||||
lvx v8,r11,r10
|
lvx v8,r11,r10
|
||||||
lvx v9,r11,r9
|
lvx v9,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
lvx v10,r12,r10
|
lvx v10,r12,r10
|
||||||
lvx v11,r12,r9
|
lvx v11,r12,r9
|
||||||
|
|
||||||
lvx v12,r11,r10
|
lvx v12,r11,r10
|
||||||
lvx v13,r11,r9
|
lvx v13,r11,r9
|
||||||
L(restoreFXR):
|
L(restoreFXR):
|
||||||
@ -339,22 +339,22 @@ L(do_pltexit):
|
|||||||
li r12,64
|
li r12,64
|
||||||
lvx v2,0,r10
|
lvx v2,0,r10
|
||||||
lvx v3,0,r9
|
lvx v3,0,r9
|
||||||
|
|
||||||
lvx v4,r11,r10
|
lvx v4,r11,r10
|
||||||
lvx v5,r11,r9
|
lvx v5,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
lvx v6,r12,r10
|
lvx v6,r12,r10
|
||||||
lvx v7,r12,r9
|
lvx v7,r12,r9
|
||||||
addi r12,r12,64
|
addi r12,r12,64
|
||||||
|
|
||||||
lvx v8,r11,r10
|
lvx v8,r11,r10
|
||||||
lvx v9,r11,r9
|
lvx v9,r11,r9
|
||||||
addi r11,r11,64
|
addi r11,r11,64
|
||||||
|
|
||||||
lvx v10,r12,r10
|
lvx v10,r12,r10
|
||||||
lvx v11,r12,r9
|
lvx v11,r12,r9
|
||||||
|
|
||||||
lvx v12,r11,r10
|
lvx v12,r11,r10
|
||||||
lvx v13,r11,r9
|
lvx v13,r11,r9
|
||||||
L(restoreFXR2):
|
L(restoreFXR2):
|
||||||
@ -393,7 +393,7 @@ L(restoreFXR2):
|
|||||||
lfd fp13,FPR_PARMS+96(r1)
|
lfd fp13,FPR_PARMS+96(r1)
|
||||||
/* Call the target function. */
|
/* Call the target function. */
|
||||||
bctrl
|
bctrl
|
||||||
ld r2,40(r1)
|
ld r2,40(r1)
|
||||||
lwz r12,VR_VRSAVE(r1)
|
lwz r12,VR_VRSAVE(r1)
|
||||||
/* But return here and store the return values. */
|
/* But return here and store the return values. */
|
||||||
std r3,INT_RTN(r1)
|
std r3,INT_RTN(r1)
|
||||||
@ -413,7 +413,7 @@ L(callpltexit):
|
|||||||
addi r6,r1,INT_RTN
|
addi r6,r1,INT_RTN
|
||||||
bl JUMPTARGET(_dl_call_pltexit)
|
bl JUMPTARGET(_dl_call_pltexit)
|
||||||
nop
|
nop
|
||||||
/* Restore the return values from target function. */
|
/* Restore the return values from target function. */
|
||||||
lwz r12,VR_VRSAVE(r1)
|
lwz r12,VR_VRSAVE(r1)
|
||||||
ld r3,INT_RTN(r1)
|
ld r3,INT_RTN(r1)
|
||||||
ld r4,INT_RTN+8(r1)
|
ld r4,INT_RTN+8(r1)
|
||||||
@ -433,3 +433,4 @@ L(pltexitreturn):
|
|||||||
ld r1,0(r1)
|
ld r1,0(r1)
|
||||||
blr
|
blr
|
||||||
END(_dl_profile_resolve)
|
END(_dl_profile_resolve)
|
||||||
|
#endif
|
||||||
|
@ -64,6 +64,7 @@ _dl_runtime_resolve:
|
|||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
.globl _dl_runtime_profile
|
.globl _dl_runtime_profile
|
||||||
.type _dl_runtime_profile, @function
|
.type _dl_runtime_profile, @function
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
@ -124,10 +125,10 @@ _dl_runtime_profile:
|
|||||||
5: l %r14,7f-5b(%r1)
|
5: l %r14,7f-5b(%r1)
|
||||||
la %r4,32(%r12) # pointer to struct La_s390_32_regs
|
la %r4,32(%r12) # pointer to struct La_s390_32_regs
|
||||||
la %r5,72(%r12) # pointer to struct La_s390_32_retval
|
la %r5,72(%r12) # pointer to struct La_s390_32_retval
|
||||||
basr %r14,%r1 # call _dl_call_pltexit
|
basr %r14,%r1 # call _dl_call_pltexit
|
||||||
j 1b
|
j 1b
|
||||||
6: .long _dl_profile_fixup - 0b
|
6: .long _dl_profile_fixup - 0b
|
||||||
7: .long _dl_call_pltexit - 5b
|
7: .long _dl_call_pltexit - 5b
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile
|
.size _dl_runtime_profile, .-_dl_runtime_profile
|
||||||
|
#endif
|
||||||
|
@ -58,6 +58,7 @@ _dl_runtime_resolve:
|
|||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
.globl _dl_runtime_profile
|
.globl _dl_runtime_profile
|
||||||
.type _dl_runtime_profile, @function
|
.type _dl_runtime_profile, @function
|
||||||
cfi_startproc
|
cfi_startproc
|
||||||
@ -124,3 +125,4 @@ _dl_runtime_profile:
|
|||||||
j 0b
|
j 0b
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile
|
.size _dl_runtime_profile, .-_dl_runtime_profile
|
||||||
|
#endif
|
||||||
|
@ -56,7 +56,7 @@ _dl_runtime_resolve:
|
|||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PROF
|
||||||
.globl _dl_runtime_profile
|
.globl _dl_runtime_profile
|
||||||
.type _dl_runtime_profile, @function
|
.type _dl_runtime_profile, @function
|
||||||
.align 16
|
.align 16
|
||||||
@ -186,3 +186,4 @@ _dl_runtime_profile:
|
|||||||
retq
|
retq
|
||||||
cfi_endproc
|
cfi_endproc
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile
|
.size _dl_runtime_profile, .-_dl_runtime_profile
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user