Files
rtems/doc/posix_users/gen_size_report
Joel Sherrill 65c6425de9 Remove CVS Id Strings (manual edits after script)
These modifications were required by hand after running the script.
In some cases, the file names did not match patterns. In others,
the format of the file did not match any common patterns.
2012-05-11 08:44:14 -05:00

191 lines
5.5 KiB
Plaintext

#
# Hack of a script to generate a very long list which contains
# the size information for every service listed in this manual
#
# This script must be modified by the user to tailor it for their
# environment. This is VERY ugly and could be replaced by something
# nicer in the future if this report style is useful.
#cpu=sparc
#bsp=erc32
#cpu=powerpc
#bsp=mcp750
cpu=v850
bsp=bare
symprefix=_
#objdir=/usr1/rtems/build/build-${cpu}-rtems/${cpu}-rtems/c/${bsp}/
#libc=/opt/rtems/${cpu}-rtems/lib/libc.a
#libm=/opt/rtems/${cpu}-rtems/lib/libm.a
objdir=/usr1/rtems/work/tools-v850/b-rtems/${cpu}-rtems/c/${bsp}/
libc=/usr2/test-v850/${cpu}-rtems/lib/libc.a
libm=/usr2/test-v850/${cpu}-rtems/lib/libm.a
srcdir=$r/src
docdir=$d
nm=${cpu}-rtems-nm
size=${cpu}-rtems-size
ar=${cpu}-rtems-ar
#
# All customization should be above this point
#
check_objs()
{
for i in *.o
do
${nm} $i | grep "T ${symprefix}${1}$" >/dev/null
if [ $? -eq 0 ] ; then
echo $i
return 0
fi
done
return 1
}
per_manager()
{
docfile=$1
shift
subdirs=$*
grep ^@item ${docfile} | grep "@code.* - " | \
grep -v "@item E" | \
grep -v "@code{CONFIGURE" | \
grep -v "@value{RPREFIX" | \
sed -e 's/@value{DIRPREFIX}/rtems_/' | \
cut -d'{' -f2 | sed -e 's/}//' | cut -d'-' -f1 >/tmp/XXX.size
if [ `wc -c </tmp/XXX.size` -eq 1 ] ; then
return
fi
echo "====> `grep ^@chapter ${docfile} | sed -e 's/@chapter //'`"
cat /tmp/XXX.size | while read line
do
# echo $line
found=no
for subd in ${subdirs}
do
if [ ${found} = "no" ] ; then
cd ${objdir}/${subd}/o-optimize/
objfile=`check_objs $line`
if [ $? -eq 0 ] ; then
found=yes
#echo ${objfile}
objcode=`${size} ${objfile} | tail -1 | cut -f1`
objdata=`${size} ${objfile} | tail -1 | cut -f2`
objbss=`${size} ${objfile} | tail -1 | cut -f3`
objcode=`echo ${objcode}`
objdata=`echo ${objdata}`
objbss=`echo ${objbss}`
echo "${line} - ${objcode}, ${objdata}, ${objbss}"
fi
fi
done
if [ ${found} = "no" ] ; then
echo "$line - macro or not implemented"
fi
done
}
# extract libc
if [ ! -d ${objdir}/newlib_extract/o-optimize ] ; then
mkdir -p ${objdir}/newlib_extract/o-optimize
cd ${objdir}/newlib_extract/o-optimize
list=`${ar} t ${libc}`
for i in $list
do
${ar} x ${libc} ${i}
done
fi
# extract libm
if [ ! -d ${objdir}/libm_extract/o-optimize ] ; then
mkdir -p ${objdir}/libm_extract/o-optimize
cd ${objdir}/libm_extract/o-optimize
list=`${ar} t ${libm}`
for i in $list
do
${ar} x ${libm} ${i}
done
fi
# grab the size of the Classic API
#
# NOTE: This API is always configured.
#
cd ${docdir}/user
echo
echo "=============================================================="
echo "=============================================================="
echo "==== ===="
echo "==== CLASSIC API SIZE INFORMATION ===="
echo "==== ===="
echo "=============================================================="
echo "=============================================================="
echo
if [ -r ${objdir}/../../../${bsp}/lib/librtems.a ] ; then
for i in *.t
do
per_manager $i exec/rtems/src exec/sapi/src lib/libc
done
else
echo "RTEMS Classic API not configured."
fi
# Grab the size of the POSIX API
cd ${docdir}/posix_users
echo
echo "=============================================================="
echo "=============================================================="
echo "==== ===="
echo "==== POSIX 1003.1b API SIZE INFORMATION ===="
echo "==== ===="
echo "=============================================================="
echo "=============================================================="
echo
if [ -r ${objdir}/../../../${bsp}/lib/libposix.a ] ; then
for i in `ls -1 *.t | grep -v libc.t | grep -v libm.t`
do
per_manager $i exec/posix/src lib/libc newlib_extract
done
else
echo "POSIX API not configured."
fi
# Grab the size of the POSIX routines provided by the C Library
cd ${docdir}/posix_users
echo
echo "=============================================================="
echo "=============================================================="
echo "==== ===="
echo "==== LIBC API SIZE INFORMATION ===="
echo "==== ===="
echo "=============================================================="
echo "=============================================================="
echo
for i in libc.t
do
per_manager $i exec/posix/src lib/libc newlib_extract
done
# Grab the size of the libm routines
cd ${docdir}/posix_users
echo
echo "=============================================================="
echo "=============================================================="
echo "==== ===="
echo "==== LIBM API SIZE INFORMATION ===="
echo "==== ===="
echo "=============================================================="
echo "=============================================================="
echo
for i in libm.t
do
per_manager $i exec/posix/src lib/libc libm_extract
done