summaryrefslogtreecommitdiff
path: root/gcc/mklibgcc.in
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-27 23:22:17 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-27 23:22:17 +0000
commitad8617cf3aae37463a6d61baa16b7b95a7520ead (patch)
tree2a2a67d83f3dfe20178bb96db57b38e585380170 /gcc/mklibgcc.in
parent2dd7852ce343c33ec54fe545c112612f88c84751 (diff)
downloadgcc-ad8617cf3aae37463a6d61baa16b7b95a7520ead.tar.gz
* Makefile.in (LIB2FUNCS_ST): Remove _gcov.
(LIBGCOV): New variable. (libgcc.mk): Add LIBGCOV. (LIBGCC_DEPS): Add libgcov.c. (libgcov.a): New target. (clean): Remove libgcov.a. (install-libgcc): Do libgcov too. (stage1-start, stage2-start, stage3-start, stage4-start): Deal with libgcov.a. * libgcc2.c (L_gcov): Move into ... * libgcov.c: ... here. New file. * mklibgcc.in: Add libgcov rules. * gcc.c (LINK_COMMAND_SPEC): Add -lgcov when profiling. * doc/invoke.texi (profile-arcs, test-coverage): Update and clarify. * profile.c (index_counts_file): Remove duplicate check for open file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61905 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/mklibgcc.in')
-rw-r--r--gcc/mklibgcc.in38
1 files changed, 37 insertions, 1 deletions
diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in
index faa5a69fb59..a18b8dd0a8b 100644
--- a/gcc/mklibgcc.in
+++ b/gcc/mklibgcc.in
@@ -12,6 +12,7 @@
# LIB2FUNCS_1
# LIB2FUNCS_2
# LIB2FUNCS_ST
+# LIBGCOV
# LIB2ADD
# LIB2ADD_ST
# LIB2ADDEH
@@ -65,6 +66,9 @@ make_compile='$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
# Dependencies for libgcc2.c
libgcc2_c_dep='stmp-dirs $(srcdir)/libgcc2.c $(CONFIG_H) coretypes.h $(TM_H) $(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'" $LIB2ADDEHDEP"
+# Dependencies for libgcov.c
+libgcov_c_dep='stmp-dirs $(srcdir)/libgcov.c $(CONFIG_H) coretypes.h $(TM_H) $(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'
+
# Dependencies for fp-bit.c
fpbit_c_dep='stmp-dirs config.status tsystem.h'
@@ -249,6 +253,25 @@ for file in $LIB2ADD_ST; do
libgcc2_st_objs="$libgcc2_st_objs ${oname}${objext}"
done
+#
+# build libgcov components
+#
+
+libgcov_objs=""
+
+for name in $LIBGCOV; do
+ for ml in $MULTILIBS; do
+ dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
+ flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
+ out="libgcc/${dir}/${name}${objext}"
+
+ echo $out: $libgcov_c_dep
+ echo " $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
+ -c '$(srcdir)/libgcov.c' -o $out
+ done
+ libgcov_objs="$libgcov_objs ${name}${objext}"
+done
+
# SHLIB_MKMAP
# SHLIB_MKMAP_OPTS
# SHLIB_MAPFILES
@@ -275,6 +298,11 @@ for ml in $MULTILIBS; do
libgcc_st_objs="$libgcc_st_objs libgcc/${dir}/$o"
done
+ libgcov_a_objs=""
+ for o in $libgcov_objs; do
+ libgcov_a_objs="$libgcov_a_objs libgcc/${dir}/$o"
+ done
+
if [ "$SHLIB_LINK" -a "$SHLIB_MKMAP" ]; then
mapfile="libgcc/${dir}/libgcc.map"
tmpmapfile="libgcc/${dir}/tmp-libgcc.map"
@@ -314,6 +342,12 @@ for ml in $MULTILIBS; do
echo ' $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc.a $libgcc_a_objs
echo ' $(RANLIB_FOR_TARGET)' ${dir}/libgcc.a
+ echo ""
+ echo "${dir}/libgcov.a: $libgcov_a_objs"
+ echo " -rm -rf ${dir}/libgcov.a"
+ echo ' $(AR_CREATE_FOR_TARGET)' ${dir}/libgcov.a $libgcov_a_objs
+ echo ' $(RANLIB_FOR_TARGET)' ${dir}/libgcov.a
+
if [ "$SHLIB_LINK" ]; then
echo ""
@@ -395,7 +429,7 @@ for ml in $MULTILIBS; do
if [ $dir != . ]; then
dirs="$dirs ${dir} libgcc/${dir}"
fi
- all="$all ${dir}/libgcc.a"
+ all="$all ${dir}/libgcc.a ${dir}/libgcov.a"
if [ "$SHLIB_LINK" ]; then
all="$all ${dir}/libgcc_eh.a"
if [ -z "$SHLIB_MULTILIB" ]; then
@@ -456,6 +490,8 @@ for ml in $MULTILIBS; do
fi
echo ' $(INSTALL_DATA)' ${dir}/libgcc.a ${ldir}/
echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc.a
+ echo ' $(INSTALL_DATA)' ${dir}/libgcov.a ${ldir}/
+ echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcov.a
if [ "$SHLIB_LINK" ]; then
echo ' $(INSTALL_DATA)' ${dir}/libgcc_eh.a ${ldir}/