Deal with target architecture that have a pointer size that is different from
authorNick Clifton <nickc@redhat.com>
Thu, 31 Jan 2002 18:37:58 +0000 (18:37 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 31 Jan 2002 18:37:58 +0000 (18:37 +0000)
the host architectures pointer size.

gprof/ChangeLog
gprof/Makefile.in
gprof/TODO
gprof/acconfig.h [deleted file]
gprof/configure
gprof/configure.in
gprof/gmon.h
gprof/gmon_io.c
gprof/po/gprof.pot

index 0eb592dcee21a15909b4849559b7cbdac11040c8..63654b97526904acf5552db1d0623d1a2093601a 100644 (file)
@@ -1,3 +1,41 @@
+2002-01-31  Jason R Thorpe <thorpej@wasabisystems.com>
+
+       * TODO: Remove "host architecture pointer size" item.
+       * acconfig.h: Remove.
+       * gconfig.in: Regenerate.
+       * configure.in: Remove check for gmon pointer size.
+       * configure: Regenerate.
+       * gmon.h (GMON_HDRSIZE_BSD44_32): Define.
+       (GMON_HDRSIZE_BSD44_64): Ditto.
+       (GMON_HDRSIZE_OLDBSD_32): Ditto.
+       (GMON_HDRSIZE_OLDBSD_64): Ditto.
+       (struct raw_phdr): Wrap in #if 0, keeping it for
+       documentation purposes only.
+       (struct old_raw_phdr): Likewise.
+       (struct raw_arc): Likewise.  Change type/size of
+       "count" member to long match 4.4BSD.
+       * gmon_io: Update copyright years.
+       (gmon_io_read_64): New function.
+       (gmon_io_read_vma): Use bfd_arch_bits_per_address to
+       determine target pointer size.  Use gmon_io_read_32
+       and gmon_io_read_64.
+       (gmon_io_write_64): New function.
+       (gmon_io_write_vma): Use bfd_arch_bits_per_address to
+       determine target pointer size.  Use gmon_io_write_32
+       and gmon_io_write_64.
+       (get_vma): Remove.
+       (put_vma): Ditto.
+       (gmon_read_raw_arc): New function.
+       (gmon_write_raw_arc): New function.
+       (gmon_out_read): Do not use struct raw_phdr or
+       struct old_raw_phdr to read the gmon header.  Use
+       gmon_read_raw_arc to read call graph records.
+       (gmon_out_write): Do not use struct raw_phdr or
+       struct old_raw_phdr to write the gmon header.  Use
+       gmon_write_raw_arc to write call graph records.
+       * po/gprof.pot: Regenerate.
+       * Makefile.in: Regenerate.
+
 2002-01-31  Alan Modra  <amodra@bigpond.net.au>
 
        * alpha.c (alpha_Instruction): Don't use.
index 530623a3a85ec98ec2699ade450b2449f533fe8a..52206192ae9c5a6f930916163d81cfdc153c113d 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4 from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -187,13 +187,12 @@ NROFF = nroff
 HEADERS =  $(noinst_HEADERS)
 
 DIST_COMMON =  README ./stamp-h.in ChangeLog Makefile.am Makefile.in \
-TODO acconfig.h acinclude.m4 aclocal.m4 configure configure.in \
-gconfig.in
+TODO acinclude.m4 aclocal.m4 configure configure.in gconfig.in
 
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 SOURCES = $(gprof_SOURCES)
 OBJECTS = $(gprof_OBJECTS)
@@ -231,7 +230,7 @@ $(srcdir)/gconfig.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
                rm -f $(srcdir)/stamp-h.in; \
                $(MAKE) $(srcdir)/stamp-h.in; \
        else :; fi
-$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
+$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) 
        cd $(top_srcdir) && $(AUTOHEADER)
        @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
 
@@ -390,7 +389,7 @@ uninstall-info:
        else ii=; fi; \
        list='$(INFO_DEPS)'; \
        for file in $$list; do \
-         test -z "$ii" \
+         test -z "$$ii" \
            || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \
        done
        @$(NORMAL_UNINSTALL)
@@ -504,7 +503,7 @@ maintainer-clean-recursive:
        dot_seen=no; \
        rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
          rev="$$subdir $$rev"; \
-         test "$$subdir" = "." && dot_seen=yes; \
+         test "$$subdir" != "." || dot_seen=yes; \
        done; \
        test "$$dot_seen" = "no" && rev=". $$rev"; \
        target=`echo $@ | sed s/-recursive//`; \
index 20111c61e74eb8923fa5c7a9a75b2d46567432ce..324983861c7ede2a07f6445b98044fd37cb3056e 100644 (file)
@@ -1,7 +1,4 @@
 
-- gmon_io.c cannot deal with target architecture that have a pointer size
-  that is different from the host architectures pointer size---fix this
-  (gmon_out.h, and gmon_io.c)
 - add support for prof file format so that prof files can be displayed
   at the line-level (this is useful for the uprofile tool under DEC's
   OSF/1)
diff --git a/gprof/acconfig.h b/gprof/acconfig.h
deleted file mode 100644 (file)
index 11991dd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Define as the size of a pointer in the target profile file format.  */
-#undef GMON_PTR_SIZE
index cae0bd8dc8faed2bd18dcc7f4fd7c704efb68dc4..442e64228fb7db08dbe02ba1c0af4862b5d5fc62 100755 (executable)
@@ -3143,7 +3143,7 @@ EOF
 
 fi
 
-for ac_hdr in unistd.h
+for ac_hdr in stdlib.h unistd.h sys/stat.h sys/types.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
@@ -3275,11 +3275,24 @@ else
 #include <fcntl.h>
 #include <sys/mman.h>
 
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
 /* This mess was copied from the GNU getpagesize.h.  */
 #ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-# endif
 
 /* Assume that all systems that can run configure have sys/param.h.  */
 # ifndef HAVE_SYS_PARAM_H
@@ -3387,7 +3400,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:3391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_mmap_fixed_mapped=yes
 else
@@ -3415,17 +3428,17 @@ unistd.h values.h sys/param.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3419: checking for $ac_hdr" >&5
+echo "configure:3432: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3424 "configure"
+#line 3437 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3455,12 +3468,12 @@ done
 __argz_count __argz_stringify __argz_next
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3459: checking for $ac_func" >&5
+echo "configure:3472: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3464 "configure"
+#line 3477 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3483,7 +3496,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3512,12 +3525,12 @@ done
      for ac_func in stpcpy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3516: checking for $ac_func" >&5
+echo "configure:3529: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3521 "configure"
+#line 3534 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3540,7 +3553,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3574,19 +3587,19 @@ EOF
 
    if test $ac_cv_header_locale_h = yes; then
     echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3578: checking for LC_MESSAGES" >&5
+echo "configure:3591: checking for LC_MESSAGES" >&5
 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3583 "configure"
+#line 3596 "configure"
 #include "confdefs.h"
 #include <locale.h>
 int main() {
 return LC_MESSAGES
 ; return 0; }
 EOF
-if { (eval echo configure:3590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_val_LC_MESSAGES=yes
 else
@@ -3607,7 +3620,7 @@ EOF
     fi
   fi
    echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3611: checking whether NLS is requested" >&5
+echo "configure:3624: checking whether NLS is requested" >&5
         # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -3627,7 +3640,7 @@ fi
 EOF
 
       echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3631: checking whether included gettext is requested" >&5
+echo "configure:3644: checking whether included gettext is requested" >&5
       # Check whether --with-included-gettext or --without-included-gettext was given.
 if test "${with_included_gettext+set}" = set; then
   withval="$with_included_gettext"
@@ -3646,17 +3659,17 @@ fi
 
        ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3650: checking for libintl.h" >&5
+echo "configure:3663: checking for libintl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3655 "configure"
+#line 3668 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3673: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3673,19 +3686,19 @@ fi
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:3677: checking for gettext in libc" >&5
+echo "configure:3690: checking for gettext in libc" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3682 "configure"
+#line 3695 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:3689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libc=yes
 else
@@ -3701,7 +3714,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
           if test "$gt_cv_func_gettext_libc" != "yes"; then
             echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:3705: checking for bindtextdomain in -lintl" >&5
+echo "configure:3718: checking for bindtextdomain in -lintl" >&5
 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3709,7 +3722,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3713 "configure"
+#line 3726 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3720,7 +3733,7 @@ int main() {
 bindtextdomain()
 ; return 0; }
 EOF
-if { (eval echo configure:3724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3736,19 +3749,19 @@ fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:3740: checking for gettext in libintl" >&5
+echo "configure:3753: checking for gettext in libintl" >&5
 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3745 "configure"
+#line 3758 "configure"
 #include "confdefs.h"
 
 int main() {
 return (int) gettext ("")
 ; return 0; }
 EOF
-if { (eval echo configure:3752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   gt_cv_func_gettext_libintl=yes
 else
@@ -3776,7 +3789,7 @@ EOF
              # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3780: checking for $ac_word" >&5
+echo "configure:3793: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3810,12 +3823,12 @@ fi
                for ac_func in dcgettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3814: checking for $ac_func" >&5
+echo "configure:3827: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3819 "configure"
+#line 3832 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3838,7 +3851,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3865,7 +3878,7 @@ done
                # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3869: checking for $ac_word" >&5
+echo "configure:3882: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3901,7 +3914,7 @@ fi
                # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3905: checking for $ac_word" >&5
+echo "configure:3918: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3933,7 +3946,7 @@ else
 fi
 
                cat > conftest.$ac_ext <<EOF
-#line 3937 "configure"
+#line 3950 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3941,7 +3954,7 @@ extern int _nl_msg_cat_cntr;
                               return _nl_msg_cat_cntr
 ; return 0; }
 EOF
-if { (eval echo configure:3945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   CATOBJEXT=.gmo
                   DATADIRNAME=share
@@ -3973,7 +3986,7 @@ fi
         # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3977: checking for $ac_word" >&5
+echo "configure:3990: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4007,7 +4020,7 @@ fi
         # Extract the first word of "gmsgfmt", so it can be a program name with args.
 set dummy gmsgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4011: checking for $ac_word" >&5
+echo "configure:4024: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4043,7 +4056,7 @@ fi
         # Extract the first word of "xgettext", so it can be a program name with args.
 set dummy xgettext; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4047: checking for $ac_word" >&5
+echo "configure:4060: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4133,7 +4146,7 @@ fi
        LINGUAS=
      else
        echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:4137: checking for catalogs to be installed" >&5
+echo "configure:4150: checking for catalogs to be installed" >&5
        NEW_LINGUAS=
        for lang in ${LINGUAS=$ALL_LINGUAS}; do
          case "$ALL_LINGUAS" in
@@ -4161,17 +4174,17 @@ echo "configure:4137: checking for catalogs to be installed" >&5
       if test "$CATOBJEXT" = ".cat"; then
         ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:4165: checking for linux/version.h" >&5
+echo "configure:4178: checking for linux/version.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4170 "configure"
+#line 4183 "configure"
 #include "confdefs.h"
 #include <linux/version.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4234,7 +4247,7 @@ fi
   
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:4238: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:4251: checking whether to enable maintainer-specific portions of Makefiles" >&5
     # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
@@ -4259,7 +4272,7 @@ fi
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:4263: checking for executable suffix" >&5
+echo "configure:4276: checking for executable suffix" >&5
 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4269,7 +4282,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:4273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:4286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.o | *.obj) ;;
@@ -4294,17 +4307,17 @@ for ac_hdr in sys/gmon_out.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4298: checking for $ac_hdr" >&5
+echo "configure:4311: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4303 "configure"
+#line 4316 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4331,54 +4344,6 @@ fi
 done
 
 
-echo $ac_n "checking the size of gmon pointers""... $ac_c" 1>&6
-echo "configure:4336: checking the size of gmon pointers" >&5
-if test "$cross_compiling" = yes; then
-  gmon_ptr_size=4
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4341 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#if HAVE_SYS_GMON_OUT_H
-#include <sys/gmon_out.h>
-#endif
-main()
-{
-#if HAVE_SYS_GMON_OUT_H
-  struct gmon_cg_arc_record arc;
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(arc.from_pc));
-  exit(0);
-#else
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", (int) sizeof(char *));
-  exit(1);
-#endif
-}
-EOF
-if { (eval echo configure:4364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  gmon_ptr_size=`cat conftestval`
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  gmon_ptr_size=4
-fi
-rm -fr conftest*
-fi
-
-echo "$ac_t""$gmon_ptr_size" 1>&6
-
-cat >> confdefs.h <<EOF
-#define GMON_PTR_SIZE $gmon_ptr_size
-EOF
-
-
 build_warnings="-W -Wall"
 # Check whether --enable-build-warnings or --disable-build-warnings was given.
 if test "${enable_build_warnings+set}" = set; then
index d9ddf4879735f8e628202326c8dbb5f012da687f..cbe43b35a9f9a2b22b082c89f0d7c5712c140e35 100644 (file)
@@ -31,31 +31,6 @@ AC_EXEEXT
 
 AC_CHECK_HEADERS(sys/gmon_out.h)
 
-AC_MSG_CHECKING(the size of gmon pointers)
-AC_TRY_RUN([#include <stdio.h>
-#include <stdlib.h>
-#if HAVE_SYS_GMON_OUT_H
-#include <sys/gmon_out.h>
-#endif
-main()
-{
-#if HAVE_SYS_GMON_OUT_H
-  struct gmon_cg_arc_record arc;
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(arc.from_pc));
-  exit(0);
-#else
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", (int) sizeof(char *));
-  exit(1);
-#endif
-}], gmon_ptr_size=`cat conftestval`, gmon_ptr_size=4, gmon_ptr_size=4)
-AC_MSG_RESULT($gmon_ptr_size)
-
-AC_DEFINE_UNQUOTED(GMON_PTR_SIZE, $gmon_ptr_size)
-
 build_warnings="-W -Wall"
 AC_ARG_ENABLE(build-warnings,
 [  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
index 28a54bcbaf2bad12285c981f39448de445940a96..884add11609da822cc7db13cbbb575e02ec15991 100644 (file)
 #ifndef gmon_h
 #define gmon_h
 
-struct raw_phdr
-  {
-    /* FIXME: Checking a host compiler define means that we can't use
-       a cross gprof to the alpha.  */
-    char low_pc[GMON_PTR_SIZE];        /* base pc address of sample buffer */
-    char high_pc[GMON_PTR_SIZE];/* max pc address of sampled buffer */
-    char ncnt[4];              /* size of sample buffer (plus this header) */
+/* Size of the 4.4BSD gmon header */
+#define GMON_HDRSIZE_BSD44_32 (4 + 4 + 4 + 4 + 4 + (3 * 4))
+#define GMON_HDRSIZE_BSD44_64 (8 + 8 + 4 + 4 + 4 + (3 * 4))
 
-    char version[4];           /* version number */
-    char profrate[4];          /* profiling clock rate */
-    char spare[3*4];           /* reserved */
-  };
+#if 0 /* For documentation purposes only.  */
+  struct raw_phdr
+    {
+      char low_pc[sizeof(void *)]; /* base pc address of sample buffer */
+      char high_pc[sizeof(void *)];/* max pc address of sampled buffer */
+      char ncnt[4];               /* size of sample buffer (plus this
+                                     header) */
+
+      char version[4];            /* version number */
+      char profrate[4];                   /* profiling clock rate */
+      char spare[3*4];            /* reserved */
+    };
+#endif
 
 #define GMONVERSION     0x00051879
 
-struct old_raw_phdr
-  {
-    char low_pc[GMON_PTR_SIZE];        /* base pc address of sample buffer */
-    char high_pc[GMON_PTR_SIZE];/* max pc address of sampled buffer */
-    char ncnt[4];              /* size of sample buffer (plus this header) */
+/* Size of the old BSD gmon header */
+#define GMON_HDRSIZE_OLDBSD_32 (4 + 4 + 4) 
+
+/* FIXME: Checking host compiler defines here means that we can't
+   use a cross gprof alpha OSF.  */
+#if defined(__alpha__) && defined (__osf__) 
+#define GMON_HDRSIZE_OLDBSD_64 (8 + 8 + 4 + 4)
+#else
+#define GMON_HDRSIZE_OLDBSD_64 (8 + 8 + 4)
+#endif
 
-    /* FIXME: Checking host compiler defines here means that we can't
-       use a cross gprof alpha OSF.  */
+#if 0 /* For documentation purposes only.  */
+  struct old_raw_phdr
+    {
+      char low_pc[sizeof(void *)]; /* base pc address of sample buffer */
+      char high_pc[sizeof(void *)];/* max pc address of sampled buffer */
+      char ncnt[4];               /* size of sample buffer (plus this
+                                     header) */
 #if defined (__alpha__) && defined (__osf__)
-    /*
-     * DEC's OSF v3.0 uses 4 bytes of padding to bring the header to
-     * a size that is a multiple of 8.
-     */
-    char pad[4];
+      /*
+       * DEC's OSF v3.0 uses 4 bytes of padding to bring the header to
+       * a size that is a multiple of 8.
+       */
+      char pad[4];
+#endif
+    };
 #endif
-  };
 
 /*
  * Histogram counters are unsigned shorts:
@@ -120,12 +136,14 @@ struct tostruct
  * as to get a packed representation (otherwise, different compilers
  * might introduce different padding):
  */
-struct raw_arc
-  {
-    char from_pc[GMON_PTR_SIZE];
-    char self_pc[GMON_PTR_SIZE];
-    char count[4];
-  };
+#if 0 /* For documentation purposes only.  */
+  struct raw_arc
+    {
+      char from_pc[sizeof(void *)];
+      char self_pc[sizeof(void *)];
+      char count[sizeof(long)];
+    };
+#endif
 
 /*
  * General rounding functions:
index bf8efef8c0915b6132da05d86f5ac2f3c23c9051..0bc5caa778c7b6a8f705bf9efb0590c43a2abd9e 100644 (file)
@@ -1,6 +1,6 @@
 /* gmon_io.c - Input and output from/to gmon.out files.
 
-   Copyright 2000, 2001 Free Software Foundation, Inc.
+   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GNU Binutils.
 
@@ -38,49 +38,81 @@ int gmon_input = 0;
 int gmon_file_version = 0;     /* 0 == old (non-versioned) file format.  */
 
 int
-DEFUN (gmon_io_read_vma, (ifp, valp), FILE * ifp AND bfd_vma *valp)
+DEFUN (gmon_io_read_32, (ifp, valp), FILE * ifp AND unsigned int *valp)
+{
+  char buf[4];
+
+  if (fread (buf, 1, 4, ifp) != 4)
+    return 1;
+  *valp = bfd_get_32 (core_bfd, buf);
+  return 0;
+}
+
+int
+DEFUN (gmon_io_read_64, (ifp, valp), FILE * ifp AND BFD_HOST_U_64_BIT *valp)
 {
   char buf[8];
-  bfd_vma val;
 
-  switch (GMON_PTR_SIZE)
+  if (fread (buf, 1, 8, ifp) != 8)
+    return 1;
+  *valp = bfd_get_64 (core_bfd, buf);
+  return 0;
+}
+
+int
+DEFUN (gmon_io_read_vma, (ifp, valp), FILE * ifp AND bfd_vma *valp)
+{
+  unsigned int val32;
+  BFD_HOST_U_64_BIT val64;
+
+  switch (bfd_arch_bits_per_address (core_bfd))
     {
-    case 4:
-      if (fread (buf, 1, 4, ifp) != 4)
+    case 32:
+      if (gmon_io_read_32 (ifp, &val32))
        return 1;
-      val = bfd_get_32 (core_bfd, buf);
+      *valp = val32;
       break;
 
-    case 8:
-      if (fread (buf, 1, 8, ifp) != 8)
+    case 64:
+      if (gmon_io_read_64 (ifp, &val64))
        return 1;
-      val = bfd_get_64 (core_bfd, buf);
+      *valp = val64;
       break;
 
     default:
-      fprintf (stderr, _("%s: GMON_PTR_SIZE has unexpected value of %u\n"),
-              whoami, GMON_PTR_SIZE);
+      fprintf (stderr, _("%s: bits per address has unexpected value of %u\n"),
+              whoami, bfd_arch_bits_per_address (core_bfd));
       done (1);
     }
-  *valp = val;
   return 0;
 }
 
 int
-DEFUN (gmon_io_read_32, (ifp, valp), FILE * ifp AND unsigned int *valp)
+DEFUN (gmon_io_read, (ifp, buf, n), FILE * ifp AND char *buf AND size_t n)
+{
+  if (fread (buf, 1, n, ifp) != n)
+    return 1;
+  return 0;
+}
+
+int
+DEFUN (gmon_io_write_32, (ofp, val), FILE * ofp AND unsigned int val)
 {
   char buf[4];
 
-  if (fread (buf, 1, 4, ifp) != 4)
+  bfd_put_32 (core_bfd, val, buf);
+  if (fwrite (buf, 1, 4, ofp) != 4)
     return 1;
-  *valp = bfd_get_32 (core_bfd, buf);
   return 0;
 }
 
 int
-DEFUN (gmon_io_read, (ifp, buf, n), FILE * ifp AND char *buf AND size_t n)
+DEFUN (gmon_io_write_64, (ofp, val), FILE * ofp AND BFD_HOST_U_64_BIT val)
 {
-  if (fread (buf, 1, n, ifp) != n)
+  char buf[8];
+
+  bfd_put_64 (core_bfd, val, buf);
+  if (fwrite (buf, 1, 8, ofp) != 8)
     return 1;
   return 0;
 }
@@ -88,41 +120,27 @@ DEFUN (gmon_io_read, (ifp, buf, n), FILE * ifp AND char *buf AND size_t n)
 int
 DEFUN (gmon_io_write_vma, (ofp, val), FILE * ofp AND bfd_vma val)
 {
-  char buf[8];
 
-  switch (GMON_PTR_SIZE)
+  switch (bfd_arch_bits_per_address (core_bfd))
     {
-    case 4:
-      bfd_put_32 (core_bfd, val, buf);
-      if (fwrite (buf, 1, 4, ofp) != 4)
+    case 32:
+      if (gmon_io_write_32 (ofp, (unsigned int) val))
        return 1;
       break;
 
-    case 8:
-      bfd_put_64 (core_bfd, val, buf);
-      if (fwrite (buf, 1, 8, ofp) != 8)
+    case 64:
+      if (gmon_io_write_64 (ofp, (BFD_HOST_U_64_BIT) val))
        return 1;
       break;
 
     default:
-      fprintf (stderr, _("%s: GMON_PTR_SIZE has unexpected value of %u\n"),
-              whoami, GMON_PTR_SIZE);
+      fprintf (stderr, _("%s: bits per address has unexpected value of %u\n"),
+              whoami, bfd_arch_bits_per_address (core_bfd));
       done (1);
     }
   return 0;
 }
 
-int
-DEFUN (gmon_io_write_32, (ofp, val), FILE * ofp AND unsigned int val)
-{
-  char buf[4];
-
-  bfd_put_32 (core_bfd, val, buf);
-  if (fwrite (buf, 1, 4, ofp) != 4)
-    return 1;
-  return 0;
-}
-
 int
 DEFUN (gmon_io_write_8, (ofp, val), FILE * ofp AND unsigned char val)
 {
@@ -142,39 +160,64 @@ DEFUN (gmon_io_write, (ofp, buf, n), FILE * ofp AND char *buf AND size_t n)
   return 0;
 }
 
-/* get_vma and put_vma are for backwards compatibility only */
-static bfd_vma
-DEFUN (get_vma, (abfd, addr), bfd * abfd AND bfd_byte * addr)
+int
+DEFUN (gmon_read_raw_arc, (ifp, fpc, spc, cnt), FILE * ifp AND bfd_vma * fpc AND bfd_vma * spc AND unsigned long * cnt)
 {
-  switch (sizeof (char*))
+  BFD_HOST_U_64_BIT cnt64;
+  unsigned int cnt32;
+
+  if (gmon_io_read_vma (ifp, fpc)
+      || gmon_io_read_vma (ifp, spc))
+    return 1;
+
+  switch (bfd_arch_bits_per_address (core_bfd))
     {
-    case 4:
-      return bfd_get_32 (abfd, addr);
-    case 8:
-      return bfd_get_64 (abfd, addr);
+    case 32:
+      if (gmon_io_read_32 (ifp, &cnt32))
+       return 1;
+      *cnt = cnt32;
+      break;
+
+    case 64:
+      if (gmon_io_read_64 (ifp, &cnt64))
+       return 1;
+      *cnt = cnt64;
+      break;
+
     default:
-      fprintf (stderr, _("%s: bfd_vma has unexpected size of %ld bytes\n"),
-              whoami, (long) sizeof (char*));
+      fprintf (stderr, _("%s: bits per address has unexpected value of %u\n"),
+              whoami, bfd_arch_bits_per_address (core_bfd));
       done (1);
     }
+  return 0;
 }
 
-static void
-DEFUN (put_vma, (abfd, val, addr), bfd * abfd AND bfd_vma val AND bfd_byte * addr)
+int
+DEFUN (gmon_write_raw_arc, (ofp, fpc, spc, cnt), FILE * ofp AND bfd_vma fpc AND bfd_vma spc AND unsigned long cnt)
 {
-  switch (sizeof (char*))
+
+  if (gmon_io_write_vma (ofp, fpc)
+      || gmon_io_write_vma (ofp, spc))
+    return 1;
+
+  switch (bfd_arch_bits_per_address (core_bfd))
     {
-    case 4:
-      bfd_put_32 (abfd, val, addr);
+    case 32:
+      if (gmon_io_write_32 (ofp, (unsigned int) cnt))
+       return 1;
       break;
-    case 8:
-      bfd_put_64 (abfd, val, addr);
+
+    case 64:
+      if (gmon_io_write_64 (ofp, (BFD_HOST_U_64_BIT) cnt))
+       return 1;
       break;
+
     default:
-      fprintf (stderr, _("%s: bfd_vma has unexpected size of %ld bytes\n"),
-              whoami, (long) sizeof (char*));
+      fprintf (stderr, _("%s: bits per address has unexpected value of %u\n"),
+              whoami, bfd_arch_bits_per_address (core_bfd));
       done (1);
     }
+  return 0;
 }
 
 void
@@ -273,14 +316,13 @@ DEFUN (gmon_out_read, (filename), const char *filename)
        bfd_vma high_pc;
        int ncnt;
       };
-      int i, samp_bytes, header_size;
+      int i, samp_bytes, header_size = 0;
       unsigned long count;
       bfd_vma from_pc, self_pc;
-      struct raw_arc raw_arc;
-      struct raw_phdr raw;
       static struct hdr h;
       UNIT raw_bin_count;
       struct hdr tmp;
+      int version;
 
       /* Information from a gmon.out file is in two parts: an array of
         sampling hits within pc ranges, and the arcs.  */
@@ -295,25 +337,29 @@ DEFUN (gmon_out_read, (filename), const char *filename)
          done (1);
        }
 
-      if (fread (&raw, 1, sizeof (struct raw_phdr), ifp)
-         != sizeof (struct raw_phdr))
+      /* The beginning of the old BSD header and the 4.4BSD header
+        are the same: lowpc, highpc, ncnt  */
+      if (gmon_io_read_vma (ifp, &tmp.low_pc)
+          || gmon_io_read_vma (ifp, &tmp.high_pc)
+          || gmon_io_read_32 (ifp, &tmp.ncnt))
        {
-         fprintf (stderr, _("%s: file too short to be a gmon file\n"),
+ bad_gmon_file:
+          fprintf (stderr, _("%s: file too short to be a gmon file\n"),
                   filename);
          done (1);
        }
 
-      tmp.low_pc = get_vma (core_bfd, (bfd_byte *) &raw.low_pc[0]);
-      tmp.high_pc = get_vma (core_bfd, (bfd_byte *) &raw.high_pc[0]);
-      tmp.ncnt = bfd_get_32 (core_bfd, (bfd_byte *) &raw.ncnt[0]);
+      /* Check to see if this a 4.4BSD-style header.  */
+      if (gmon_io_read_32 (ifp, &version))
+       goto bad_gmon_file;
 
-      if (bfd_get_32 (core_bfd, (bfd_byte *) &raw.version[0])
-         == GMONVERSION)
+      if (version == GMONVERSION)
        {
          int profrate;
 
          /* 4.4BSD format header.  */
-         profrate = bfd_get_32 (core_bfd, (bfd_byte *) &raw.profrate[0]);
+          if (gmon_io_read_32 (ifp, &profrate))
+           goto bad_gmon_file;
 
          if (!s_highpc)
            hz = profrate;
@@ -325,7 +371,22 @@ DEFUN (gmon_out_read, (filename), const char *filename)
              done (1);
            }
 
-         header_size = sizeof (struct raw_phdr);
+         switch (bfd_arch_bits_per_address (core_bfd))
+           {
+           case 32:
+             header_size = GMON_HDRSIZE_BSD44_32;
+             break;
+
+           case 64:
+             header_size = GMON_HDRSIZE_BSD44_64;
+             break;
+
+           default:
+              fprintf (stderr,
+                       _("%s: bits per address has unexpected value of %u\n"),
+                      whoami, bfd_arch_bits_per_address (core_bfd));
+              done (1);
+           }
        }
       else
        {
@@ -337,13 +398,29 @@ DEFUN (gmon_out_read, (filename), const char *filename)
              done (1);
            }
 
-         if (fseek (ifp, sizeof (struct old_raw_phdr), SEEK_SET) < 0)
+         switch (bfd_arch_bits_per_address (core_bfd))
            {
-             perror (filename);
-             done (1);
+           case 32:
+             header_size = GMON_HDRSIZE_OLDBSD_32;
+             break;
+
+           case 64:
+             header_size = GMON_HDRSIZE_OLDBSD_64;
+             break;
+
+           default:
+              fprintf (stderr,
+                       _("%s: bits per address has unexpected value of %u\n"),
+                      whoami, bfd_arch_bits_per_address (core_bfd));
+              done (1);
            }
+       }
 
-         header_size = sizeof (struct old_raw_phdr);
+      /* Position the file to after the header.  */
+      if (fseek (ifp, header_size, SEEK_SET) < 0)
+       {
+         perror (filename);
+         done (1);
        }
 
       if (s_highpc && (tmp.low_pc != h.low_pc
@@ -408,12 +485,9 @@ DEFUN (gmon_out_read, (filename), const char *filename)
 
       /* The rest of the file consists of a bunch of
         <from,self,count> tuples.  */
-      while (fread (&raw_arc, sizeof (raw_arc), 1, ifp) == 1)
+      while (gmon_read_raw_arc (ifp, &from_pc, &self_pc, &count) == 0)
        {
          ++narcs;
-         from_pc = get_vma (core_bfd, (bfd_byte *) raw_arc.from_pc);
-         self_pc = get_vma (core_bfd, (bfd_byte *) raw_arc.self_pc);
-         count = bfd_get_32 (core_bfd, (bfd_byte *) raw_arc.count);
 
          DBG (SAMPLEDEBUG,
             printf ("[gmon_out_read] frompc 0x%lx selfpc 0x%lx count %lu\n",
@@ -503,43 +577,97 @@ DEFUN (gmon_out_write, (filename), const char *filename)
     }
   else if (file_format == FF_BSD || file_format == FF_BSD44)
     {
-      struct raw_arc raw_arc;
       UNIT raw_bin_count;
-      struct raw_phdr h;
-      int i;
+      int i, hdrsize;
+      unsigned padsize;
+      char pad[3*4];
       Arc *arc;
       Sym *sym;
 
-      memset (&h, 0, sizeof h);
-      put_vma (core_bfd, s_lowpc, (bfd_byte *) &h.low_pc);
-      put_vma (core_bfd, s_highpc, (bfd_byte *) &h.high_pc);
-      bfd_put_32 (core_bfd,
-                 hist_num_bins * sizeof (UNIT) + sizeof (struct raw_phdr),
-                 (bfd_byte *) &h.ncnt);
+      memset (pad, 0, sizeof (pad));
 
-      /* Write header.  Use new style BSD format is explicitly
-        specified, or if the profiling rate is non-standard;
-        otherwise, use the old BSD format.  */
+      hdrsize = 0;
+      /* Decide how large the header will be.  Use the 4.4BSD format
+         header if explicitly specified, or if the profiling rate is
+         non-standard.  Otherwise, use the old BSD format.  */
       if (file_format == FF_BSD44
-         || hz != hertz ())
+         || hz != hertz())
        {
-         bfd_put_32 (core_bfd, GMONVERSION, (bfd_byte *) &h.version);
-         bfd_put_32 (core_bfd, hz, (bfd_byte *) &h.profrate);
-         if (fwrite (&h, sizeof (struct raw_phdr), 1, ofp) != 1)
+         padsize = 3*4;
+         switch (bfd_arch_bits_per_address (core_bfd))
            {
-             perror (filename);
-             done (1);
+           case 32:
+             hdrsize = GMON_HDRSIZE_BSD44_32;
+             break;
+
+           case 64:
+             hdrsize = GMON_HDRSIZE_BSD44_64;
+             break;
+
+           default:
+              fprintf (stderr,
+                       _("%s: bits per address has unexpected value of %u\n"),
+                      whoami, bfd_arch_bits_per_address (core_bfd));
+              done (1);
            }
        }
       else
        {
-         if (fwrite (&h, sizeof (struct old_raw_phdr), 1, ofp) != 1)
+         padsize = 0;
+         switch (bfd_arch_bits_per_address (core_bfd))
+           {
+           case 32:
+             hdrsize = GMON_HDRSIZE_OLDBSD_32;
+             break;
+
+           case 64:
+             hdrsize = GMON_HDRSIZE_OLDBSD_64;
+             /* FIXME: Checking host compiler defines here means that we can't
+                use a cross gprof alpha OSF.  */ 
+#if defined(__alpha__) && defined (__osf__)
+             padsize = 4;
+#endif
+             break;
+
+           default:
+              fprintf (stderr,
+                       _("%s: bits per address has unexpected value of %u\n"),
+                      whoami, bfd_arch_bits_per_address (core_bfd));
+              done (1);
+           }
+       }
+
+      /* Write the parts of the headers that are common to both the
+        old BSD and 4.4BSD formats.  */
+      if (gmon_io_write_vma (ofp, s_lowpc)
+          || gmon_io_write_vma (ofp, s_highpc)
+          || gmon_io_write_32 (ofp, hist_num_bins * sizeof (UNIT) + hdrsize))
+       {
+         perror (filename);
+         done (1);
+       }
+
+      /* Write out the 4.4BSD header bits, if that's what we're using.  */
+      if (file_format == FF_BSD44
+         || hz != hertz())
+       {
+          if (gmon_io_write_32 (ofp, GMONVERSION)
+             || gmon_io_write_32 (ofp, hz))
            {
              perror (filename);
              done (1);
            }
        }
 
+      /* Now write out any necessary padding after the meaningful
+        header bits.  */
+      if (padsize != 0
+          && fwrite (pad, 1, padsize, ofp) != padsize)
+        {
+          perror (filename);
+         done (1);
+       }
+
       /* Dump the samples.  */
       for (i = 0; i < hist_num_bins; ++i)
        {
@@ -556,12 +684,8 @@ DEFUN (gmon_out_write, (filename), const char *filename)
        {
          for (arc = sym->cg.children; arc; arc = arc->next_child)
            {
-             put_vma (core_bfd, arc->parent->addr,
-                      (bfd_byte *) raw_arc.from_pc);
-             put_vma (core_bfd, arc->child->addr,
-                      (bfd_byte *) raw_arc.self_pc);
-             bfd_put_32 (core_bfd, arc->count, (bfd_byte *) raw_arc.count);
-             if (fwrite (&raw_arc, sizeof (raw_arc), 1, ofp) != 1)
+             if (gmon_write_raw_arc (ofp, arc->parent->addr,
+                                     arc->child->addr, arc->count))
                {
                  perror (filename);
                  done (1);
index 5eb13e4620a4f3f94ccca72cc004576e8c35ba69..f586066b1fccf248a2cf70591d5a9c25667136cb 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2002-01-17 14:03+0000\n"
+"POT-Creation-Date: 2002-01-31 18:32+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,46 +14,46 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: alpha.c:90
+#: alpha.c:93 mips.c:47
 msgid "<indirect child>"
 msgstr ""
 
-#: alpha.c:107
+#: alpha.c:110 mips.c:64
 #, c-format
 msgid "[find_call] %s: 0x%lx to 0x%lx\n"
 msgstr ""
 
-#: alpha.c:129
+#: alpha.c:132
 #, c-format
 msgid "[find_call] 0x%lx: jsr%s <indirect_child>\n"
 msgstr ""
 
-#: alpha.c:138
+#: alpha.c:142
 #, c-format
 msgid "[find_call] 0x%lx: bsr"
 msgstr ""
 
-#: basic_blocks.c:124 call_graph.c:87 hist.c:92
+#: basic_blocks.c:122 call_graph.c:90 hist.c:93
 #, c-format
 msgid "%s: %s: unexpected end of file\n"
 msgstr ""
 
-#: basic_blocks.c:192
+#: basic_blocks.c:190
 #, c-format
 msgid "%s: warning: ignoring basic-block exec counts (use -l or --line)\n"
 msgstr ""
 
 #. FIXME: This only works if bfd_vma is unsigned long.
-#: basic_blocks.c:283 basic_blocks.c:293
+#: basic_blocks.c:281 basic_blocks.c:291
 #, c-format
 msgid "%s:%d: (%s:0x%lx) %lu executions\n"
 msgstr ""
 
-#: basic_blocks.c:284 basic_blocks.c:294
+#: basic_blocks.c:282 basic_blocks.c:292
 msgid "<unknown>"
 msgstr ""
 
-#: basic_blocks.c:538
+#: basic_blocks.c:536
 #, c-format
 msgid ""
 "\n"
@@ -64,284 +64,280 @@ msgid ""
 "\n"
 msgstr ""
 
-#: basic_blocks.c:562
+#: basic_blocks.c:560
 msgid ""
 "\n"
 "Execution Summary:\n"
 "\n"
 msgstr ""
 
-#: basic_blocks.c:563
+#: basic_blocks.c:561
 #, c-format
 msgid "%9ld   Executable lines in this file\n"
 msgstr ""
 
-#: basic_blocks.c:565
+#: basic_blocks.c:563
 #, c-format
 msgid "%9ld   Lines executed\n"
 msgstr ""
 
-#: basic_blocks.c:566
+#: basic_blocks.c:564
 #, c-format
 msgid "%9.2f   Percent of the file executed\n"
 msgstr ""
 
-#: basic_blocks.c:570
+#: basic_blocks.c:568
 #, c-format
 msgid ""
 "\n"
 "%9lu   Total number of line executions\n"
 msgstr ""
 
-#: basic_blocks.c:572
+#: basic_blocks.c:570
 #, c-format
 msgid "%9.2f   Average executions per line\n"
 msgstr ""
 
-#: call_graph.c:66
+#: call_graph.c:69
 #, c-format
 msgid "[cg_tally] arc from %s to %s traversed %lu times\n"
 msgstr ""
 
-#: cg_print.c:54
+#: cg_print.c:58
 msgid ""
 "\t\t     Call graph (explanation follows)\n"
 "\n"
 msgstr ""
 
-#: cg_print.c:56
+#: cg_print.c:60
 msgid ""
 "\t\t\tCall graph\n"
 "\n"
 msgstr ""
 
-#: cg_print.c:59 hist.c:354
+#: cg_print.c:63 hist.c:355
 #, c-format
 msgid ""
 "\n"
 "granularity: each sample hit covers %ld byte(s)"
 msgstr ""
 
-#: cg_print.c:63
+#: cg_print.c:67
 #, c-format
 msgid ""
 " for %.2f%% of %.2f seconds\n"
 "\n"
 msgstr ""
 
-#: cg_print.c:67
+#: cg_print.c:71
 msgid ""
 " no time propagated\n"
 "\n"
 msgstr ""
 
-#: cg_print.c:76 cg_print.c:79 cg_print.c:81
+#: cg_print.c:80 cg_print.c:83 cg_print.c:85
 msgid "called"
 msgstr ""
 
-#: cg_print.c:76 cg_print.c:81
+#: cg_print.c:80 cg_print.c:85
 msgid "total"
 msgstr ""
 
-#: cg_print.c:76
+#: cg_print.c:80
 msgid "parents"
 msgstr ""
 
-#: cg_print.c:78 cg_print.c:79
+#: cg_print.c:82 cg_print.c:83
 msgid "index"
 msgstr ""
 
-#: cg_print.c:78
+#: cg_print.c:82
 msgid "%time"
 msgstr ""
 
-#: cg_print.c:78 cg_print.c:79
+#: cg_print.c:82 cg_print.c:83
 msgid "self"
 msgstr ""
 
-#: cg_print.c:78
+#: cg_print.c:82
 msgid "descendants"
 msgstr ""
 
-#: cg_print.c:79 hist.c:380
+#: cg_print.c:83 hist.c:381
 msgid "name"
 msgstr ""
 
-#: cg_print.c:81
+#: cg_print.c:85
 msgid "children"
 msgstr ""
 
-#: cg_print.c:86
+#: cg_print.c:90
 #, c-format
 msgid "index %% time    self  children    called     name\n"
 msgstr ""
 
-#: cg_print.c:109
+#: cg_print.c:113
 #, c-format
 msgid " <cycle %d as a whole> [%d]\n"
 msgstr ""
 
-#: cg_print.c:335
+#: cg_print.c:339
 #, c-format
 msgid "%6.6s %5.5s %7.7s %11.11s %7.7s %7.7s     <spontaneous>\n"
 msgstr ""
 
-#: cg_print.c:336
+#: cg_print.c:340
 #, c-format
 msgid "%6.6s %5.5s %7.7s %7.7s %7.7s %7.7s     <spontaneous>\n"
 msgstr ""
 
-#: cg_print.c:570
+#: cg_print.c:574
 msgid ""
 "Index by function name\n"
 "\n"
 msgstr ""
 
-#: cg_print.c:627 cg_print.c:636
+#: cg_print.c:631 cg_print.c:640
 #, c-format
 msgid "<cycle %d>"
 msgstr ""
 
-#: corefile.c:61
+#: corefile.c:64
 #, c-format
 msgid "%s: could not open %s.\n"
 msgstr ""
 
-#: corefile.c:75 corefile.c:109
+#: corefile.c:78 corefile.c:112
 #, c-format
 msgid "%s: unable to parse mapping file %s.\n"
 msgstr ""
 
-#: corefile.c:151
+#: corefile.c:154
 #, c-format
 msgid "%s: %s: not in a.out format\n"
 msgstr ""
 
-#: corefile.c:162
+#: corefile.c:165
 #, c-format
 msgid "%s: can't find .text section in %s\n"
 msgstr ""
 
-#: corefile.c:220
+#: corefile.c:223
 #, c-format
 msgid "%s: ran out room for %lu bytes of text space\n"
 msgstr ""
 
-#: corefile.c:234
+#: corefile.c:237
 #, c-format
 msgid "%s: can't do -c\n"
 msgstr ""
 
-#: corefile.c:265
+#: corefile.c:272
 #, c-format
 msgid "%s: -c not supported on architecture %s\n"
 msgstr ""
 
-#: corefile.c:432
+#: corefile.c:439
 #, c-format
 msgid "%s: file `%s' has no symbols\n"
 msgstr ""
 
-#: corefile.c:732
+#: corefile.c:739
 #, c-format
 msgid "%s: somebody miscounted: ltab.len=%d instead of %ld\n"
 msgstr ""
 
-#: gmon_io.c:59 gmon_io.c:106
+#: gmon_io.c:83 gmon_io.c:137 gmon_io.c:188 gmon_io.c:216 gmon_io.c:386
+#: gmon_io.c:413 gmon_io.c:609 gmon_io.c:634
 #, c-format
-msgid "%s: GMON_PTR_SIZE has unexpected value of %u\n"
+msgid "%s: bits per address has unexpected value of %u\n"
 msgstr ""
 
-#: gmon_io.c:154 gmon_io.c:172
-#, c-format
-msgid "%s: bfd_vma has unexpected size of %ld bytes\n"
-msgstr ""
-
-#: gmon_io.c:207 gmon_io.c:299
+#: gmon_io.c:252 gmon_io.c:347
 #, c-format
 msgid "%s: file too short to be a gmon file\n"
 msgstr ""
 
-#: gmon_io.c:217 gmon_io.c:333
+#: gmon_io.c:262 gmon_io.c:396
 #, c-format
 msgid "%s: file `%s' has bad magic cookie\n"
 msgstr ""
 
-#: gmon_io.c:228
+#: gmon_io.c:273
 #, c-format
 msgid "%s: file `%s' has unsupported version %d\n"
 msgstr ""
 
-#: gmon_io.c:258
+#: gmon_io.c:303
 #, c-format
 msgid "%s: %s: found bad tag %d (file corrupted?)\n"
 msgstr ""
 
-#: gmon_io.c:321
+#: gmon_io.c:369
 #, c-format
 msgid "%s: profiling rate incompatible with first gmon file\n"
 msgstr ""
 
-#: gmon_io.c:350
+#: gmon_io.c:429
 #, c-format
 msgid "%s: incompatible with first gmon file\n"
 msgstr ""
 
-#: gmon_io.c:378
+#: gmon_io.c:457
 #, c-format
 msgid "%s: file '%s' does not appear to be in gmon.out format\n"
 msgstr ""
 
-#: gmon_io.c:399
+#: gmon_io.c:478
 #, c-format
 msgid "%s: unexpected EOF after reading %d/%d bins\n"
 msgstr ""
 
-#: gmon_io.c:435
+#: gmon_io.c:511
 msgid "time is in ticks, not seconds\n"
 msgstr ""
 
-#: gmon_io.c:441 gmon_io.c:578
+#: gmon_io.c:517 gmon_io.c:704
 #, c-format
 msgid "%s: don't know how to deal with file format %d\n"
 msgstr ""
 
-#: gmon_io.c:448
+#: gmon_io.c:524
 #, c-format
 msgid "File `%s' (version %d) contains:\n"
 msgstr ""
 
-#: gmon_io.c:451
+#: gmon_io.c:527
 #, c-format
 msgid "\t%d histogram record\n"
 msgstr ""
 
-#: gmon_io.c:452
+#: gmon_io.c:528
 #, c-format
 msgid "\t%d histogram records\n"
 msgstr ""
 
-#: gmon_io.c:454
+#: gmon_io.c:530
 #, c-format
 msgid "\t%d call-graph record\n"
 msgstr ""
 
-#: gmon_io.c:455
+#: gmon_io.c:531
 #, c-format
 msgid "\t%d call-graph records\n"
 msgstr ""
 
-#: gmon_io.c:457
+#: gmon_io.c:533
 #, c-format
 msgid "\t%d basic-block count record\n"
 msgstr ""
 
-#: gmon_io.c:458
+#: gmon_io.c:534
 #, c-format
 msgid "\t%d basic-block count records\n"
 msgstr ""
 
-#: gprof.c:145
+#: gprof.c:147
 #, c-format
 msgid ""
 "Usage: %s [-[abcDhilLsTvwxyz]] [-[ACeEfFJnNOpPqQZ][name]] [-I dirs]\n"
@@ -359,119 +355,119 @@ msgid ""
 "\t[image-file] [profile-file...]\n"
 msgstr ""
 
-#: gprof.c:161
+#: gprof.c:163
 #, c-format
 msgid "Report bugs to %s\n"
 msgstr ""
 
-#: gprof.c:233
+#: gprof.c:235
 #, c-format
 msgid "%s: debugging not supported; -d ignored\n"
 msgstr ""
 
-#: gprof.c:313
+#: gprof.c:315
 #, c-format
 msgid "%s: unknown file format %s\n"
 msgstr ""
 
 #. This output is intended to follow the GNU standards document.
-#: gprof.c:397
+#: gprof.c:399
 #, c-format
 msgid "GNU gprof %s\n"
 msgstr ""
 
-#: gprof.c:398
+#: gprof.c:400
 msgid ""
 "Based on BSD gprof, copyright 1983 Regents of the University of California.\n"
 msgstr ""
 
-#: gprof.c:399
+#: gprof.c:401
 msgid ""
 "This program is free software.  This program has absolutely no warranty.\n"
 msgstr ""
 
-#: gprof.c:440
+#: gprof.c:442
 #, c-format
 msgid "%s: unknown demangling style `%s'\n"
 msgstr ""
 
-#: gprof.c:460
+#: gprof.c:462
 #, c-format
 msgid ""
 "%s: Only one of --function-ordering and --file-ordering may be specified.\n"
 msgstr ""
 
-#: gprof.c:560
+#: gprof.c:562
 #, c-format
 msgid "%s: sorry, file format `prof' is not yet supported\n"
 msgstr ""
 
-#: gprof.c:621
+#: gprof.c:623
 #, c-format
 msgid "%s: gmon.out file is missing histogram\n"
 msgstr ""
 
-#: gprof.c:628
+#: gprof.c:630
 #, c-format
 msgid "%s: gmon.out file is missing call-graph data\n"
 msgstr ""
 
-#: hist.c:121
+#: hist.c:122
 #, c-format
 msgid "%s: `%s' is incompatible with first gmon file\n"
 msgstr ""
 
-#: hist.c:137
+#: hist.c:138
 #, c-format
 msgid "%s: %s: unexpected EOF after reading %d of %d samples\n"
 msgstr ""
 
-#: hist.c:350
+#: hist.c:351
 #, c-format
 msgid "%c%c/call"
 msgstr ""
 
-#: hist.c:358
+#: hist.c:359
 #, c-format
 msgid ""
 " for %.2f%% of %.2f %s\n"
 "\n"
 msgstr ""
 
-#: hist.c:364
+#: hist.c:365
 #, c-format
 msgid ""
 "\n"
 "Each sample counts as %g %s.\n"
 msgstr ""
 
-#: hist.c:369
+#: hist.c:370
 msgid ""
 " no time accumulated\n"
 "\n"
 msgstr ""
 
-#: hist.c:376
+#: hist.c:377
 msgid "cumulative"
 msgstr ""
 
-#: hist.c:376
+#: hist.c:377
 msgid "self  "
 msgstr ""
 
-#: hist.c:376
+#: hist.c:377
 msgid "total "
 msgstr ""
 
-#: hist.c:379
+#: hist.c:380
 msgid "time"
 msgstr ""
 
-#: hist.c:379
+#: hist.c:380
 msgid "calls"
 msgstr ""
 
-#: hist.c:468
+#: hist.c:469
 msgid ""
 "\n"
 "\n"
@@ -479,10 +475,20 @@ msgid ""
 "flat profile:\n"
 msgstr ""
 
-#: hist.c:474
+#: hist.c:475
 msgid "Flat profile:\n"
 msgstr ""
 
+#: mips.c:75
+#, c-format
+msgid "[find_call] 0x%lx: jal"
+msgstr ""
+
+#: mips.c:100
+#, c-format
+msgid "[find_call] 0x%lx: jalr\n"
+msgstr ""
+
 #: source.c:163
 #, c-format
 msgid "%s: could not locate `%s'\n"
@@ -493,7 +499,7 @@ msgstr ""
 msgid "*** File %s:\n"
 msgstr ""
 
-#: utils.c:94
+#: utils.c:96
 #, c-format
 msgid " <cycle %d>"
 msgstr ""