recording file death

This commit is contained in:
K. Richard Pixley 1992-12-08 05:21:19 +00:00
parent 43bbd567f2
commit 017349fbcf
12 changed files with 0 additions and 3151 deletions

View file

@ -1,46 +0,0 @@
# This file was generated automatically by configure. Do not edit.
VPATH = .
links =
host_alias = sparc-sun-solaris
host_cpu = sparc
host_vendor = sun
host_os = solaris
target_alias = sparc-sun-solaris
target_cpu = sparc
target_vendor = sun
target_os = solaris
target_makefile_frag = ./config/mt-sparc
ALL=all.internal
# @(#)Makefile 5.17 (Berkeley) 5/11/90
#### host and target dependent Makefile fragments come in here.
MACHINE=sparc
###
PROG= gprof
SRCS= gprof.c arcs.c dfn.c lookup.c ${MACHINE}.c hertz.c \
printgprof.c printlist.c
LIBS = ../bfd/libbfd.a ../libiberty/libiberty.a
OBJS= gprof.o arcs.o dfn.o lookup.o ${MACHINE}.o hertz.o \
printgprof.o printlist.o
CFLAGS= -I. -I../include -DMACHINE_H=\"${MACHINE}.h\" ${TCFLAGS} ${HCFLAGS}
.c.o:
$(CC) -c $(CFLAGS) $<
all: ${PROG}
.PHONY: check
check:
beforeinstall:
install -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
${.CURDIR}/gprof.flat ${.CURDIR}/gprof.callg \
${DESTDIR}/usr/share/misc
$(PROG): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(PROG) $(LIBS)
clean:
-rm -f $(OBJS) core gprof nohup.out

View file

@ -1,219 +0,0 @@
#include <stdio.h>
#include "gprof.h"
void
flat_blurb (file)
FILE *file;
{
fputs("\n\
% the percentage of the total running time of the\n\
time program used by this function.\n\
\n\
cumulative a running sum of the number of seconds accounted\n\
seconds for by this function and those listed above it.\n\
\n\
self the number of seconds accounted for by this\n\
seconds function alone. This is the major sort for this\n\
listing.\n\
\n\
calls the number of times this function was invoked, if\n\
this function is profiled, else blank.\n\
\n\
self the average number of milliseconds spent in this\n\
ms/call function per call, if this function is profiled,\n\
else blank.\n\
\n\
total the average number of milliseconds spent in this\n\
ms/call function and its descendents per call, if this \n\
function is profiled, else blank.\n\
\n\
name the name of the function. This is the minor sort\n\
for this listing. The index shows the location of\n\
the function in the gprof listing. If the index is\n\
in parenthesis it shows where it would appear in\n\
the gprof listing if it were to be printed.\n\
\n", file);
}
static char *callg_blurb_bsd = "\n\
\n\
\n\
call graph profile:\n\
The sum of self and descendents is the major sort\n\
for this listing.\n\
\n\
function entries:\n\
\n\
index the index of the function in the call graph\n\
listing, as an aid to locating it (see below).\n\
\n\
%time the percentage of the total time of the program\n\
accounted for by this function and its\n\
descendents.\n\
\n\
self the number of seconds spent in this function\n\
itself.\n\
\n\
descendents\n\
the number of seconds spent in the descendents of\n\
this function on behalf of this function.\n\
\n\
called the number of times this function is called (other\n\
than recursive calls).\n\
\n\
self the number of times this function calls itself\n\
recursively.\n\
\n\
name the name of the function, with an indication of\n\
its membership in a cycle, if any.\n\
\n\
index the index of the function in the call graph\n\
listing, as an aid to locating it.\n\
\n\
\n\
\n\
parent listings:\n\
\n\
self* the number of seconds of this function's self time\n\
which is due to calls from this parent.\n\
\n\
descendents*\n\
the number of seconds of this function's\n\
descendent time which is due to calls from this\n\
parent.\n\
\n\
called** the number of times this function is called by\n\
this parent. This is the numerator of the\n\
fraction which divides up the function's time to\n\
its parents.\n\
\n\
total* the number of times this function was called by\n\
all of its parents. This is the denominator of\n\
the propagation fraction.\n\
\n\
parents the name of this parent, with an indication of the\n\
parent's membership in a cycle, if any.\n\
\n\
index the index of this parent in the call graph\n\
listing, as an aid in locating it.\n\
\n\
\n\
\n\
children listings:\n\
\n\
self* the number of seconds of this child's self time\n\
which is due to being called by this function.\n\
\n\
descendent*\n\
the number of seconds of this child's descendent's\n\
time which is due to being called by this\n\
function.\n\
\n\
called** the number of times this child is called by this\n\
function. This is the numerator of the\n\
propagation fraction for this child.\n\
\n\
total* the number of times this child is called by all\n\
functions. This is the denominator of the\n\
propagation fraction.\n\
\n\
children the name of this child, and an indication of its\n\
membership in a cycle, if any.\n\
\n\
index the index of this child in the call graph listing,\n\
as an aid to locating it.\n\
\n\
\n\
\n\
* these fields are omitted for parents (or\n\
children) in the same cycle as the function. If\n\
the function (or child) is a member of a cycle,\n\
the propagated times and propagation denominator\n\
represent the self time and descendent time of the\n\
cycle as a whole.\n\
\n\
** static-only parents and children are indicated\n\
by a call count of 0.\n\
\n\
\n\
\n\
cycle listings:\n\
the cycle as a whole is listed with the same\n\
fields as a function entry. Below it are listed\n\
the members of the cycle, and their contributions\n\
to the time and call counts of the cycle.\n\
\n";
static char *callg_blurb_fsf = "\n\
This table describes the call tree of the program, and was sorted by\n\
the total amount of time spent in each function and its children.\n\n\
Each entry in this table consists of several lines. The line with the\n\
index number at the left hand margin lists the current function.\n\
The lines above it list the functions that called this function,\n\
and the lines below it list the functions this one called.\n\
This line lists:\n\
index A unique number given to each element of the table.\n\
Index numbers are sorted numerically.\n\
The index number is printed next to every function name so\n\
it is easier to look up where the function in the table.\n\n\
% time This is the percentage of the `total' time that was spent\n\
in this function and its children. Note that due to\n\
different viewpoints, functions excluded by options, etc,\n\
these numbers will NOT add up to 100%.\n\n\
self This is the total amount of time spent in this function.\n\n\
children This is the total amount of time propagated into this\n\
function by its children.\n\n\
called This is the number of times the function was called.\n\
If the function called itself recursively, the number\n\
only includes non-recursive calls, and is followed by\n\
a `+' and the number of recursive calls.\n\n\
name The name of the current function. The index number is\n\
printed after it. If the function is a member of a\n\
cycle, the cycle number is printed between the\n\
function's name and the index number.\n\n\n\
For the function's parents, the fields have the following meanings:\n\n\
self This is the amount of time that was propagated directly\n\
from the function into this parent.\n\n\
children This is the amount of time that was propagated from\n\
the function's children into this parent.\n\n\
called This is the number of times this parent called the\n\
function `/' the total number of times the function\n\
was called. Recursive calls to the function are not\n\
included in the number after the `/'.\n\n\
name This is the name of the parent. The parent's index\n\
number is printed after it. If the parent is a\n\
member of a cycle, the cycle number is printed between\n\
the name and the index number.\n\n\
If the parents of the function cannot be determined, the word\n\
`<spontaneous>' is printed in the `name' field, and all the other\n\
fields are blank.\n\n\
For the function's children, the fields have the following meanings:\n\n\
self This is the amount of time that was propagated directly\n\
from the child into the function.\n\n\
children This is the amount of time that was propagated from the\n\
child's children to the function.\n\n\
called This is the number of times the function called\n\
this child `/' the total number of times the child\n\
was called. Recursive calls by the child are not\n\
listed in the number after the `/'.\n\n\
name This is the name of the child. The child's index\n\
number is printed after it. If the child is a\n\
member of a cycle, the cycle number is printed\n\
between the name and the index number.\n\n\
If there are any cycles (circles) in the call graph, there is an\n\
entry for the cycle-as-a-whole. This entry shows who called the\n\
cycle (as parents) and the members of the cycle (as children.)\n\
The `+' recursive calls entry shows the number of function calls that\n\
were internal to the cycle, and the calls entry for each member shows,\n\
for that member, how many times it was called from other members of\n\
the cycle.\n\n";
void
callg_blurb (file)
FILE *file;
{
if (bsd_style_output)
fputs(callg_blurb_bsd, file);
else
fputs(callg_blurb_fsf, file);
}

View file

@ -1 +0,0 @@
MACHINE=i386

View file

@ -1 +0,0 @@
MACHINE=sparc

678
gprof/configure vendored
View file

@ -1,678 +0,0 @@
#!/bin/sh
# Please do not edit this file. It is generated automatically from
# configure.in and a configure template.
configdirs=
# the debugger.
#set -x
#!/bin/sh
# Configuration script template
# Copyright (C) 1988, 1990, 1991 Free Software Foundation, Inc.
#This file is part of GNU.
#GNU CC is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 1, or (at your option)
#any later version.
#GNU CC is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with GNU CC; see the file COPYING. If not, write to
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
# $Id$
#
# Shell script to create proper links to machine-dependent files in
# preparation for compilation.
#
# If configure succeeds, it leaves its status in config.status.
# If configure fails after disturbing the status quo,
# config.status is removed.
#
remove=rm
hard_link=ln
symbolic_link='ln -s'
#for Test
#remove="echo rm"
#hard_link="echo ln"
#symbolic_link="echo ln -s"
progname=$0
# clear some things potentially inherited from environment.
ansi=
clib=
defaulttargets=
destdir=
fatal=
hostsubdir=
norecurse=
removing=
srcdir=
srctrigger=
target=
targets=
targetsubdir=
template=
verbose=
for arg in $*;
do
case ${arg} in
-ansi | +ansi)
ansi=true
;;
-clib | +c*)
clib=clib
;;
-destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*)
destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'`
;;
-forcesubdirs | +forcesubdirs | +forcesubdir | +forcesubdi | +forcesubd \
| +forcesub | +forcesu | +forces | +force | +forc | +for | +fo | +f)
forcesubdirs=${arg}
;;
-languages=* | +languages=* | +language=* | +languag=* \
| +langua=* | +langu=* | +lang=* | +lan=* | +la=* \
| +l=*)
languages="${languages} `echo ${arg} | sed 's/[+-]l[a-z]*=//'`"
;;
-gas | +gas | +ga | +g)
gas=yes
;;
-help | +h | +help)
fatal=true
;;
-nfp | +nfp | +nf | +n)
nfp=yes
;;
-norecurse | +norecurse)
norecurse=true
;;
-rm | +rm)
removing=${arg}
;;
# -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*)
# srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'`
# ;;
-target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*)
if [ -n "${targets}" ] ; then
forcesubdirs="+forcesubdirs"
fi
newtargets="${targets} `echo ${arg} | sed 's/[+-]t[a-z]*=//'`"
targets="${newtargets}"
;;
-template=* | +template=*)
template=`echo ${arg} | sed 's/[+-]template=//'`
;;
+verbose | +verbos | +verbo | +verb | +ver | +ve | +v)
verbose=${arg}
;;
-* | +*)
(echo ;
echo "Unrecognized option: \"${arg}\"". ;
echo) 1>&2
fatal=true
;;
*)
if [ -n "${hosts}" ] ; then
forcesubdirs="+forcesubdirs"
fi
newhosts="${hosts} ${arg}"
hosts=${newhosts}
;;
esac
done
if [ -n "${verbose}" ] ; then
echo `pwd`/configure $*
echo targets=\"${targets}\"
fi
# process host and target only if not rebuilding configure itself or removing.
if [ -z "${template}" -a -z "${removing}" -a -z "${fatal}" ] ; then
# Complain if an arg is missing
if [ -z "${hosts}" ] ; then
(echo ;
echo "configure: No HOST specified." ;
echo) 2>&1
fatal=true
fi
fi
if [ -n "${fatal}" -o "${hosts}" = "help" ] ; then
(echo "Usage: configure HOST" ;
echo ;
echo "Options: [defaults in brackets]" ;
echo " +ansi configure w/ANSI library. [no ansi lib]" ;
echo " +destdir=MYDIR configure for installation into MYDIR. [/usr/local]" ;
echo " +forcesubdirs configure in subdirectories. [in source directories]" ;
echo " +lang=LANG configure to build LANG. [gcc]" ;
echo " +help print this message. [normal config]" ;
echo " +gas configure the compilers for use with gas. [native as]" ;
echo " +nfp configure the compilers default to soft floating point. [hard float]" ;
echo " +norecurse configure this directory only. [recurse]" ;
echo " +rm remove this configuration. [build a configuration]" ;
echo " +target=TARGET configure for TARGET. [TARGET = HOST]" ;
echo " +template=TEM rebuild configure using TEM. [normal config]" ;
echo ;
echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ;
echo "Asking for more than one \"+target\" implies \"+forcesubdirs\". Any other" ;
echo "options given will apply to all targets.") 1>&2
if [ -r config.status ] ; then
cat config.status
fi
exit 1
fi
#### configure.in common parts come in here.
# This file is a shell script that supplies the information necessary
# to tailor a template configure script into the configure script
# appropriate for this directory. For more information, check any
# existing configure script.
srctrigger=gprof.c
srcname="gprof"
## end of common part.
# are we rebuilding config itself?
if [ -n "${template}" ] ; then
if [ ! -r ${template} ] ; then
echo "Can't find template ${template}."
exit 1
fi
# prep the template
sed -e '/^#### configure.in common parts come in here.$/,/^## end of common part.$/c\
#### configure.in common parts come in here.\
## end of common part.' \
-e '/^#### configure.in per-host parts come in here.$/,/^## end of per-host part.$/c\
#### configure.in per-host parts come in here.\
## end of per-host part.' \
-e '/^#### configure.in per-target parts come in here.$/,/^## end of per-target part.$/c\
#### configure.in per-target parts come in here.\
## end of per-target part.' \
< ${template} > template.new
if [ -r configure.in ] ; then
if [ -z "`grep '^# per\-host:' configure.in`" ] ; then
echo `pwd`/configure.in has no "per-host:" line.
exit 1
fi
if [ -z "`grep '^# per\-target:' configure.in`" ] ; then
echo `pwd`/configure.in has no "per-target:" line.
exit 1
fi
# split configure.in into common, per-host, and per-target parts
sed -e '/^# per\-host:/,$d' configure.in > configure.com
sed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' configure.in > configure.hst
sed -e '1,/^# per\-target:/d' configure.in > configure.tgt
# and insert them
sed -e '/^#### configure.in common parts come in here.$/ r configure.com' \
-e '/^#### configure.in per\-host parts come in here.$/ r configure.hst' \
-e '/^#### configure.in per\-target parts come in here.$/ r configure.tgt' \
template.new > configure.new
rm -f configure.com configure.tgt configure.hst
else
echo Warning: no configure.in in `pwd`
cat ${template} >> configure
fi
chmod a+x configure.new
rm template.new
# mv configure configure.old
mv configure.new configure
echo Rebuilt configure in `pwd`
if [ -z "${norecurse}" ] ; then
while [ -n "${configdirs}" ] ; do
# set configdir to car of configdirs, configdirs to cdr of configdirs
set ${configdirs}; configdir=$1; shift; configdirs=$*
if [ "`echo ${configdir}.*`" != "${configdir}.*" ] ; then
targetspecificdirs=${configdir}.*
else
targetspecificdirs=
fi
for i in ${configdir} ${targetspecificdirs} ; do
if [ -d $i ] ; then
if [ -r $i/configure ] ; then
(cd $i ;
./configure +template=${template} ${verbose})
else
echo No configure script in `pwd`/$i
fi
else
echo Warning: directory $i is missing.
fi
done
done
fi
exit 0
fi
# some sanity checks on configure.in
if [ -z "${srctrigger}" ] ; then
echo srctrigger not set in configure.in. `pwd` not configured.
exit 1
fi
for host in ${hosts} ; do
# Default other arg
if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then
targets=${host}
defaulttargets=true
fi
host_makefile_frag=config/hmake-${host}
#### configure.in per-host parts come in here.
## end of per-host part.
for target in ${targets} ; do
if [ -n "${verbose}" ] ; then
echo host \= \"${host}\", target \= \"${target}\".
fi
target_makefile_frag=config/tmake-${target}
#### configure.in per-target parts come in here.
files=
links=
## end of per-target part.
# Temporarily, we support only direct subdir builds.
hostsubdir=Host-${host}
targetsubdir=Target-${target}
if [ -n "${removing}" ] ; then
if [ -n "${forcesubdirs}" ] ; then
if [ -d "${hostsubdir}" ] ; then
rm -rf ${hostsubdir}/${targetsubdir}
if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then
rm -rf ${hostsubdir}
fi
else
echo Warning: no `pwd`/${hostsubdir} to remove.
fi
else
rm -f Makefile config.status ${links}
fi
else
if [ -n "${forcesubdirs}" ] ; then
# check for existing status before allowing forced subdirs.
if [ -f Makefile ] ; then
echo "Makefile already exists in source directory. `pwd` not configured."
exit 1
fi
if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi
cd ${hostsubdir}
if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi
cd ${targetsubdir}
srcdir=../..
else
# if not subdir builds, then make sure none exist.
if [ -n "`(ls .) 2>&1 | grep Host-`" ] ; then
echo "Configured subdirs exist. `pwd` not configured."
exit 1
fi
fi
# Find the source files, if location was not specified.
if [ -z "${srcdir}" ] ; then
srcdirdefaulted=1
srcdir=.
if [ -n "${srctrigger}" -a ! -r ${srctrigger} ] ; then
srcdir=..
fi
fi
if [ -n "${srctrigger}" -a ! -r ${srcdir}/${srctrigger} ] ; then
if [ -z "${srcdirdefaulted}" ] ; then
echo "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2
else
echo "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2
fi
echo \(At least ${srctrigger} is missing.\) 1>&2
exit 1
fi
# Set up the list of links to be made.
# ${links} is the list of link names, and ${files} is the list of names to link to.
# Make the links.
while [ -n "${files}" ] ; do
# set file to car of files, files to cdr of files
set ${files}; file=$1; shift; files=$*
set ${links}; link=$1; shift; links=$*
if [ ! -r ${srcdir}/${file} ] ; then
echo "${progname}: cannot create a link \"${link}\"," 1>&2
echo "since the file \"${file}\" does not exist." 1>&2
exit 1
fi
${remove} -f ${link}
rm -f config.status
# Make a symlink if possible, otherwise try a hard link
${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link}
if [ ! -r ${link} ] ; then
echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2
exit 1
fi
echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
done
# Create a .gdbinit file which runs the one in srcdir
# and tells GDB to look there for source files.
case ${srcdir} in
.)
;;
*)
echo "dir ." > .gdbinit
echo "dir ${srcdir}" >> .gdbinit
echo "source ${srcdir}/.gdbinit" >> .gdbinit
;;
esac
# Install a makefile, and make it set VPATH
# if necessary so that the sources are found.
# Also change its value of srcdir.
# FIXME-someday: This business of always writing to .tem and mv back
# is so that I don't screw things up while developing. Once this
# template is stable, these should be optimized. xoxorich.
# Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
if [ "${host}" != "${target}" ] ; then
echo "CROSS=-DCROSS_COMPILE" > Makefile
echo "ALL=start.encap" >> Makefile
else
echo "ALL=all.internal" > Makefile
fi
# set target, host, VPATH
echo "host = ${host}" >> Makefile
echo "target = ${target}" >> Makefile
if [ -n "${forcesubdirs}" ] ; then
echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
else
echo "subdir =" >> Makefile
fi
# echo "workdir = `pwd`" >> Makefile
echo "VPATH = ${srcdir}" >> Makefile
# add Makefile.in
cat ${srcdir}/Makefile.in >> Makefile
# and shake thoroughly.
# Conditionalize the makefile for this host.
if [ -f ${srcdir}/${host_makefile_frag} ] ; then
sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" Makefile > Makefile.tem
mv Makefile.tem Makefile
fi
# Conditionalize the makefile for this target.
if [ -f ${srcdir}/${target_makefile_frag} ] ; then
sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" Makefile > Makefile.tem
mv Makefile.tem Makefile
fi
# set srcdir
sed "s@^srcdir = \.@srcdir = ${srcdir}@" Makefile > Makefile.tem
mv Makefile.tem Makefile
# set destdir
if [ -n "${destdir}" ] ; then
sed "s:^destdir =.*$:destdir = ${destdir}:" Makefile > Makefile.tem
mv Makefile.tem Makefile
fi
# Remove all formfeeds, since some Makes get confused by them.
sed "s/ //" Makefile >> Makefile.tem
mv Makefile.tem Makefile
# reset SUBDIRS
sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" Makefile > Makefile.tem
mv Makefile.tem Makefile
# reset NONSUBDIRS
sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" Makefile > Makefile.tem
mv Makefile.tem Makefile
using=
if [ -f ${srcdir}/${host_makefile_frag} ] ; then
using=" using \"${host_makefile_frag}\""
fi
if [ -f ${srcdir}/${target_makefile_frag} ] ; then
if [ -z "${using}" ] ; then
andusing=" using \"${target_makefile_frag}\""
else
andusing="${using} and \"${target_makefile_frag}\""
fi
else
andusing=${using}
fi
echo "Created \"Makefile\"" in `pwd`${andusing}.
if [ "${host}" = "${target}" ] ; then
echo "Links are now set up for use with a ${target}." \
> config.status
# | tee ${srcdir}/config.status
else
echo "Links are now set up for host ${host} and target ${target}." \
> config.status
# | tee ${srcdir}/config.status
fi
originaldir=`pwd`
cd ${srcdir}
fi
done # for each target
# # Now build a Makefile for this host.
# if [ -n "${forcesubdirs}" ] ; then
# cd ${hostsubdir}
# cat > GNUmakefile << E!O!F
## Makefile generated by configure for host ${host}.
#
#%:
# for i in ${targets} ; do \
# $(MAKE) -C Target-\$i \$@
#
#all clean stage1 stage2 stage3 stage4etags tags TAGS
#E!O!F
# fi
done # for each host
# If there are subdirectories, then recurse.
if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi
# configdirs is not null
for configdir in ${configdirs} ; do
echo Configuring ${configdir}...
specifics=
commons=
if [ -n "${defaulttargets}" ] ; then
for host in ${hosts} ; do
if [ -d ${configdir}.${host} ] ; then
newspecifics="${specifics} ${host}"
specifics=${newspecifics}
else
newcommons="${commons} ${host}"
commons=${newcommons}
fi # if target specific
done # for each host
if [ -n "${commons}" ] ; then
if [ -d ${configdir} ] ; then
(cd ${configdir} ;
./configure ${commons} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \
| sed 's/^/ /'
else
echo Warning: directory \"${configdir}\" is missing.
fi
fi # if any common hosts
if [ -n "${specifics}" ] ; then
for host in ${specifics} ; do
echo Configuring target specific directory ${configdir}.${host}...
(cd ${configdir}.${host} ;
./configure ${host} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \
| sed 's/^/ /'
done # for host in specifics
fi # if there are any specifics
else
for target in ${targets} ; do
if [ -d ${configdir}.${target} ] ; then
newspecifics="${specifics} ${target}"
specifics=${newspecifics}
else
newcommons="${commons} +target=${target}"
commons=${newcommons}
fi
done # check for target specific dir override
if [ -n "${verbose}" ] ; then
echo " "commons=\"${commons}\"
echo " "specifics=\"${specifics}\"
fi # if verbose
if [ -n "${commons}" ] ; then
if [ -d ${configdir} ] ; then
(cd ${configdir} ;
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} ${commons} "+destdir=${destdir}") \
| sed 's/^/ /'
else
echo Warning: directory \"${configdir}\" is missing.
fi
fi # if any commons
if [ -n "${specifics}" ] ; then
for target in ${specifics} ; do
echo Configuring target specific directory ${configdir}.${target}...
(cd ${configdir}.${target} ;
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} "+target=${target}" "+destdir=${destdir}") \
| sed 's/^/ /'
done
fi # if any specifics
fi # not default targets
done
exit 0
#
# $Log$
# Revision 1.1 1991/07/23 19:09:21 sef
# Initial revision
#
# Revision 1.20 1991/06/18 15:30:33 rich
# Added prms.
#
# Revision 1.19 1991/06/13 04:21:14 rich
# Re-arrange so that gcc, which creates directories, gets installed
# first.
#
# Revision 1.18 1991/06/12 21:23:05 rich
# correctly propogate destdir
#
# Revision 1.17 1991/06/09 20:39:58 rich
# Added +clib option.
#
# Revision 1.16 1991/05/27 21:04:21 rich
# Removed clib for now.
#
# Revision 1.15 1991/05/27 20:54:24 rich
# fixed a bug in multiple targets
#
# Revision 1.14 1991/05/22 01:44:04 rich
# remove gdb until config issues resolve.
#
# Revision 1.13 1991/05/19 08:00:09 rich
# Added gdb.
#
# Revision 1.12 1991/05/19 00:32:13 rich
# Changes to deal with missing subdirs gracefully, and changes dictated
# from dropping configure over gdb.
#
# Revision 1.4 1991/05/19 00:16:45 rich
# Configure for gdb.
#
# Revision 1.10 1991/05/04 00:58:38 rich
# Fix program name bug.
#
# Revision 1.9 1991/05/03 19:14:18 rich
# Changed getopt to libiberty, commented out an aborted attempt at host
# level Makefiles because it caused errors on +rm, add a warning for
# directories expected to be removed on +rm but that don't exist.
#
# Revision 1.8 1991/04/24 16:50:59 rich
# Three staging checkpoint.
#
# Revision 1.7 1991/04/17 01:34:47 rich
# Added getopt for binutils, fixed problem with host dependancies in
# configure.template.
#
# Revision 1.6 1991/04/16 00:18:44 rich
# Now handles multiple hosts and targets.
#
# Revision 1.5 1991/04/15 23:43:44 rich
# Now handles multiple hosts and targets.
#
# Revision 1.4 1991/04/13 02:11:03 rich
# Config cut 3. We now almost install a29k.
#
# Revision 1.3 1991/04/11 02:41:54 rich
# Cut 2 config. Subdirs.
#
#
#
#
# Local Variables:
# fill-column: 131
# End:
#
# end of configure.template

View file

@ -1,108 +0,0 @@
call graph profile:
The sum of self and descendents is the major sort
for this listing.
function entries:
index the index of the function in the call graph
listing, as an aid to locating it (see below).
%time the percentage of the total time of the program
accounted for by this function and its
descendents.
self the number of seconds spent in this function
itself.
descendents
the number of seconds spent in the descendents of
this function on behalf of this function.
called the number of times this function is called (other
than recursive calls).
self the number of times this function calls itself
recursively.
name the name of the function, with an indication of
its membership in a cycle, if any.
index the index of the function in the call graph
listing, as an aid to locating it.
parent listings:
self* the number of seconds of this function's self time
which is due to calls from this parent.
descendents*
the number of seconds of this function's
descendent time which is due to calls from this
parent.
called** the number of times this function is called by
this parent. This is the numerator of the
fraction which divides up the function's time to
its parents.
total* the number of times this function was called by
all of its parents. This is the denominator of
the propagation fraction.
parents the name of this parent, with an indication of the
parent's membership in a cycle, if any.
index the index of this parent in the call graph
listing, as an aid in locating it.
children listings:
self* the number of seconds of this child's self time
which is due to being called by this function.
descendent*
the number of seconds of this child's descendent's
time which is due to being called by this
function.
called** the number of times this child is called by this
function. This is the numerator of the
propagation fraction for this child.
total* the number of times this child is called by all
functions. This is the denominator of the
propagation fraction.
children the name of this child, and an indication of its
membership in a cycle, if any.
index the index of this child in the call graph listing,
as an aid to locating it.
* these fields are omitted for parents (or
children) in the same cycle as the function. If
the function (or child) is a member of a cycle,
the propagated times and propagation denominator
represent the self time and descendent time of the
cycle as a whole.
** static-only parents and children are indicated
by a call count of 0.
cycle listings:
the cycle as a whole is listed with the same
fields as a function entry. Below it are listed
the members of the cycle, and their contributions
to the time and call counts of the cycle.

View file

@ -1,32 +0,0 @@
flat profile:
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.

View file

@ -1,29 +0,0 @@
BEGIN {
FS="\"";
print "/* ==> Do not modify this file!! It is created automatically"
print " by make-c-prog.awk; modify make-c-prog.awk instead. <== */"
print ""
print "#include <stdio.h>"
}
{
if (curfun != FUNCTION)
{
if (curfun)
print "}"
curfun = FUNCTION
print ""
print "void";
printf "%s (file)\n", FUNCTION
print " FILE *file;";
print "{";
}
printf " fputs (\"";
for (i = 1; i < NF; i++)
printf "%s\\\"", $i;
printf "%s\\n\", file);\n", $NF;
}
END {
print "}"
}

View file

@ -1,24 +0,0 @@
/*
* Copyright (c) 1989 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that: (1) source distributions retain this entire copyright
* notice and comment, and (2) distributions including binaries display
* the following acknowledgement: ``This product includes software
* developed by the University of California, Berkeley and its contributors''
* in the documentation or other materials provided with the distribution
* and in all advertising materials mentioning features or use of this
* software. Neither the name of the University nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
* @(#)pathnames.h 5.2 (Berkeley) 6/1/90
*/
#define _PATH_FLAT_BLURB "/usr/local/lib/gprof.flat"
#define _PATH_CALLG_BLURB "/usr/local/lib/gprof.callg"

View file

@ -1,12 +0,0 @@
void
foo(int x) {
if (x&3)
foo (x-1);
}
main() {
int i;
for (i=0; i< 1024; i++)
foo(i);
}

View file

@ -1,160 +0,0 @@
The GNU mmalloc (mapped-malloc) package. fnf@cygnus.com
Description
-----------
This is a heavily modified version of GNU malloc which has been extended to
use mmap() as the basic mechanism for for obtaining memory from the system,
rather than sbrk(). This gives it several advantages over the
more traditional malloc:
* Providing suitable precautions are taken to avoid memory region
collisions, sbrk() is now available for use by applications that
use this package and still need to use some memory management
package that includes functions like malloc/realloc/free.
* Several different memory pools can be used, each of them growing
or shinking under control of mmap(), with the mmalloc functions
using a specific pool on a call by call basis.
* By using mmap, it is easy to create data pools which are intended to
be persistent and exist as a filesystem object after the creating
process has gone away.
* Because multiple memory pools can be managed, data used for a
specific purpose can be allocated into it's own memory pool, making
it easier to allow applications to "dump" and "restore" initialized
malloc-managed memory regions. I.E., the "unexec" hack popularized
by GNU emacs could potentially go away.
Implementation
--------------
The mmalloc functions contain no internal static state. All of mmalloc
internal data is allocated in the mapped in region, along with the user
data that it manages. This allows it to manage multiple such regions
and to "pick up where it left off" when such regions are later dynamically
mapped back in.
In some sense, malloc has been "purified" to contain no internal state
information and generalized to use multiple memory regions rather than a
single region managed by sbrk(). However the new routines now need an
extra parameter which informs malloc which memory region it is dealing
with (along with other information).
For ease of initial implementation, and to avoid exporting or importing
any more global variables or routines than necessary, this package is
implemented with all functions contained within a single source file.
At some future point, once everything has stabilized, it may be desirable
split it up into separate files.
The functions initially provided by mmalloc are:
void *mmalloc_attach (int fd, void *baseaddr);
void *mmalloc_detach (void *md);
int mmalloc_errno (void *md);
int mmalloc_setkey (void *md, int keynum, void *key);
void *mmalloc_getkey (void *md, int keynum);
void *mmalloc (void *md, size_t size);
void *mrealloc (void *md, void *ptr, size_t size);
void *mvalloc (void *md, size_t size);
void mfree (void *md, void *ptr);
Backwards Compatibility
-----------------------
To allow a single malloc package to be used in a given application, provision
is made for the traditional malloc/realloc/free functions to be implemented
as special cases of the mmalloc functions. In particular, if any of the
functions that expect malloc descriptors are called with a NULL pointer rather
than a valid malloc descriptor, then they default to using an mmap'd region
starting at the current sbrk() value and mapped to /dev/zero. Applications
can simply include the following defines to use the mmalloc versions:
#define malloc(size) mmalloc ((void *)0, (size))
#define realloc(ptr,size) mrealloc ((void *)0, (ptr), (size));
#define free(ptr) mfree ((void *)0, (ptr))
or replace the existing malloc/realloc/free calls with the above patterns
if the #define's cause problems.
Note that this does not prevent calls to malloc/realloc/free within
libraries from continuing to use the library version of malloc, so if this
is a problem, the compatibility issue needs to be dealt with in another way.
Function Descriptions
---------------------
void *mmalloc_attach (int fd, void *baseaddr);
Initialize access to a mmalloc managed region.
If FD is a valid file descriptor for an open file then data for the
mmalloc managed region is mapped to that file, otherwise "/dev/zero"
is used and the data will not exist in any filesystem object.
If the open file corresponding to FD is from a previous use of
mmalloc and passes some basic sanity checks to ensure that it is
compatible with the current mmalloc package, then it's data is
mapped in and is immediately accessible at the same addresses in
the current process as the process that created the file.
If BASEADDR is not NULL, the mapping is established starting at the
specified address in the process address space. If BASEADDR is NULL,
the mmalloc package chooses a suitable address at which to start the
mapped region, which will be the value of the previous mapping if
opening an existing file which was previously built by mmalloc, or
for new files will be a value chosen by mmap.
Specifying BASEADDR provides more control over where the regions
start and how big they can be before bumping into existing mapped
regions or future mapped regions.
On success, returns a "malloc descriptor" which is used in subsequent
calls to other mmalloc package functions. It is explicitly "void *"
("char *" for systems that don't fully support void) so that users
of the package don't have to worry about the actual implementation
details.
On failure returns NULL.
void *mmalloc_detach (void *md);
Terminate access to a mmalloc managed region by closing the base
file and unmapping all memory pages associated with the region.
Returns NULL on success.
Returns the malloc descriptor on failure, which can subsequently
be used for further action (such as obtaining more information about
the nature of the failure).
void *mmalloc (void *md, size_t size);
Given an mmalloc descriptor MD, allocate additional memory of
SIZE bytes in the associated mapped region.
void *mrealloc (void *md, void *ptr, size_t size);
Given an mmalloc descriptor MD and a pointer to memory previously
allocated by mmalloc in PTR, reallocate the memory to be SIZE bytes
long, possibly moving the existing contents of memory if necessary.
void *mvalloc (void *md, size_t size);
Like mmalloc but the resulting memory is aligned on a page boundary.
void mfree (void *md, void *ptr);
Given an mmalloc descriptor MD and a pointer to memory previously
allocated by mmalloc in PTR, free the previously allocated memory.
int mmalloc_errno (void *md);
Given a mmalloc descriptor, if the last mmalloc operation
failed for some reason due to a system call failure, then
returns the associated errno. Returns 0 otherwise.

File diff suppressed because it is too large Load diff