* 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:
Ulrich Drepper 2005-07-07 02:39:45 +00:00
parent 016c70ea61
commit 9f0d7b6df9
12 changed files with 84 additions and 29 deletions

View File

@ -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

View File

@ -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 \

View File

@ -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. */

View File

@ -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
View 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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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. */
@ -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

View File

@ -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
@ -130,4 +131,4 @@ _dl_runtime_profile:
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

View File

@ -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

View File

@ -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