]>
Commit | Line | Data |
---|---|---|
2b778ceb | 1 | # Copyright (C) 1995-2021 Free Software Foundation, Inc. |
11c981a9 RM |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
5 | # modify it under the terms of the GNU Lesser General Public |
6 | # License as published by the Free Software Foundation; either | |
7 | # version 2.1 of the License, or (at your option) any later version. | |
11c981a9 RM |
8 | |
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 12 | # Lesser General Public License for more details. |
11c981a9 | 13 | |
41bdb6e2 | 14 | # You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 15 | # License along with the GNU C Library; if not, see |
5a82c748 | 16 | # <https://www.gnu.org/licenses/>. |
11c981a9 RM |
17 | |
18 | # | |
19 | # Sub-makefile for gmon portion of the library. | |
20 | # | |
21 | subdir := gmon | |
22 | ||
a5f891ac JM |
23 | include ../Makeconfig |
24 | ||
a341068d | 25 | headers := sys/gmon.h sys/gmon_out.h sys/profil.h |
7ed87317 | 26 | routines := gmon mcount profil sprofil prof-freq |
0e043598 | 27 | |
6014c65d | 28 | tests = tst-sprofil tst-gmon |
9f0d7b6d UD |
29 | ifeq ($(build-profile),yes) |
30 | tests += tst-profile-static | |
31 | tests-static += tst-profile-static | |
32 | ||
33 | LDFLAGS-tst-profile-static = -profile | |
34 | endif | |
11c981a9 | 35 | |
a4777c46 L |
36 | tests += tst-gmon-static |
37 | tests-static += tst-gmon-static | |
38 | ||
d165ca64 L |
39 | ifeq (yesyes,$(have-fpie)$(build-shared)) |
40 | tests += tst-gmon-pie | |
41 | tests-pie += tst-gmon-pie | |
9d7a3741 L |
42 | ifeq (yes,$(enable-static-pie)) |
43 | tests += tst-gmon-static-pie | |
44 | tests-static += tst-gmon-static-pie | |
45 | endif | |
d165ca64 L |
46 | endif |
47 | ||
d99d7e26 RM |
48 | # The mcount code won't work without a frame pointer. |
49 | CFLAGS-mcount.c := -fno-omit-frame-pointer | |
50 | ||
0c251257 | 51 | CFLAGS-tst-gmon.c := -fno-omit-frame-pointer -pg |
ce16eb52 | 52 | tst-gmon-no-pie = yes |
26803075 | 53 | CRT-tst-gmon := $(csu-objpfx)g$(start-installed-name) |
6014c65d | 54 | tst-gmon-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon.data |
6b11a6ad | 55 | ifeq ($(run-built-tests),yes) |
6014c65d | 56 | tests-special += $(objpfx)tst-gmon-gprof.out |
6b11a6ad | 57 | endif |
6014c65d | 58 | |
a4777c46 | 59 | CFLAGS-tst-gmon-static.c := $(PIE-ccflag) -fno-omit-frame-pointer -pg |
26803075 | 60 | CRT-tst-gmon-static := $(csu-objpfx)g$(static-start-installed-name) |
9d7a3741 | 61 | tst-gmon-static-no-pie = yes |
a4777c46 L |
62 | tst-gmon-static-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon-static.data |
63 | ifeq ($(run-built-tests),yes) | |
64 | tests-special += $(objpfx)tst-gmon-static-gprof.out | |
65 | endif | |
66 | ||
d165ca64 | 67 | CFLAGS-tst-gmon-pie.c := $(PIE-ccflag) -fno-omit-frame-pointer -pg |
26803075 | 68 | CRT-tst-gmon-pie := $(csu-objpfx)g$(start-installed-name) |
d165ca64 L |
69 | tst-gmon-pie-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon-pie.data |
70 | ifeq ($(run-built-tests),yes) | |
71 | tests-special += $(objpfx)tst-gmon-pie-gprof.out | |
72 | endif | |
73 | ||
9d7a3741 L |
74 | ifeq (yes,$(enable-static-pie)) |
75 | CFLAGS-tst-gmon-static-pie.c := $(PIE-ccflag) -fno-omit-frame-pointer -pg | |
26803075 | 76 | CRT-tst-gmon-static-pie := $(csu-objpfx)gr$(static-start-installed-name) |
9d7a3741 L |
77 | tst-gmon-static-pie-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon-static-pie.data |
78 | ifeq ($(run-built-tests),yes) | |
79 | tests-special += $(objpfx)tst-gmon-static-pie-gprof.out | |
80 | endif | |
81 | endif | |
82 | ||
d165ca64 | 83 | |
d7d06f79 UD |
84 | include ../Rules |
85 | ||
d99d7e26 | 86 | # We cannot compile mcount.c with -pg because that would |
6d52618b | 87 | # create recursive calls. Just copy the normal static object. |
92777700 RM |
88 | # On systems where `profil' is not a system call, the same |
89 | # problem exists for the internal functions in profil.c. | |
90 | ||
87a07a43 | 91 | noprof := mcount $(sysdep_noprof) |
92777700 | 92 | ifeq (,$(filter profil,$(unix-syscalls))) |
4c48b267 | 93 | noprof += profil sprofil |
92777700 RM |
94 | endif |
95 | ||
40a55d20 | 96 | $(noprof:%=$(objpfx)%.op): %.op: %.o |
d99d7e26 RM |
97 | rm -f $@ |
98 | ln $< $@ | |
6014c65d FW |
99 | |
100 | # GMON_OUTPUT_PREFIX only sets the output prefix. The actual file | |
101 | # name contains the PID as well. | |
102 | $(objpfx)tst-gmon.out: clean-tst-gmon-data | |
103 | clean-tst-gmon-data: | |
104 | rm -f $(objpfx)tst-gmon.data.* | |
105 | ||
106 | $(objpfx)tst-gmon-gprof.out: tst-gmon-gprof.sh $(objpfx)tst-gmon.out | |
107 | $(SHELL) $< $(GPROF) $(objpfx)tst-gmon $(objpfx)tst-gmon.data.* > $@; \ | |
108 | $(evaluate-test) | |
d165ca64 | 109 | |
a4777c46 L |
110 | $(objpfx)tst-gmon-static.out: clean-tst-gmon-static-data |
111 | clean-tst-gmon-static-data: | |
112 | rm -f $(objpfx)tst-gmon-static.data.* | |
113 | ||
114 | $(objpfx)tst-gmon-static-gprof.out: tst-gmon-static-gprof.sh \ | |
115 | $(objpfx)tst-gmon-static.out | |
116 | $(SHELL) $< $(GPROF) $(objpfx)tst-gmon-static \ | |
117 | $(objpfx)tst-gmon-static.data.* > $@; \ | |
118 | $(evaluate-test) | |
119 | ||
d165ca64 L |
120 | $(objpfx)tst-gmon-pie.out: clean-tst-gmon-pie-data |
121 | clean-tst-gmon-pie-data: | |
122 | rm -f $(objpfx)tst-gmon-pie.data.* | |
123 | ||
124 | $(objpfx)tst-gmon-pie-gprof.out: tst-gmon-gprof.sh $(objpfx)tst-gmon-pie.out | |
125 | $(SHELL) $< $(GPROF) $(objpfx)tst-gmon-pie $(objpfx)tst-gmon-pie.data.* > $@; \ | |
126 | $(evaluate-test) | |
9d7a3741 L |
127 | |
128 | $(objpfx)tst-gmon-static-pie.out: clean-tst-gmon-static-pie-data | |
129 | clean-tst-gmon-static-pie-data: | |
130 | rm -f $(objpfx)tst-gmon-static-pie.data.* | |
131 | ||
132 | $(objpfx)tst-gmon-static-pie-gprof.out: tst-gmon-static-gprof.sh \ | |
133 | $(objpfx)tst-gmon-static-pie.out | |
134 | $(SHELL) $< $(GPROF) $(objpfx)tst-gmon-static-pie \ | |
135 | $(objpfx)tst-gmon-static-pie.data.* > $@; \ | |
136 | $(evaluate-test) |