summaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2001-06-09 22:47:47 +0000
committerMarc Espie <espie@cvs.openbsd.org>2001-06-09 22:47:47 +0000
commit6ce0926cda843b175329622f91a1996bbbf85ebe (patch)
tree9738b61caaf1e36e2f04efb082c02f52b72b0f0e /gnu/usr.bin
parentcf0c03b4e5ece56c65de27fda948714a30ec4c76 (diff)
bye bye
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/binutils/etc/configbuild.jinbin11123 -> 0 bytes
-rw-r--r--gnu/usr.bin/binutils/etc/configdev.jinbin17967 -> 0 bytes
-rw-r--r--gnu/usr.bin/binutils/etc/configure.info-3285
-rw-r--r--gnu/usr.bin/binutils/gas/doc/as.info-81042
-rw-r--r--gnu/usr.bin/binutils/gprof/gprof.info-11121
-rw-r--r--gnu/usr.bin/binutils/gprof/gprof.info-2760
6 files changed, 0 insertions, 3208 deletions
diff --git a/gnu/usr.bin/binutils/etc/configbuild.jin b/gnu/usr.bin/binutils/etc/configbuild.jin
deleted file mode 100644
index 44cd9397aa1..00000000000
--- a/gnu/usr.bin/binutils/etc/configbuild.jin
+++ /dev/null
Binary files differ
diff --git a/gnu/usr.bin/binutils/etc/configdev.jin b/gnu/usr.bin/binutils/etc/configdev.jin
deleted file mode 100644
index 9b11a71acd7..00000000000
--- a/gnu/usr.bin/binutils/etc/configdev.jin
+++ /dev/null
Binary files differ
diff --git a/gnu/usr.bin/binutils/etc/configure.info-3 b/gnu/usr.bin/binutils/etc/configure.info-3
deleted file mode 100644
index bf1dcc076b1..00000000000
--- a/gnu/usr.bin/binutils/etc/configure.info-3
+++ /dev/null
@@ -1,285 +0,0 @@
-This is configure.info, produced by makeinfo version 4.0 from
-./configure.texi.
-
-INFO-DIR-SECTION GNU admin
-START-INFO-DIR-ENTRY
-* configure: (configure). The GNU configure and build system
-END-INFO-DIR-ENTRY
-
- This file documents the GNU configure and build system.
-
- Copyright (C) 1998 Cygnus Solutions.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: configure.info, Node: Multilibs in Target Libraries, Prev: Multilibs in gcc, Up: Multilibs
-
-Multilibs in Target Libraries
-=============================
-
- The target libraries in the Cygnus tree are automatically built with
-multilibs. That means that each library is built multiple times.
-
- This default is set in the top level `configure.in' file, by adding
-`--enable-multilib' to the list of arguments passed to configure when
-it is run for the target libraries (*note Host and Target Libraries::).
-
- Each target library uses the shell script `config-ml.in', written by
-Doug Evans, to prepare to build target libraries. This shell script is
-invoked after the `Makefile' has been created by the `configure'
-script. If multilibs are not enabled, it does nothing, otherwise it
-modifies the `Makefile' to support multilibs.
-
- The `config-ml.in' script makes one copy of the `Makefile' for each
-multilib in the appropriate subdirectory. When configuring in the
-source directory (which is not recommended), it will build a symlink
-tree of the sources in each subdirectory.
-
- The `config-ml.in' script sets several variables in the various
-`Makefile's. The `Makefile.in' must have definitions for these
-variables already; `config-ml.in' simply changes the existing values.
-The `Makefile' should use default values for these variables which will
-do the right thing in the subdirectories.
-
-`MULTISRCTOP'
- `config-ml.in' will set this to a sequence of `../' strings, where
- the number of strings is the number of multilib levels in the
- source tree. The default value should be the empty string.
-
-`MULTIBUILDTOP'
- `config-ml.in' will set this to a sequence of `../' strings, where
- the number of strings is number of multilib levels in the object
- directory. The default value should be the empty string. This
- will differ from `MULTISRCTOP' when configuring in the source tree
- (which is not recommended).
-
-`MULTIDIRS'
- In the top level `Makefile' only, `config-ml.in' will set this to
- the list of multilib subdirectories. The default value should be
- the empty string.
-
-`MULTISUBDIR'
- `config-ml.in' will set this to the installed subdirectory name to
- use for this subdirectory, with a leading `/'. The default value
- shold be the empty string.
-
-`MULTIDO'
-`MULTICLEAN'
- In the top level `Makefile' only, `config-ml.in' will set these
- variables to commands to use when doing a recursive make. These
- variables should both default to the string `true', so that by
- default nothing happens.
-
- All references to the parent of the source directory should use the
-variable `MULTISRCTOP'. Instead of writing `$(srcdir)/..', you must
-write `$(srcdir)/$(MULTISRCTOP)..'.
-
- Similarly, references to the parent of the object directory should
-use the variable `MULTIBUILDTOP'.
-
- In the installation target, the libraries should be installed in the
-subdirectory `MULTISUBDIR'. Instead of installing
-`$(libdir)/libfoo.a', install `$(libdir)$(MULTISUBDIR)/libfoo.a'.
-
- The `config-ml.in' script also modifies the top level `Makefile' to
-add `multi-do' and `multi-clean' targets which are used when building
-multilibs.
-
- The default target of the `Makefile' should include the following
-command:
- @$(MULTIDO) $(FLAGS_TO_PASS) DO=all multi-do
-
-This assumes that `$(FLAGS_TO_PASS)' is defined as a set of variables
-to pass to a recursive invocation of `make'. This will build all the
-multilibs. Note that the default value of `MULTIDO' is `true', so by
-default this command will do nothing. It will only do something in the
-top level `Makefile' if multilibs were enabled.
-
- The `install' target of the `Makefile' should include the following
-command:
- @$(MULTIDO) $(FLAGS_TO_PASS) DO=install multi-do
-
- In general, any operation, other than clean, which should be
-performed on all the multilibs should use a `$(MULTIDO)' line, setting
-the variable `DO' to the target of each recursive call to `make'.
-
- The `clean' targets (`clean', `mostlyclean', etc.) should use
-`$(MULTICLEAN)'. For example, the `clean' target should do this:
- @$(MULTICLEAN) DO=clean multi-clean
-
-
-File: configure.info, Node: FAQ, Next: Index, Prev: Multilibs, Up: Top
-
-Frequently Asked Questions
-**************************
-
-Which do I run first, `autoconf' or `automake'?
- Except when you first add autoconf or automake support to a
- package, you shouldn't run either by hand. Instead, configure
- with the `--enable-maintainer-mode' option, and let `make' take
- care of it.
-
-`autoconf' says something about undefined macros.
- This means that you have macros in your `configure.in' which are
- not defined by `autoconf'. You may be using an old version of
- `autoconf'; try building and installing a newer one. Make sure the
- newly installled `autoconf' is first on your `PATH'. Also, see
- the next question.
-
-My `configure' script has stuff like `CY_GNU_GETTEXT' in it.
- This means that you have macros in your `configure.in' which should
- be defined in your `aclocal.m4' file, but aren't. This usually
- means that `aclocal' was not able to appropriate definitions of the
- macros. Make sure that you have installed all the packages you
- need. In particular, make sure that you have installed libtool
- (this is where `AM_PROG_LIBTOOL' is defined) and gettext (this is
- where `CY_GNU_GETTEXT' is defined, at least in the Cygnus version
- of gettext).
-
-My `Makefile' has `@' characters in it.
- This may mean that you tried to use an autoconf substitution in
- your `Makefile.in' without adding the appropriate `AC_SUBST' call
- to your `configure' script. Or it may just mean that you need to
- rebuild `Makefile' in your build directory. To rebuild `Makefile'
- from `Makefile.in', run the shell script `config.status' with no
- arguments. If you need to force `configure' to run again, first
- run `config.status --recheck'. These runs are normally done
- automatically by `Makefile' targets, but if your `Makefile' has
- gotten messed up you'll need to help them along.
-
-Why do I have to run both `config.status --recheck' and `config.status'?
- Normally, you don't; they will be run automatically by `Makefile'
- targets. If you do need to run them, use `config.status --recheck'
- to run the `configure' script again with the same arguments as the
- first time you ran it. Use `config.status' (with no arguments) to
- regenerate all files (`Makefile', `config.h', etc.) based on the
- results of the configure script. The two cases are separate
- because it isn't always necessary to regenerate all the files
- after running `config.status --recheck'. The `Makefile' targets
- generated by automake will use the environment variables
- `CONFIG_FILES' and `CONFIG_HEADERS' to only regenerate files as
- they are needed.
-
-What is the Cygnus tree?
- The Cygnus tree is used for various packages including gdb, the GNU
- binutils, and egcs. It is also, of course, used for Cygnus
- releases. It is the build system which was developed at Cygnus,
- using the Cygnus configure script. It permits building many
- different packages with a single configure and make. The
- configure scripts in the tree are being converted to autoconf, but
- the general build structure remains intact.
-
-Why do I have to keep rebuilding and reinstalling the tools?
- I know, it's a pain. Unfortunately, there are bugs in the tools
- themselves which need to be fixed, and each time that happens
- everybody who uses the tools need to reinstall new versions of
- them. I don't know if there is going to be a clever fix until the
- tools stabilize.
-
-Why not just have a Cygnus tree `make' target to update the tools?
- The tools unfortunately need to be installed before they can be
- used. That means that they must be built using an appropriate
- prefix, and it seems unwise to assume that every configuration
- uses an appropriate prefix. It might be possible to make them
- work in place, or it might be possible to install them in some
- subdirectory; so far these approaches have not been implemented.
-
-
-File: configure.info, Node: Index, Prev: FAQ, Up: Top
-
-Index
-*****
-
-* Menu:
-
-* --build option: Build and Host Options.
-* --host option: Build and Host Options.
-* --target option: Specifying the Target.
-* _GNU_SOURCE: Write configure.in.
-* AC_CANONICAL_HOST: Using the Host Type.
-* AC_CANONICAL_SYSTEM: Using the Target Type.
-* AC_CONFIG_HEADER: Write configure.in.
-* AC_EXEEXT: Write configure.in.
-* AC_INIT: Write configure.in.
-* AC_OUTPUT: Write configure.in.
-* AC_PREREQ: Write configure.in.
-* AC_PROG_CC: Write configure.in.
-* AC_PROG_CXX: Write configure.in.
-* acconfig.h: Written Developer Files.
-* acconfig.h, writing: Write acconfig.h.
-* acinclude.m4: Written Developer Files.
-* aclocal.m4: Generated Developer Files.
-* AM_CONFIG_HEADER: Write configure.in.
-* AM_DISABLE_SHARED: Write configure.in.
-* AM_EXEEXT: Write configure.in.
-* AM_INIT_AUTOMAKE: Write configure.in.
-* AM_MAINTAINER_MODE: Write configure.in.
-* AM_PROG_LIBTOOL: Write configure.in.
-* AM_PROG_LIBTOOL in configure: FAQ.
-* build option: Build and Host Options.
-* building with a cross compiler: Canadian Cross.
-* canadian cross: Canadian Cross.
-* canadian cross in configure: CCross in Configure.
-* canadian cross in cygnus tree: CCross in Cygnus Tree.
-* canadian cross in makefile: CCross in Make.
-* canadian cross, configuring: Build and Host Options.
-* canonical system names: Configuration Names.
-* config.cache: Build Files Description.
-* config.h: Build Files Description.
-* config.h.in: Generated Developer Files.
-* config.in: Generated Developer Files.
-* config.status: Build Files Description.
-* config.status --recheck: FAQ.
-* configuration names: Configuration Names.
-* configuration triplets: Configuration Names.
-* configure: Generated Developer Files.
-* configure build system: Build and Host Options.
-* configure host: Build and Host Options.
-* configure target: Specifying the Target.
-* configure.in: Written Developer Files.
-* configure.in, writing: Write configure.in.
-* configuring a canadian cross: Build and Host Options.
-* cross compiler: Cross Compilation Concepts.
-* cross compiler, building with: Canadian Cross.
-* cross tools: Cross Compilation Tools.
-* CY_GNU_GETTEXT in configure: FAQ.
-* cygnus configure: Cygnus Configure.
-* goals: Goals.
-* history: History.
-* host names: Configuration Names.
-* host option: Build and Host Options.
-* host system: Host and Target.
-* host triplets: Configuration Names.
-* HOST_CC: CCross in Make.
-* libg++ configure: Cygnus Configure in C++ Libraries.
-* libio configure: Cygnus Configure in C++ Libraries.
-* libstdc++ configure: Cygnus Configure in C++ Libraries.
-* Makefile: Build Files Description.
-* Makefile, garbage characters: FAQ.
-* Makefile.am: Written Developer Files.
-* Makefile.am, writing: Write Makefile.am.
-* Makefile.in: Generated Developer Files.
-* multilibs: Multilibs.
-* stamp-h: Build Files Description.
-* stamp-h.in: Generated Developer Files.
-* system names: Configuration Names.
-* system types: Configuration Names.
-* target option: Specifying the Target.
-* target system: Host and Target.
-* triplets: Configuration Names.
-* undefined macros: FAQ.
-
-
diff --git a/gnu/usr.bin/binutils/gas/doc/as.info-8 b/gnu/usr.bin/binutils/gas/doc/as.info-8
deleted file mode 100644
index 37fdb152b00..00000000000
--- a/gnu/usr.bin/binutils/gas/doc/as.info-8
+++ /dev/null
@@ -1,1042 +0,0 @@
-This is as.info, produced by makeinfo version 4.0 from as.texinfo.
-
-START-INFO-DIR-ENTRY
-* As: (as). The GNU assembler.
-END-INFO-DIR-ENTRY
-
- This file documents the GNU Assembler "as".
-
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free
-Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-
-File: as.info, Node: Index, Prev: Acknowledgements, Up: Top
-
-Index
-*****
-
-* Menu:
-
-* #: Comments.
-* #APP: Preprocessing.
-* #NO_APP: Preprocessing.
-* $ in symbol names <1>: SH-Chars.
-* $ in symbol names <2>: H8/500-Chars.
-* $ in symbol names <3>: D30V-Chars.
-* $ in symbol names: D10V-Chars.
-* -+ option, VAX/VMS: VAX-Opts.
-* --: Command Line.
-* --base-size-default-16: M68K-Opts.
-* --base-size-default-32: M68K-Opts.
-* --bitwise-or option, M680x0: M68K-Opts.
-* --disp-size-default-16: M68K-Opts.
-* --disp-size-default-32: M68K-Opts.
-* --enforce-aligned-data: Sparc-Aligned-Data.
-* --fatal-warnings: W.
-* --MD: MD.
-* --no-warn: W.
-* --register-prefix-optional option, M680x0: M68K-Opts.
-* --statistics: statistics.
-* --traditional-format: traditional-format.
-* --warn: W.
-* -1 option, VAX/VMS: VAX-Opts.
-* -a: a.
-* -A options, i960: Options-i960.
-* -ac: a.
-* -ad: a.
-* -ah: a.
-* -al: a.
-* -an: a.
-* -as: a.
-* -Asparclet: Sparc-Opts.
-* -Asparclite: Sparc-Opts.
-* -Av6: Sparc-Opts.
-* -Av8: Sparc-Opts.
-* -Av9: Sparc-Opts.
-* -Av9a: Sparc-Opts.
-* -b option, i960: Options-i960.
-* -D: D.
-* -D, ignored on VAX: VAX-Opts.
-* -d, VAX option: VAX-Opts.
-* -EB command line option, ARM: ARM Options.
-* -EB option (MIPS): MIPS Opts.
-* -EL command line option, ARM: ARM Options.
-* -EL option (MIPS): MIPS Opts.
-* -f: f.
-* -G option (MIPS): MIPS Opts.
-* -H option, VAX/VMS: VAX-Opts.
-* -h option, VAX/VMS: VAX-Opts.
-* -I PATH: I.
-* -J, ignored on VAX: VAX-Opts.
-* -K: K.
-* -k command line option, ARM: ARM Options.
-* -L: L.
-* -l option, M680x0: M68K-Opts.
-* -M: M.
-* -m68000 and related options: M68K-Opts.
-* -mall command line option, ARM: ARM Options.
-* -mapcs command line option, ARM: ARM Options.
-* -mapcs-float command line option, ARM: ARM Options.
-* -mapcs-reentrant command line option, ARM: ARM Options.
-* -marm command line option, ARM: ARM Options.
-* -marmv command line option, ARM: ARM Options.
-* -mbig-endian option (ARC): ARC-Opts.
-* -mfpa command line option, ARM: ARM Options.
-* -mfpe-old command line option, ARM: ARM Options.
-* -mlittle-endian option (ARC): ARC-Opts.
-* -mno-fpu command line option, ARM: ARM Options.
-* -moabi command line option, ARM: ARM Options.
-* -mthumb command line option, ARM: ARM Options.
-* -mthumb-interwork command line option, ARM: ARM Options.
-* -mv850 command line option, V850: V850 Options.
-* -mv850any command line option, V850: V850 Options.
-* -mv850e command line option, V850: V850 Options.
-* -no-relax option, i960: Options-i960.
-* -nocpp ignored (MIPS): MIPS Opts.
-* -o: o.
-* -R: R.
-* -S, ignored on VAX: VAX-Opts.
-* -t, ignored on VAX: VAX-Opts.
-* -T, ignored on VAX: VAX-Opts.
-* -v: v.
-* -V, redundant on VAX: VAX-Opts.
-* -version: v.
-* -W: W.
-* -wsigned_overflow command line option, V850: V850 Options.
-* -wunsigned_overflow command line option, V850: V850 Options.
-* . (symbol): Dot.
-* .insn: MIPS insn.
-* .ltorg directive, ARM: ARM Directives.
-* .o: Object.
-* .param on HPPA: HPPA Directives.
-* .pool directive, ARM: ARM Directives.
-* .set autoextend: MIPS autoextend.
-* .set mipsN: MIPS ISA.
-* .set noautoextend: MIPS autoextend.
-* .set pop: MIPS option stack.
-* .set push: MIPS option stack.
-* .v850 directive, V850: V850 Directives.
-* .v850e directive, V850: V850 Directives.
-* 16-bit code, i386: i386-16bit.
-* 29K support: AMD29K-Dependent.
-* 3DNow!, i386: i386-SIMD.
-* : (label): Statements.
-* @word modifier, D10V: D10V-Word.
-* \" (doublequote character): Strings.
-* \\ (\ character): Strings.
-* \b (backspace character): Strings.
-* \DDD (octal character code): Strings.
-* \f (formfeed character): Strings.
-* \n (newline character): Strings.
-* \r (carriage return character): Strings.
-* \t (tab): Strings.
-* \XD... (hex character code): Strings.
-* a.out: Object.
-* a.out symbol attributes: a.out Symbols.
-* ABORT directive: ABORT.
-* abort directive: Abort.
-* absolute section: Ld Sections.
-* addition, permitted arguments: Infix Ops.
-* addresses: Expressions.
-* addresses, format of: Secs Background.
-* addressing modes, D10V: D10V-Addressing.
-* addressing modes, D30V: D30V-Addressing.
-* addressing modes, H8/300: H8/300-Addressing.
-* addressing modes, H8/500: H8/500-Addressing.
-* addressing modes, M680x0: M68K-Syntax.
-* addressing modes, SH: SH-Addressing.
-* addressing modes, Z8000: Z8000-Addressing.
-* ADR reg,<label> pseudo op, ARM: ARM Opcodes.
-* ADRL reg,<label> pseudo op, ARM: ARM Opcodes.
-* advancing location counter: Org.
-* align directive: Align.
-* align directive, ARM: ARM Directives.
-* align directive, SPARC: Sparc-Directives.
-* altered difference tables: Word.
-* alternate syntax for the 680x0: M68K-Moto-Syntax.
-* AMD 29K floating point (IEEE): AMD29K Floating Point.
-* AMD 29K identifiers: AMD29K-Chars.
-* AMD 29K line comment character: AMD29K-Chars.
-* AMD 29K machine directives: AMD29K Directives.
-* AMD 29K macros: AMD29K-Macros.
-* AMD 29K opcodes: AMD29K Opcodes.
-* AMD 29K options (none): AMD29K Options.
-* AMD 29K protected registers: AMD29K-Regs.
-* AMD 29K register names: AMD29K-Regs.
-* AMD 29K special purpose registers: AMD29K-Regs.
-* AMD 29K support: AMD29K-Dependent.
-* ARC architectures: ARC-Opts.
-* ARC big-endian output: ARC-Opts.
-* ARC endianness: Overview.
-* ARC floating point (IEEE): ARC-Float.
-* ARC little-endian output: ARC-Opts.
-* ARC machine directives: ARC-Directives.
-* ARC options: ARC-Opts.
-* ARC support: ARC-Dependent.
-* architecture options, i960: Options-i960.
-* architecture options, M680x0: M68K-Opts.
-* architectures, ARC: ARC-Opts.
-* architectures, SPARC: Sparc-Opts.
-* arguments for addition: Infix Ops.
-* arguments for subtraction: Infix Ops.
-* arguments in expressions: Arguments.
-* arithmetic functions: Operators.
-* arithmetic operands: Arguments.
-* arm directive, ARM: ARM Directives.
-* ARM floating point (IEEE): ARM Floating Point.
-* ARM identifiers: ARM-Chars.
-* ARM immediate character: ARM-Chars.
-* ARM line comment character: ARM-Chars.
-* ARM line separator: ARM-Chars.
-* ARM machine directives: ARM Directives.
-* ARM opcodes: ARM Opcodes.
-* ARM options (none): ARM Options.
-* ARM register names: ARM-Regs.
-* ARM support: ARM-Dependent.
-* ascii directive: Ascii.
-* asciz directive: Asciz.
-* assembler bugs, reporting: Bug Reporting.
-* assembler crash: Bug Criteria.
-* assembler internal logic error: As Sections.
-* assembler version: v.
-* assembler, and linker: Secs Background.
-* assembly listings, enabling: a.
-* assigning values to symbols <1>: Equ.
-* assigning values to symbols: Setting Symbols.
-* attributes, symbol: Symbol Attributes.
-* auxiliary attributes, COFF symbols: COFF Symbols.
-* auxiliary symbol information, COFF: Dim.
-* Av7: Sparc-Opts.
-* backslash (\\): Strings.
-* backspace (\b): Strings.
-* balign directive: Balign.
-* balignl directive: Balign.
-* balignw directive: Balign.
-* big endian output, ARC: Overview.
-* big endian output, MIPS: Overview.
-* big endian output, PJ: Overview.
-* big-endian output, ARC: ARC-Opts.
-* big-endian output, MIPS: MIPS Opts.
-* bignums: Bignums.
-* binary integers: Integers.
-* bitfields, not supported on VAX: VAX-no.
-* block: Z8000 Directives.
-* block directive, AMD 29K: AMD29K Directives.
-* branch improvement, M680x0: M68K-Branch.
-* branch improvement, VAX: VAX-branch.
-* branch recording, i960: Options-i960.
-* branch statistics table, i960: Options-i960.
-* bss directive, i960: Directives-i960.
-* bss section <1>: bss.
-* bss section: Ld Sections.
-* bug criteria: Bug Criteria.
-* bug reports: Bug Reporting.
-* bugs in assembler: Reporting Bugs.
-* bus lock prefixes, i386: i386-Prefixes.
-* bval: Z8000 Directives.
-* byte directive: Byte.
-* call instructions, i386: i386-Mnemonics.
-* callj, i960 pseudo-opcode: callj-i960.
-* carriage return (\r): Strings.
-* character constants: Characters.
-* character escape codes: Strings.
-* character, single: Chars.
-* characters used in symbols: Symbol Intro.
-* code directive, ARM: ARM Directives.
-* code16 directive, i386: i386-16bit.
-* code16gcc directive, i386: i386-16bit.
-* code32 directive, i386: i386-16bit.
-* COFF auxiliary symbol information: Dim.
-* COFF structure debugging: Tag.
-* COFF symbol attributes: COFF Symbols.
-* COFF symbol descriptor: Desc.
-* COFF symbol storage class: Scl.
-* COFF symbol type: Type.
-* COFF symbols, debugging: Def.
-* COFF value attribute: Val.
-* COMDAT: Linkonce.
-* comm directive: Comm.
-* command line conventions: Command Line.
-* command line options, V850: V850 Options.
-* command-line options ignored, VAX: VAX-Opts.
-* comments: Comments.
-* comments, M680x0: M68K-Chars.
-* comments, removed by preprocessor: Preprocessing.
-* common directive, SPARC: Sparc-Directives.
-* common sections: Linkonce.
-* common variable storage: bss.
-* compare and jump expansions, i960: Compare-and-branch-i960.
-* compare/branch instructions, i960: Compare-and-branch-i960.
-* conditional assembly: If.
-* constant, single character: Chars.
-* constants: Constants.
-* constants, bignum: Bignums.
-* constants, character: Characters.
-* constants, converted by preprocessor: Preprocessing.
-* constants, floating point: Flonums.
-* constants, integer: Integers.
-* constants, number: Numbers.
-* constants, string: Strings.
-* conversion instructions, i386: i386-Mnemonics.
-* coprocessor wait, i386: i386-Prefixes.
-* cpu directive, SPARC: ARC-Directives.
-* cputype directive, AMD 29K: AMD29K Directives.
-* crash of assembler: Bug Criteria.
-* ctbp register, V850: V850-Regs.
-* ctoff pseudo-op, V850: V850 Opcodes.
-* ctpc register, V850: V850-Regs.
-* ctpsw register, V850: V850-Regs.
-* current address: Dot.
-* current address, advancing: Org.
-* D10V @word modifier: D10V-Word.
-* D10V addressing modes: D10V-Addressing.
-* D10V floating point: D10V-Float.
-* D10V line comment character: D10V-Chars.
-* D10V opcode summary: D10V-Opcodes.
-* D10V optimization: Overview.
-* D10V options: D10V-Opts.
-* D10V registers: D10V-Regs.
-* D10V size modifiers: D10V-Size.
-* D10V sub-instruction ordering: D10V-Chars.
-* D10V sub-instructions: D10V-Subs.
-* D10V support: D10V-Dependent.
-* D10V syntax: D10V-Syntax.
-* D30V addressing modes: D30V-Addressing.
-* D30V floating point: D30V-Float.
-* D30V Guarded Execution: D30V-Guarded.
-* D30V line comment character: D30V-Chars.
-* D30V nops: Overview.
-* D30V nops after 32-bit multiply: Overview.
-* D30V opcode summary: D30V-Opcodes.
-* D30V optimization: Overview.
-* D30V options: D30V-Opts.
-* D30V registers: D30V-Regs.
-* D30V size modifiers: D30V-Size.
-* D30V sub-instruction ordering: D30V-Chars.
-* D30V sub-instructions: D30V-Subs.
-* D30V support: D30V-Dependent.
-* D30V syntax: D30V-Syntax.
-* data alignment on SPARC: Sparc-Aligned-Data.
-* data and text sections, joining: R.
-* data directive: Data.
-* data section: Ld Sections.
-* data1 directive, M680x0: M68K-Directives.
-* data2 directive, M680x0: M68K-Directives.
-* dbpc register, V850: V850-Regs.
-* dbpsw register, V850: V850-Regs.
-* debuggers, and symbol order: Symbols.
-* debugging COFF symbols: Def.
-* decimal integers: Integers.
-* def directive: Def.
-* dependency tracking: MD.
-* deprecated directives: Deprecated.
-* desc directive: Desc.
-* descriptor, of a.out symbol: Symbol Desc.
-* dfloat directive, VAX: VAX-directives.
-* difference tables altered: Word.
-* difference tables, warning: K.
-* dim directive: Dim.
-* directives and instructions: Statements.
-* directives, M680x0: M68K-Directives.
-* directives, machine independent: Pseudo Ops.
-* directives, Z8000: Z8000 Directives.
-* displacement sizing character, VAX: VAX-operands.
-* dot (symbol): Dot.
-* double directive: Double.
-* double directive, i386: i386-Float.
-* double directive, M680x0: M68K-Float.
-* double directive, VAX: VAX-float.
-* doublequote (\"): Strings.
-* ECOFF sections: MIPS Object.
-* ecr register, V850: V850-Regs.
-* eight-byte integer: Quad.
-* eipc register, V850: V850-Regs.
-* eipsw register, V850: V850-Regs.
-* eject directive: Eject.
-* else directive: Else.
-* elseif directive: Elseif.
-* empty expressions: Empty Exprs.
-* emulation: Overview.
-* end directive: End.
-* endef directive: Endef.
-* endfunc directive: Endfunc.
-* endianness, ARC: Overview.
-* endianness, MIPS: Overview.
-* endianness, PJ: Overview.
-* endif directive: Endif.
-* endm directive: Macro.
-* EOF, newline must precede: Statements.
-* ep register, V850: V850-Regs.
-* equ directive: Equ.
-* equiv directive: Equiv.
-* err directive: Err.
-* error messsages: Errors.
-* error on valid input: Bug Criteria.
-* errors, caused by warnings: W.
-* errors, continuing after: Z.
-* ESA/390 floating point (IEEE): ESA/390 Floating Point.
-* ESA/390 support: ESA/390-Dependent.
-* ESA/390 Syntax: ESA/390 Options.
-* ESA/390-only directives: ESA/390 Directives.
-* escape codes, character: Strings.
-* even: Z8000 Directives.
-* even directive, M680x0: M68K-Directives.
-* exitm directive: Macro.
-* expr (internal section): As Sections.
-* expression arguments: Arguments.
-* expressions: Expressions.
-* expressions, empty: Empty Exprs.
-* expressions, integer: Integer Exprs.
-* extend directive M680x0: M68K-Float.
-* extended directive, i960: Directives-i960.
-* extern directive: Extern.
-* fail directive: Fail.
-* faster processing (-f): f.
-* fatal signal: Bug Criteria.
-* fepc register, V850: V850-Regs.
-* fepsw register, V850: V850-Regs.
-* ffloat directive, VAX: VAX-directives.
-* file directive: File.
-* file directive, AMD 29K: AMD29K Directives.
-* file name, logical: File.
-* files, including: Include.
-* files, input: Input Files.
-* fill directive: Fill.
-* filling memory <1>: Space.
-* filling memory: Skip.
-* float directive: Float.
-* float directive, i386: i386-Float.
-* float directive, M680x0: M68K-Float.
-* float directive, VAX: VAX-float.
-* floating point numbers: Flonums.
-* floating point numbers (double): Double.
-* floating point numbers (single) <1>: Single.
-* floating point numbers (single): Float.
-* floating point, AMD 29K (IEEE): AMD29K Floating Point.
-* floating point, ARC (IEEE): ARC-Float.
-* floating point, ARM (IEEE): ARM Floating Point.
-* floating point, D10V: D10V-Float.
-* floating point, D30V: D30V-Float.
-* floating point, ESA/390 (IEEE): ESA/390 Floating Point.
-* floating point, H8/300 (IEEE): H8/300 Floating Point.
-* floating point, H8/500 (IEEE): H8/500 Floating Point.
-* floating point, HPPA (IEEE): HPPA Floating Point.
-* floating point, i386: i386-Float.
-* floating point, i960 (IEEE): Floating Point-i960.
-* floating point, M680x0: M68K-Float.
-* floating point, SH (IEEE): SH Floating Point.
-* floating point, SPARC (IEEE): Sparc-Float.
-* floating point, V850 (IEEE): V850 Floating Point.
-* floating point, VAX: VAX-float.
-* flonums: Flonums.
-* force_thumb directive, ARM: ARM Directives.
-* format of error messages: Errors.
-* format of warning messages: Errors.
-* formfeed (\f): Strings.
-* func directive: Func.
-* functions, in expressions: Operators.
-* gbr960, i960 postprocessor: Options-i960.
-* gfloat directive, VAX: VAX-directives.
-* global: Z8000 Directives.
-* global directive: Global.
-* gp register, MIPS: MIPS Object.
-* gp register, V850: V850-Regs.
-* grouping data: Sub-Sections.
-* H8/300 addressing modes: H8/300-Addressing.
-* H8/300 floating point (IEEE): H8/300 Floating Point.
-* H8/300 line comment character: H8/300-Chars.
-* H8/300 line separator: H8/300-Chars.
-* H8/300 machine directives (none): H8/300 Directives.
-* H8/300 opcode summary: H8/300 Opcodes.
-* H8/300 options (none): H8/300 Options.
-* H8/300 registers: H8/300-Regs.
-* H8/300 size suffixes: H8/300 Opcodes.
-* H8/300 support: H8/300-Dependent.
-* H8/300H, assembling for: H8/300 Directives.
-* H8/500 addressing modes: H8/500-Addressing.
-* H8/500 floating point (IEEE): H8/500 Floating Point.
-* H8/500 line comment character: H8/500-Chars.
-* H8/500 line separator: H8/500-Chars.
-* H8/500 machine directives (none): H8/500 Directives.
-* H8/500 opcode summary: H8/500 Opcodes.
-* H8/500 options (none): H8/500 Options.
-* H8/500 registers: H8/500-Regs.
-* H8/500 support: H8/500-Dependent.
-* half directive, SPARC: Sparc-Directives.
-* hex character code (\XD...): Strings.
-* hexadecimal integers: Integers.
-* hfloat directive, VAX: VAX-directives.
-* hi pseudo-op, V850: V850 Opcodes.
-* hi0 pseudo-op, V850: V850 Opcodes.
-* hidden directive: Visibility.
-* hilo pseudo-op, V850: V850 Opcodes.
-* HPPA directives not supported: HPPA Directives.
-* HPPA floating point (IEEE): HPPA Floating Point.
-* HPPA Syntax: HPPA Options.
-* HPPA-only directives: HPPA Directives.
-* hword directive: hword.
-* i370 support: ESA/390-Dependent.
-* i386 16-bit code: i386-16bit.
-* i386 conversion instructions: i386-Mnemonics.
-* i386 floating point: i386-Float.
-* i386 immediate operands: i386-Syntax.
-* i386 instruction naming: i386-Mnemonics.
-* i386 instruction prefixes: i386-Prefixes.
-* i386 jump optimization: i386-jumps.
-* i386 jump, call, return: i386-Syntax.
-* i386 jump/call operands: i386-Syntax.
-* i386 memory references: i386-Memory.
-* i386 mul, imul instructions: i386-Notes.
-* i386 options (none): i386-Options.
-* i386 register operands: i386-Syntax.
-* i386 registers: i386-Regs.
-* i386 sections: i386-Syntax.
-* i386 size suffixes: i386-Syntax.
-* i386 source, destination operands: i386-Syntax.
-* i386 support: i386-Dependent.
-* i386 syntax compatibility: i386-Syntax.
-* i80306 support: i386-Dependent.
-* i960 architecture options: Options-i960.
-* i960 branch recording: Options-i960.
-* i960 callj pseudo-opcode: callj-i960.
-* i960 compare and jump expansions: Compare-and-branch-i960.
-* i960 compare/branch instructions: Compare-and-branch-i960.
-* i960 floating point (IEEE): Floating Point-i960.
-* i960 machine directives: Directives-i960.
-* i960 opcodes: Opcodes for i960.
-* i960 options: Options-i960.
-* i960 support: i960-Dependent.
-* ident directive: Ident.
-* identifiers, AMD 29K: AMD29K-Chars.
-* identifiers, ARM: ARM-Chars.
-* if directive: If.
-* ifc directive: If.
-* ifdef directive: If.
-* ifeq directive: If.
-* ifeqs directive: If.
-* ifge directive: If.
-* ifgt directive: If.
-* ifle directive: If.
-* iflt directive: If.
-* ifnc directive: If.
-* ifndef directive: If.
-* ifne directive: If.
-* ifnes directive: If.
-* ifnotdef directive: If.
-* immediate character, ARM: ARM-Chars.
-* immediate character, M680x0: M68K-Chars.
-* immediate character, VAX: VAX-operands.
-* immediate operands, i386: i386-Syntax.
-* imul instruction, i386: i386-Notes.
-* include directive: Include.
-* include directive search path: I.
-* indirect character, VAX: VAX-operands.
-* infix operators: Infix Ops.
-* inhibiting interrupts, i386: i386-Prefixes.
-* input: Input Files.
-* input file linenumbers: Input Files.
-* instruction naming, i386: i386-Mnemonics.
-* instruction prefixes, i386: i386-Prefixes.
-* instruction set, M680x0: M68K-opcodes.
-* instruction summary, D10V: D10V-Opcodes.
-* instruction summary, D30V: D30V-Opcodes.
-* instruction summary, H8/300: H8/300 Opcodes.
-* instruction summary, H8/500: H8/500 Opcodes.
-* instruction summary, SH: SH Opcodes.
-* instruction summary, Z8000: Z8000 Opcodes.
-* instructions and directives: Statements.
-* int directive: Int.
-* int directive, H8/300: H8/300 Directives.
-* int directive, H8/500: H8/500 Directives.
-* int directive, i386: i386-Float.
-* integer expressions: Integer Exprs.
-* integer, 16-byte: Octa.
-* integer, 8-byte: Quad.
-* integers: Integers.
-* integers, 16-bit: hword.
-* integers, 32-bit: Int.
-* integers, binary: Integers.
-* integers, decimal: Integers.
-* integers, hexadecimal: Integers.
-* integers, octal: Integers.
-* integers, one byte: Byte.
-* internal assembler sections: As Sections.
-* internal directive: Visibility.
-* invalid input: Bug Criteria.
-* invocation summary: Overview.
-* irp directive: Irp.
-* irpc directive: Irpc.
-* joining text and data sections: R.
-* jump instructions, i386: i386-Mnemonics.
-* jump optimization, i386: i386-jumps.
-* jump/call operands, i386: i386-Syntax.
-* label (:): Statements.
-* labels: Labels.
-* lcomm directive: Lcomm.
-* ld: Object.
-* ldouble directive M680x0: M68K-Float.
-* LDR reg,=<label> pseudo op, ARM: ARM Opcodes.
-* leafproc directive, i960: Directives-i960.
-* length of symbols: Symbol Intro.
-* lflags directive (ignored): Lflags.
-* line comment character: Comments.
-* line comment character, AMD 29K: AMD29K-Chars.
-* line comment character, ARM: ARM-Chars.
-* line comment character, D10V: D10V-Chars.
-* line comment character, D30V: D30V-Chars.
-* line comment character, H8/300: H8/300-Chars.
-* line comment character, H8/500: H8/500-Chars.
-* line comment character, M680x0: M68K-Chars.
-* line comment character, SH: SH-Chars.
-* line comment character, V850: V850-Chars.
-* line comment character, Z8000: Z8000-Chars.
-* line directive: Line.
-* line directive, AMD 29K: AMD29K Directives.
-* line numbers, in input files: Input Files.
-* line numbers, in warnings/errors: Errors.
-* line separator character: Statements.
-* line separator, ARM: ARM-Chars.
-* line separator, H8/300: H8/300-Chars.
-* line separator, H8/500: H8/500-Chars.
-* line separator, SH: SH-Chars.
-* line separator, Z8000: Z8000-Chars.
-* lines starting with #: Comments.
-* linker: Object.
-* linker, and assembler: Secs Background.
-* linkonce directive: Linkonce.
-* list directive: List.
-* listing control, turning off: Nolist.
-* listing control, turning on: List.
-* listing control: new page: Eject.
-* listing control: paper size: Psize.
-* listing control: subtitle: Sbttl.
-* listing control: title line: Title.
-* listings, enabling: a.
-* little endian output, ARC: Overview.
-* little endian output, MIPS: Overview.
-* little endian output, PJ: Overview.
-* little-endian output, ARC: ARC-Opts.
-* little-endian output, MIPS: MIPS Opts.
-* ln directive: Ln.
-* lo pseudo-op, V850: V850 Opcodes.
-* local common symbols: Lcomm.
-* local labels, retaining in output: L.
-* local symbol names: Symbol Names.
-* location counter: Dot.
-* location counter, advancing: Org.
-* logical file name: File.
-* logical line number: Line.
-* logical line numbers: Comments.
-* long directive: Long.
-* long directive, i386: i386-Float.
-* lp register, V850: V850-Regs.
-* lval: Z8000 Directives.
-* M680x0 addressing modes: M68K-Syntax.
-* M680x0 architecture options: M68K-Opts.
-* M680x0 branch improvement: M68K-Branch.
-* M680x0 directives: M68K-Directives.
-* M680x0 floating point: M68K-Float.
-* M680x0 immediate character: M68K-Chars.
-* M680x0 line comment character: M68K-Chars.
-* M680x0 opcodes: M68K-opcodes.
-* M680x0 options: M68K-Opts.
-* M680x0 pseudo-opcodes: M68K-Branch.
-* M680x0 size modifiers: M68K-Syntax.
-* M680x0 support: M68K-Dependent.
-* M680x0 syntax: M68K-Syntax.
-* machine dependencies: Machine Dependencies.
-* machine directives, AMD 29K: AMD29K Directives.
-* machine directives, ARC: ARC-Directives.
-* machine directives, ARM: ARM Directives.
-* machine directives, H8/300 (none): H8/300 Directives.
-* machine directives, H8/500 (none): H8/500 Directives.
-* machine directives, i960: Directives-i960.
-* machine directives, SH: SH Directives.
-* machine directives, SPARC: Sparc-Directives.
-* machine directives, V850: V850 Directives.
-* machine directives, VAX: VAX-directives.
-* machine independent directives: Pseudo Ops.
-* machine instructions (not covered): Manual.
-* machine-independent syntax: Syntax.
-* macro directive: Macro.
-* macros: Macro.
-* Macros, AMD 29K: AMD29K-Macros.
-* macros, count executed: Macro.
-* make rules: MD.
-* manual, structure and purpose: Manual.
-* memory references, i386: i386-Memory.
-* merging text and data sections: R.
-* messages from assembler: Errors.
-* minus, permitted arguments: Infix Ops.
-* MIPS architecture options: MIPS Opts.
-* MIPS big-endian output: MIPS Opts.
-* MIPS debugging directives: MIPS Stabs.
-* MIPS ECOFF sections: MIPS Object.
-* MIPS endianness: Overview.
-* MIPS ISA: Overview.
-* MIPS ISA override: MIPS ISA.
-* MIPS little-endian output: MIPS Opts.
-* MIPS option stack: MIPS option stack.
-* MIPS processor: MIPS-Dependent.
-* MIT: M68K-Syntax.
-* MMX, i386: i386-SIMD.
-* mnemonic suffixes, i386: i386-Syntax.
-* mnemonics for opcodes, VAX: VAX-opcodes.
-* mnemonics, D10V: D10V-Opcodes.
-* mnemonics, D30V: D30V-Opcodes.
-* mnemonics, H8/300: H8/300 Opcodes.
-* mnemonics, H8/500: H8/500 Opcodes.
-* mnemonics, SH: SH Opcodes.
-* mnemonics, Z8000: Z8000 Opcodes.
-* Motorola syntax for the 680x0: M68K-Moto-Syntax.
-* MRI compatibility mode: M.
-* mri directive: MRI.
-* MRI mode, temporarily: MRI.
-* mul instruction, i386: i386-Notes.
-* name: Z8000 Directives.
-* named section: Section.
-* named sections: Ld Sections.
-* names, symbol: Symbol Names.
-* naming object file: o.
-* new page, in listings: Eject.
-* newline (\n): Strings.
-* newline, required at file end: Statements.
-* nolist directive: Nolist.
-* NOP pseudo op, ARM: ARM Opcodes.
-* null-terminated strings: Asciz.
-* number constants: Numbers.
-* number of macros executed: Macro.
-* numbered subsections: Sub-Sections.
-* numbers, 16-bit: hword.
-* numeric values: Expressions.
-* nword directive, SPARC: Sparc-Directives.
-* object file: Object.
-* object file format: Object Formats.
-* object file name: o.
-* object file, after errors: Z.
-* obsolescent directives: Deprecated.
-* octa directive: Octa.
-* octal character code (\DDD): Strings.
-* octal integers: Integers.
-* offset directive, V850: V850 Directives.
-* opcode mnemonics, VAX: VAX-opcodes.
-* opcode summary, D10V: D10V-Opcodes.
-* opcode summary, D30V: D30V-Opcodes.
-* opcode summary, H8/300: H8/300 Opcodes.
-* opcode summary, H8/500: H8/500 Opcodes.
-* opcode summary, SH: SH Opcodes.
-* opcode summary, Z8000: Z8000 Opcodes.
-* opcodes for AMD 29K: AMD29K Opcodes.
-* opcodes for ARM: ARM Opcodes.
-* opcodes for V850: V850 Opcodes.
-* opcodes, i960: Opcodes for i960.
-* opcodes, M680x0: M68K-opcodes.
-* operand delimiters, i386: i386-Syntax.
-* operand notation, VAX: VAX-operands.
-* operands in expressions: Arguments.
-* operator precedence: Infix Ops.
-* operators, in expressions: Operators.
-* operators, permitted arguments: Infix Ops.
-* optimization, D10V: Overview.
-* optimization, D30V: Overview.
-* option summary: Overview.
-* options for AMD29K (none): AMD29K Options.
-* options for ARC: ARC-Opts.
-* options for ARM (none): ARM Options.
-* options for i386 (none): i386-Options.
-* options for SPARC: Sparc-Opts.
-* options for V850 (none): V850 Options.
-* options for VAX/VMS: VAX-Opts.
-* options, all versions of assembler: Invoking.
-* options, command line: Command Line.
-* options, D10V: D10V-Opts.
-* options, D30V: D30V-Opts.
-* options, H8/300 (none): H8/300 Options.
-* options, H8/500 (none): H8/500 Options.
-* options, i960: Options-i960.
-* options, M680x0: M68K-Opts.
-* options, PJ: PJ Options.
-* options, SH (none): SH Options.
-* options, Z8000: Z8000 Options.
-* org directive: Org.
-* other attribute, of a.out symbol: Symbol Other.
-* output file: Object.
-* p2align directive: P2align.
-* p2alignl directive: P2align.
-* p2alignw directive: P2align.
-* padding the location counter: Align.
-* padding the location counter given a power of two: P2align.
-* padding the location counter given number of bytes: Balign.
-* page, in listings: Eject.
-* paper size, for listings: Psize.
-* paths for .include: I.
-* patterns, writing in memory: Fill.
-* PIC code generation for ARM: ARM Options.
-* PJ endianness: Overview.
-* PJ options: PJ Options.
-* PJ support: PJ-Dependent.
-* plus, permitted arguments: Infix Ops.
-* precedence of operators: Infix Ops.
-* precision, floating point: Flonums.
-* prefix operators: Prefix Ops.
-* prefixes, i386: i386-Prefixes.
-* preprocessing: Preprocessing.
-* preprocessing, turning on and off: Preprocessing.
-* primary attributes, COFF symbols: COFF Symbols.
-* print directive: Print.
-* proc directive, SPARC: Sparc-Directives.
-* protected directive: Visibility.
-* protected registers, AMD 29K: AMD29K-Regs.
-* pseudo-opcodes, M680x0: M68K-Branch.
-* pseudo-ops for branch, VAX: VAX-branch.
-* pseudo-ops, machine independent: Pseudo Ops.
-* psize directive: Psize.
-* psw register, V850: V850-Regs.
-* purgem directive: Purgem.
-* purpose of GNU assembler: GNU Assembler.
-* quad directive: Quad.
-* quad directive, i386: i386-Float.
-* real-mode code, i386: i386-16bit.
-* register directive, SPARC: Sparc-Directives.
-* register names, AMD 29K: AMD29K-Regs.
-* register names, ARM: ARM-Regs.
-* register names, H8/300: H8/300-Regs.
-* register names, V850: V850-Regs.
-* register names, VAX: VAX-operands.
-* register operands, i386: i386-Syntax.
-* registers, D10V: D10V-Regs.
-* registers, D30V: D30V-Regs.
-* registers, H8/500: H8/500-Regs.
-* registers, i386: i386-Regs.
-* registers, SH: SH-Regs.
-* registers, Z8000: Z8000-Regs.
-* relocation: Sections.
-* relocation example: Ld Sections.
-* repeat prefixes, i386: i386-Prefixes.
-* reporting bugs in assembler: Reporting Bugs.
-* rept directive: Rept.
-* req directive, ARM: ARM Directives.
-* reserve directive, SPARC: Sparc-Directives.
-* return instructions, i386: i386-Syntax.
-* rsect: Z8000 Directives.
-* sbttl directive: Sbttl.
-* scl directive: Scl.
-* sdaoff pseudo-op, V850: V850 Opcodes.
-* search path for .include: I.
-* sect directive, AMD 29K: AMD29K Directives.
-* section directive: Section.
-* section directive, V850: V850 Directives.
-* section override prefixes, i386: i386-Prefixes.
-* section-relative addressing: Secs Background.
-* sections: Sections.
-* sections in messages, internal: As Sections.
-* sections, i386: i386-Syntax.
-* sections, named: Ld Sections.
-* seg directive, SPARC: Sparc-Directives.
-* segm: Z8000 Directives.
-* set directive: Set.
-* SH addressing modes: SH-Addressing.
-* SH floating point (IEEE): SH Floating Point.
-* SH line comment character: SH-Chars.
-* SH line separator: SH-Chars.
-* SH machine directives: SH Directives.
-* SH opcode summary: SH Opcodes.
-* SH options (none): SH Options.
-* SH registers: SH-Regs.
-* SH support: SH-Dependent.
-* short directive: Short.
-* SIMD, i386: i386-SIMD.
-* single character constant: Chars.
-* single directive: Single.
-* single directive, i386: i386-Float.
-* sixteen bit integers: hword.
-* sixteen byte integer: Octa.
-* size directive: Size.
-* size modifiers, D10V: D10V-Size.
-* size modifiers, D30V: D30V-Size.
-* size modifiers, M680x0: M68K-Syntax.
-* size prefixes, i386: i386-Prefixes.
-* size suffixes, H8/300: H8/300 Opcodes.
-* sizes operands, i386: i386-Syntax.
-* skip directive: Skip.
-* skip directive, M680x0: M68K-Directives.
-* skip directive, SPARC: Sparc-Directives.
-* sleb128 directive: Sleb128.
-* small objects, MIPS ECOFF: MIPS Object.
-* SOM symbol attributes: SOM Symbols.
-* source program: Input Files.
-* source, destination operands; i386: i386-Syntax.
-* sp register, V850: V850-Regs.
-* space directive: Space.
-* space used, maximum for assembly: statistics.
-* SPARC architectures: Sparc-Opts.
-* SPARC data alignment: Sparc-Aligned-Data.
-* SPARC floating point (IEEE): Sparc-Float.
-* SPARC machine directives: Sparc-Directives.
-* SPARC options: Sparc-Opts.
-* SPARC support: Sparc-Dependent.
-* special characters, M680x0: M68K-Chars.
-* special purpose registers, AMD 29K: AMD29K-Regs.
-* stabd directive: Stab.
-* stabn directive: Stab.
-* stabs directive: Stab.
-* stabX directives: Stab.
-* standard assembler sections: Secs Background.
-* standard input, as input file: Command Line.
-* statement separator character: Statements.
-* statement separator, ARM: ARM-Chars.
-* statement separator, H8/300: H8/300-Chars.
-* statement separator, H8/500: H8/500-Chars.
-* statement separator, SH: SH-Chars.
-* statement separator, Z8000: Z8000-Chars.
-* statements, structure of: Statements.
-* statistics, about assembly: statistics.
-* stopping the assembly: Abort.
-* string constants: Strings.
-* string directive: String.
-* string directive on HPPA: HPPA Directives.
-* string literals: Ascii.
-* string, copying to object file: String.
-* struct directive: Struct.
-* structure debugging, COFF: Tag.
-* sub-instruction ordering, D10V: D10V-Chars.
-* sub-instruction ordering, D30V: D30V-Chars.
-* sub-instructions, D10V: D10V-Subs.
-* sub-instructions, D30V: D30V-Subs.
-* subexpressions: Arguments.
-* subtitles for listings: Sbttl.
-* subtraction, permitted arguments: Infix Ops.
-* summary of options: Overview.
-* support: HPPA-Dependent.
-* supporting files, including: Include.
-* suppressing warnings: W.
-* sval: Z8000 Directives.
-* symbol attributes: Symbol Attributes.
-* symbol attributes, a.out: a.out Symbols.
-* symbol attributes, COFF: COFF Symbols.
-* symbol attributes, SOM: SOM Symbols.
-* symbol descriptor, COFF: Desc.
-* symbol names: Symbol Names.
-* symbol names, $ in <1>: SH-Chars.
-* symbol names, $ in <2>: H8/500-Chars.
-* symbol names, $ in <3>: D30V-Chars.
-* symbol names, $ in: D10V-Chars.
-* symbol names, local: Symbol Names.
-* symbol names, temporary: Symbol Names.
-* symbol storage class (COFF): Scl.
-* symbol type: Symbol Type.
-* symbol type, COFF: Type.
-* symbol value: Symbol Value.
-* symbol value, setting: Set.
-* symbol values, assigning: Setting Symbols.
-* symbol versioning: Symver.
-* symbol visibility: Visibility.
-* symbol, common: Comm.
-* symbol, making visible to linker: Global.
-* symbolic debuggers, information for: Stab.
-* symbols: Symbols.
-* symbols with uppercase, VAX/VMS: VAX-Opts.
-* symbols, assigning values to: Equ.
-* symbols, local common: Lcomm.
-* symver directive: Symver.
-* syntax compatibility, i386: i386-Syntax.
-* syntax, D10V: D10V-Syntax.
-* syntax, D30V: D30V-Syntax.
-* syntax, M680x0: M68K-Syntax.
-* syntax, machine-independent: Syntax.
-* sysproc directive, i960: Directives-i960.
-* tab (\t): Strings.
-* tag directive: Tag.
-* tdaoff pseudo-op, V850: V850 Opcodes.
-* temporary symbol names: Symbol Names.
-* text and data sections, joining: R.
-* text directive: Text.
-* text section: Ld Sections.
-* tfloat directive, i386: i386-Float.
-* thumb directive, ARM: ARM Directives.
-* Thumb support: ARM-Dependent.
-* thumb_func directive, ARM: ARM Directives.
-* thumb_set directive, ARM: ARM Directives.
-* time, total for assembly: statistics.
-* title directive: Title.
-* tp register, V850: V850-Regs.
-* trusted compiler: f.
-* turning preprocessing on and off: Preprocessing.
-* type directive: Type.
-* type of a symbol: Symbol Type.
-* ualong directive, SH: SH Directives.
-* uaword directive, SH: SH Directives.
-* uleb128 directive: Uleb128.
-* undefined section: Ld Sections.
-* unsegm: Z8000 Directives.
-* use directive, AMD 29K: AMD29K Directives.
-* V850 command line options: V850 Options.
-* V850 floating point (IEEE): V850 Floating Point.
-* V850 line comment character: V850-Chars.
-* V850 machine directives: V850 Directives.
-* V850 opcodes: V850 Opcodes.
-* V850 options (none): V850 Options.
-* V850 register names: V850-Regs.
-* V850 support: V850-Dependent.
-* val directive: Val.
-* value attribute, COFF: Val.
-* value of a symbol: Symbol Value.
-* VAX bitfields not supported: VAX-no.
-* VAX branch improvement: VAX-branch.
-* VAX command-line options ignored: VAX-Opts.
-* VAX displacement sizing character: VAX-operands.
-* VAX floating point: VAX-float.
-* VAX immediate character: VAX-operands.
-* VAX indirect character: VAX-operands.
-* VAX machine directives: VAX-directives.
-* VAX opcode mnemonics: VAX-opcodes.
-* VAX operand notation: VAX-operands.
-* VAX register names: VAX-operands.
-* VAX support: Vax-Dependent.
-* Vax-11 C compatibility: VAX-Opts.
-* VAX/VMS options: VAX-Opts.
-* version of assembler: v.
-* versions of symbols: Symver.
-* VMS (VAX) options: VAX-Opts.
-* warning for altered difference tables: K.
-* warning messages: Errors.
-* warnings, causing error: W.
-* warnings, suppressing: W.
-* warnings, switching on: W.
-* whitespace: Whitespace.
-* whitespace, removed by preprocessor: Preprocessing.
-* wide floating point directives, VAX: VAX-directives.
-* word directive: Word.
-* word directive, H8/300: H8/300 Directives.
-* word directive, H8/500: H8/500 Directives.
-* word directive, i386: i386-Float.
-* word directive, SPARC: Sparc-Directives.
-* writing patterns in memory: Fill.
-* wval: Z8000 Directives.
-* xword directive, SPARC: Sparc-Directives.
-* Z800 addressing modes: Z8000-Addressing.
-* Z8000 directives: Z8000 Directives.
-* Z8000 line comment character: Z8000-Chars.
-* Z8000 line separator: Z8000-Chars.
-* Z8000 opcode summary: Z8000 Opcodes.
-* Z8000 options: Z8000 Options.
-* Z8000 registers: Z8000-Regs.
-* Z8000 support: Z8000-Dependent.
-* zdaoff pseudo-op, V850: V850 Opcodes.
-* zero register, V850: V850-Regs.
-* zero-terminated strings: Asciz.
-
-
diff --git a/gnu/usr.bin/binutils/gprof/gprof.info-1 b/gnu/usr.bin/binutils/gprof/gprof.info-1
deleted file mode 100644
index b631818c52d..00000000000
--- a/gnu/usr.bin/binutils/gprof/gprof.info-1
+++ /dev/null
@@ -1,1121 +0,0 @@
-This is gprof.info, produced by makeinfo version 4.0 from gprof.texi.
-
-START-INFO-DIR-ENTRY
-* gprof: (gprof). Profiling your program's execution
-END-INFO-DIR-ENTRY
-
- This file documents the gprof profiler of the GNU system.
-
- Copyright (C) 1988, 92, 97, 98, 99, 2000 Free Software Foundation,
-Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-
-File: gprof.info, Node: Top, Next: Introduction, Up: (dir)
-
-Profiling a Program: Where Does It Spend Its Time?
-**************************************************
-
- This manual describes the GNU profiler, `gprof', and how you can use
-it to determine which parts of a program are taking most of the
-execution time. We assume that you know how to write, compile, and
-execute programs. GNU `gprof' was written by Jay Fenlason.
-
-* Menu:
-
-* Introduction:: What profiling means, and why it is useful.
-
-* Compiling:: How to compile your program for profiling.
-* Executing:: Executing your program to generate profile data
-* Invoking:: How to run `gprof', and its options
-
-* Output:: Interpreting `gprof''s output
-
-* Inaccuracy:: Potential problems you should be aware of
-* How do I?:: Answers to common questions
-* Incompatibilities:: (between GNU `gprof' and Unix `gprof'.)
-* Details:: Details of how profiling is done
-
-
-File: gprof.info, Node: Introduction, Next: Compiling, Prev: Top, Up: Top
-
-Introduction to Profiling
-*************************
-
- Profiling allows you to learn where your program spent its time and
-which functions called which other functions while it was executing.
-This information can show you which pieces of your program are slower
-than you expected, and might be candidates for rewriting to make your
-program execute faster. It can also tell you which functions are being
-called more or less often than you expected. This may help you spot
-bugs that had otherwise been unnoticed.
-
- Since the profiler uses information collected during the actual
-execution of your program, it can be used on programs that are too
-large or too complex to analyze by reading the source. However, how
-your program is run will affect the information that shows up in the
-profile data. If you don't use some feature of your program while it
-is being profiled, no profile information will be generated for that
-feature.
-
- Profiling has several steps:
-
- * You must compile and link your program with profiling enabled.
- *Note Compiling::.
-
- * You must execute your program to generate a profile data file.
- *Note Executing::.
-
- * You must run `gprof' to analyze the profile data. *Note
- Invoking::.
-
- The next three chapters explain these steps in greater detail.
-
- Several forms of output are available from the analysis.
-
- The "flat profile" shows how much time your program spent in each
-function, and how many times that function was called. If you simply
-want to know which functions burn most of the cycles, it is stated
-concisely here. *Note Flat Profile::.
-
- The "call graph" shows, for each function, which functions called
-it, which other functions it called, and how many times. There is also
-an estimate of how much time was spent in the subroutines of each
-function. This can suggest places where you might try to eliminate
-function calls that use a lot of time. *Note Call Graph::.
-
- The "annotated source" listing is a copy of the program's source
-code, labeled with the number of times each line of the program was
-executed. *Note Annotated Source::.
-
- To better understand how profiling works, you may wish to read a
-description of its implementation. *Note Implementation::.
-
-
-File: gprof.info, Node: Compiling, Next: Executing, Prev: Introduction, Up: Top
-
-Compiling a Program for Profiling
-*********************************
-
- The first step in generating profile information for your program is
-to compile and link it with profiling enabled.
-
- To compile a source file for profiling, specify the `-pg' option when
-you run the compiler. (This is in addition to the options you normally
-use.)
-
- To link the program for profiling, if you use a compiler such as `cc'
-to do the linking, simply specify `-pg' in addition to your usual
-options. The same option, `-pg', alters either compilation or linking
-to do what is necessary for profiling. Here are examples:
-
- cc -g -c myprog.c utils.c -pg
- cc -o myprog myprog.o utils.o -pg
-
- The `-pg' option also works with a command that both compiles and
-links:
-
- cc -o myprog myprog.c utils.c -g -pg
-
- If you run the linker `ld' directly instead of through a compiler
-such as `cc', you may have to specify a profiling startup file
-`gcrt0.o' as the first input file instead of the usual startup file
-`crt0.o'. In addition, you would probably want to specify the
-profiling C library, `libc_p.a', by writing `-lc_p' instead of the
-usual `-lc'. This is not absolutely necessary, but doing this gives
-you number-of-calls information for standard library functions such as
-`read' and `open'. For example:
-
- ld -o myprog /lib/gcrt0.o myprog.o utils.o -lc_p
-
- If you compile only some of the modules of the program with `-pg',
-you can still profile the program, but you won't get complete
-information about the modules that were compiled without `-pg'. The
-only information you get for the functions in those modules is the
-total time spent in them; there is no record of how many times they
-were called, or from where. This will not affect the flat profile
-(except that the `calls' field for the functions will be blank), but
-will greatly reduce the usefulness of the call graph.
-
- If you wish to perform line-by-line profiling, you will also need to
-specify the `-g' option, instructing the compiler to insert debugging
-symbols into the program that match program addresses to source code
-lines. *Note Line-by-line::.
-
- In addition to the `-pg' and `-g' options, you may also wish to
-specify the `-a' option when compiling. This will instrument the
-program to perform basic-block counting. As the program runs, it will
-count how many times it executed each branch of each `if' statement,
-each iteration of each `do' loop, etc. This will enable `gprof' to
-construct an annotated source code listing showing how many times each
-line of code was executed.
-
-
-File: gprof.info, Node: Executing, Next: Invoking, Prev: Compiling, Up: Top
-
-Executing the Program
-*********************
-
- Once the program is compiled for profiling, you must run it in order
-to generate the information that `gprof' needs. Simply run the program
-as usual, using the normal arguments, file names, etc. The program
-should run normally, producing the same output as usual. It will,
-however, run somewhat slower than normal because of the time spent
-collecting and the writing the profile data.
-
- The way you run the program--the arguments and input that you give
-it--may have a dramatic effect on what the profile information shows.
-The profile data will describe the parts of the program that were
-activated for the particular input you use. For example, if the first
-command you give to your program is to quit, the profile data will show
-the time used in initialization and in cleanup, but not much else.
-
- Your program will write the profile data into a file called
-`gmon.out' just before exiting. If there is already a file called
-`gmon.out', its contents are overwritten. There is currently no way to
-tell the program to write the profile data under a different name, but
-you can rename the file afterward if you are concerned that it may be
-overwritten.
-
- In order to write the `gmon.out' file properly, your program must
-exit normally: by returning from `main' or by calling `exit'. Calling
-the low-level function `_exit' does not write the profile data, and
-neither does abnormal termination due to an unhandled signal.
-
- The `gmon.out' file is written in the program's _current working
-directory_ at the time it exits. This means that if your program calls
-`chdir', the `gmon.out' file will be left in the last directory your
-program `chdir''d to. If you don't have permission to write in this
-directory, the file is not written, and you will get an error message.
-
- Older versions of the GNU profiling library may also write a file
-called `bb.out'. This file, if present, contains an human-readable
-listing of the basic-block execution counts. Unfortunately, the
-appearance of a human-readable `bb.out' means the basic-block counts
-didn't get written into `gmon.out'. The Perl script `bbconv.pl',
-included with the `gprof' source distribution, will convert a `bb.out'
-file into a format readable by `gprof'.
-
-
-File: gprof.info, Node: Invoking, Next: Output, Prev: Executing, Up: Top
-
-`gprof' Command Summary
-***********************
-
- After you have a profile data file `gmon.out', you can run `gprof'
-to interpret the information in it. The `gprof' program prints a flat
-profile and a call graph on standard output. Typically you would
-redirect the output of `gprof' into a file with `>'.
-
- You run `gprof' like this:
-
- gprof OPTIONS [EXECUTABLE-FILE [PROFILE-DATA-FILES...]] [> OUTFILE]
-
-Here square-brackets indicate optional arguments.
-
- If you omit the executable file name, the file `a.out' is used. If
-you give no profile data file name, the file `gmon.out' is used. If
-any file is not in the proper format, or if the profile data file does
-not appear to belong to the executable file, an error message is
-printed.
-
- You can give more than one profile data file by entering all their
-names after the executable file name; then the statistics in all the
-data files are summed together.
-
- The order of these options does not matter.
-
-* Menu:
-
-* Output Options:: Controlling `gprof''s output style
-* Analysis Options:: Controlling how `gprof' analyses its data
-* Miscellaneous Options::
-* Deprecated Options:: Options you no longer need to use, but which
- have been retained for compatibility
-* Symspecs:: Specifying functions to include or exclude
-
-
-File: gprof.info, Node: Output Options, Next: Analysis Options, Up: Invoking
-
-Output Options
-==============
-
- These options specify which of several output formats `gprof' should
-produce.
-
- Many of these options take an optional "symspec" to specify
-functions to be included or excluded. These options can be specified
-multiple times, with different symspecs, to include or exclude sets of
-symbols. *Note Symspecs::.
-
- Specifying any of these options overrides the default (`-p -q'),
-which prints a flat profile and call graph analysis for all functions.
-
-`-A[SYMSPEC]'
-`--annotated-source[=SYMSPEC]'
- The `-A' option causes `gprof' to print annotated source code. If
- SYMSPEC is specified, print output only for matching symbols.
- *Note Annotated Source::.
-
-`-b'
-`--brief'
- If the `-b' option is given, `gprof' doesn't print the verbose
- blurbs that try to explain the meaning of all of the fields in the
- tables. This is useful if you intend to print out the output, or
- are tired of seeing the blurbs.
-
-`-C[SYMSPEC]'
-`--exec-counts[=SYMSPEC]'
- The `-C' option causes `gprof' to print a tally of functions and
- the number of times each was called. If SYMSPEC is specified,
- print tally only for matching symbols.
-
- If the profile data file contains basic-block count records,
- specifying the `-l' option, along with `-C', will cause basic-block
- execution counts to be tallied and displayed.
-
-`-i'
-`--file-info'
- The `-i' option causes `gprof' to display summary information
- about the profile data file(s) and then exit. The number of
- histogram, call graph, and basic-block count records is displayed.
-
-`-I DIRS'
-`--directory-path=DIRS'
- The `-I' option specifies a list of search directories in which to
- find source files. Environment variable GPROF_PATH can also be
- used to convey this information. Used mostly for annotated source
- output.
-
-`-J[SYMSPEC]'
-`--no-annotated-source[=SYMSPEC]'
- The `-J' option causes `gprof' not to print annotated source code.
- If SYMSPEC is specified, `gprof' prints annotated source, but
- excludes matching symbols.
-
-`-L'
-`--print-path'
- Normally, source filenames are printed with the path component
- suppressed. The `-L' option causes `gprof' to print the full
- pathname of source filenames, which is determined from symbolic
- debugging information in the image file and is relative to the
- directory in which the compiler was invoked.
-
-`-p[SYMSPEC]'
-`--flat-profile[=SYMSPEC]'
- The `-p' option causes `gprof' to print a flat profile. If
- SYMSPEC is specified, print flat profile only for matching symbols.
- *Note Flat Profile::.
-
-`-P[SYMSPEC]'
-`--no-flat-profile[=SYMSPEC]'
- The `-P' option causes `gprof' to suppress printing a flat profile.
- If SYMSPEC is specified, `gprof' prints a flat profile, but
- excludes matching symbols.
-
-`-q[SYMSPEC]'
-`--graph[=SYMSPEC]'
- The `-q' option causes `gprof' to print the call graph analysis.
- If SYMSPEC is specified, print call graph only for matching symbols
- and their children. *Note Call Graph::.
-
-`-Q[SYMSPEC]'
-`--no-graph[=SYMSPEC]'
- The `-Q' option causes `gprof' to suppress printing the call graph.
- If SYMSPEC is specified, `gprof' prints a call graph, but excludes
- matching symbols.
-
-`-y'
-`--separate-files'
- This option affects annotated source output only. Normally,
- `gprof' prints annotated source files to standard-output. If this
- option is specified, annotated source for a file named
- `path/FILENAME' is generated in the file `FILENAME-ann'. If the
- underlying filesystem would truncate `FILENAME-ann' so that it
- overwrites the original `FILENAME', `gprof' generates annotated
- source in the file `FILENAME.ann' instead (if the original file
- name has an extension, that extension is _replaced_ with `.ann').
-
-`-Z[SYMSPEC]'
-`--no-exec-counts[=SYMSPEC]'
- The `-Z' option causes `gprof' not to print a tally of functions
- and the number of times each was called. If SYMSPEC is specified,
- print tally, but exclude matching symbols.
-
-`--function-ordering'
- The `--function-ordering' option causes `gprof' to print a
- suggested function ordering for the program based on profiling
- data. This option suggests an ordering which may improve paging,
- tlb and cache behavior for the program on systems which support
- arbitrary ordering of functions in an executable.
-
- The exact details of how to force the linker to place functions in
- a particular order is system dependent and out of the scope of this
- manual.
-
-`--file-ordering MAP_FILE'
- The `--file-ordering' option causes `gprof' to print a suggested
- .o link line ordering for the program based on profiling data.
- This option suggests an ordering which may improve paging, tlb and
- cache behavior for the program on systems which do not support
- arbitrary ordering of functions in an executable.
-
- Use of the `-a' argument is highly recommended with this option.
-
- The MAP_FILE argument is a pathname to a file which provides
- function name to object file mappings. The format of the file is
- similar to the output of the program `nm'.
-
- c-parse.o:00000000 T yyparse
- c-parse.o:00000004 C yyerrflag
- c-lang.o:00000000 T maybe_objc_method_name
- c-lang.o:00000000 T print_lang_statistics
- c-lang.o:00000000 T recognize_objc_keyword
- c-decl.o:00000000 T print_lang_identifier
- c-decl.o:00000000 T print_lang_type
- ...
-
- To create a MAP_FILE with GNU `nm', type a command like `nm
- --extern-only --defined-only -v --print-file-name program-name'.
-
-`-T'
-`--traditional'
- The `-T' option causes `gprof' to print its output in
- "traditional" BSD style.
-
-`-w WIDTH'
-`--width=WIDTH'
- Sets width of output lines to WIDTH. Currently only used when
- printing the function index at the bottom of the call graph.
-
-`-x'
-`--all-lines'
- This option affects annotated source output only. By default,
- only the lines at the beginning of a basic-block are annotated.
- If this option is specified, every line in a basic-block is
- annotated by repeating the annotation for the first line. This
- behavior is similar to `tcov''s `-a'.
-
-`--demangle'
-`--no-demangle'
- These options control whether C++ symbol names should be demangled
- when printing output. The default is to demangle symbols. The
- `--no-demangle' option may be used to turn off demangling.
-
-
-File: gprof.info, Node: Analysis Options, Next: Miscellaneous Options, Prev: Output Options, Up: Invoking
-
-Analysis Options
-================
-
-`-a'
-`--no-static'
- The `-a' option causes `gprof' to suppress the printing of
- statically declared (private) functions. (These are functions
- whose names are not listed as global, and which are not visible
- outside the file/function/block where they were defined.) Time
- spent in these functions, calls to/from them, etc, will all be
- attributed to the function that was loaded directly before it in
- the executable file. This option affects both the flat profile
- and the call graph.
-
-`-c'
-`--static-call-graph'
- The `-c' option causes the call graph of the program to be
- augmented by a heuristic which examines the text space of the
- object file and identifies function calls in the binary machine
- code. Since normal call graph records are only generated when
- functions are entered, this option identifies children that could
- have been called, but never were. Calls to functions that were
- not compiled with profiling enabled are also identified, but only
- if symbol table entries are present for them. Calls to dynamic
- library routines are typically _not_ found by this option.
- Parents or children identified via this heuristic are indicated in
- the call graph with call counts of `0'.
-
-`-D'
-`--ignore-non-functions'
- The `-D' option causes `gprof' to ignore symbols which are not
- known to be functions. This option will give more accurate
- profile data on systems where it is supported (Solaris and HPUX for
- example).
-
-`-k FROM/TO'
- The `-k' option allows you to delete from the call graph any arcs
- from symbols matching symspec FROM to those matching symspec TO.
-
-`-l'
-`--line'
- The `-l' option enables line-by-line profiling, which causes
- histogram hits to be charged to individual source code lines,
- instead of functions. If the program was compiled with
- basic-block counting enabled, this option will also identify how
- many times each line of code was executed. While line-by-line
- profiling can help isolate where in a large function a program is
- spending its time, it also significantly increases the running
- time of `gprof', and magnifies statistical inaccuracies. *Note
- Sampling Error::.
-
-`-m NUM'
-`--min-count=NUM'
- This option affects execution count output only. Symbols that are
- executed less than NUM times are suppressed.
-
-`-n[SYMSPEC]'
-`--time[=SYMSPEC]'
- The `-n' option causes `gprof', in its call graph analysis, to
- only propagate times for symbols matching SYMSPEC.
-
-`-N[SYMSPEC]'
-`--no-time[=SYMSPEC]'
- The `-n' option causes `gprof', in its call graph analysis, not to
- propagate times for symbols matching SYMSPEC.
-
-`-z'
-`--display-unused-functions'
- If you give the `-z' option, `gprof' will mention all functions in
- the flat profile, even those that were never called, and that had
- no time spent in them. This is useful in conjunction with the
- `-c' option for discovering which routines were never called.
-
-
-File: gprof.info, Node: Miscellaneous Options, Next: Deprecated Options, Prev: Analysis Options, Up: Invoking
-
-Miscellaneous Options
-=====================
-
-`-d[NUM]'
-`--debug[=NUM]'
- The `-d NUM' option specifies debugging options. If NUM is not
- specified, enable all debugging. *Note Debugging::.
-
-`-ONAME'
-`--file-format=NAME'
- Selects the format of the profile data files. Recognized formats
- are `auto' (the default), `bsd', `4.4bsd', `magic', and `prof'
- (not yet supported).
-
-`-s'
-`--sum'
- The `-s' option causes `gprof' to summarize the information in the
- profile data files it read in, and write out a profile data file
- called `gmon.sum', which contains all the information from the
- profile data files that `gprof' read in. The file `gmon.sum' may
- be one of the specified input files; the effect of this is to
- merge the data in the other input files into `gmon.sum'.
-
- Eventually you can run `gprof' again without `-s' to analyze the
- cumulative data in the file `gmon.sum'.
-
-`-v'
-`--version'
- The `-v' flag causes `gprof' to print the current version number,
- and then exit.
-
-
-File: gprof.info, Node: Deprecated Options, Next: Symspecs, Prev: Miscellaneous Options, Up: Invoking
-
-Deprecated Options
-==================
-
- These options have been replaced with newer versions that use
- symspecs.
-
-`-e FUNCTION_NAME'
- The `-e FUNCTION' option tells `gprof' to not print information
- about the function FUNCTION_NAME (and its children...) in the call
- graph. The function will still be listed as a child of any
- functions that call it, but its index number will be shown as
- `[not printed]'. More than one `-e' option may be given; only one
- FUNCTION_NAME may be indicated with each `-e' option.
-
-`-E FUNCTION_NAME'
- The `-E FUNCTION' option works like the `-e' option, but time
- spent in the function (and children who were not called from
- anywhere else), will not be used to compute the
- percentages-of-time for the call graph. More than one `-E' option
- may be given; only one FUNCTION_NAME may be indicated with each
- `-E' option.
-
-`-f FUNCTION_NAME'
- The `-f FUNCTION' option causes `gprof' to limit the call graph to
- the function FUNCTION_NAME and its children (and their
- children...). More than one `-f' option may be given; only one
- FUNCTION_NAME may be indicated with each `-f' option.
-
-`-F FUNCTION_NAME'
- The `-F FUNCTION' option works like the `-f' option, but only time
- spent in the function and its children (and their children...)
- will be used to determine total-time and percentages-of-time for
- the call graph. More than one `-F' option may be given; only one
- FUNCTION_NAME may be indicated with each `-F' option. The `-F'
- option overrides the `-E' option.
-
- Note that only one function can be specified with each `-e', `-E',
-`-f' or `-F' option. To specify more than one function, use multiple
-options. For example, this command:
-
- gprof -e boring -f foo -f bar myprogram > gprof.output
-
-lists in the call graph all functions that were reached from either
-`foo' or `bar' and were not reachable from `boring'.
-
-
-File: gprof.info, Node: Symspecs, Prev: Deprecated Options, Up: Invoking
-
-Symspecs
-========
-
- Many of the output options allow functions to be included or excluded
-using "symspecs" (symbol specifications), which observe the following
-syntax:
-
- filename_containing_a_dot
- | funcname_not_containing_a_dot
- | linenumber
- | ( [ any_filename ] `:' ( any_funcname | linenumber ) )
-
- Here are some sample symspecs:
-
-`main.c'
- Selects everything in file `main.c'--the dot in the string tells
- `gprof' to interpret the string as a filename, rather than as a
- function name. To select a file whose name does not contain a
- dot, a trailing colon should be specified. For example, `odd:' is
- interpreted as the file named `odd'.
-
-`main'
- Selects all functions named `main'.
-
- Note that there may be multiple instances of the same function name
- because some of the definitions may be local (i.e., static).
- Unless a function name is unique in a program, you must use the
- colon notation explained below to specify a function from a
- specific source file.
-
- Sometimes, function names contain dots. In such cases, it is
- necessary to add a leading colon to the name. For example,
- `:.mul' selects function `.mul'.
-
- In some object file formats, symbols have a leading underscore.
- `gprof' will normally not print these underscores. When you name a
- symbol in a symspec, you should type it exactly as `gprof' prints
- it in its output. For example, if the compiler produces a symbol
- `_main' from your `main' function, `gprof' still prints it as
- `main' in its output, so you should use `main' in symspecs.
-
-`main.c:main'
- Selects function `main' in file `main.c'.
-
-`main.c:134'
- Selects line 134 in file `main.c'.
-
-
-File: gprof.info, Node: Output, Next: Inaccuracy, Prev: Invoking, Up: Top
-
-Interpreting `gprof''s Output
-*****************************
-
- `gprof' can produce several different output styles, the most
-important of which are described below. The simplest output styles
-(file information, execution count, and function and file ordering) are
-not described here, but are documented with the respective options that
-trigger them. *Note Output Options::.
-
-* Menu:
-
-* Flat Profile:: The flat profile shows how much time was spent
- executing directly in each function.
-* Call Graph:: The call graph shows which functions called which
- others, and how much time each function used
- when its subroutine calls are included.
-* Line-by-line:: `gprof' can analyze individual source code lines
-* Annotated Source:: The annotated source listing displays source code
- labeled with execution counts
-
-
-File: gprof.info, Node: Flat Profile, Next: Call Graph, Up: Output
-
-The Flat Profile
-================
-
- The "flat profile" shows the total amount of time your program spent
-executing each function. Unless the `-z' option is given, functions
-with no apparent time spent in them, and no apparent calls to them, are
-not mentioned. Note that if a function was not compiled for profiling,
-and didn't run long enough to show up on the program counter histogram,
-it will be indistinguishable from a function that was never called.
-
- This is part of a flat profile for a small program:
-
- Flat profile:
-
- Each sample counts as 0.01 seconds.
- % cumulative self self total
- time seconds seconds calls ms/call ms/call name
- 33.34 0.02 0.02 7208 0.00 0.00 open
- 16.67 0.03 0.01 244 0.04 0.12 offtime
- 16.67 0.04 0.01 8 1.25 1.25 memccpy
- 16.67 0.05 0.01 7 1.43 1.43 write
- 16.67 0.06 0.01 mcount
- 0.00 0.06 0.00 236 0.00 0.00 tzset
- 0.00 0.06 0.00 192 0.00 0.00 tolower
- 0.00 0.06 0.00 47 0.00 0.00 strlen
- 0.00 0.06 0.00 45 0.00 0.00 strchr
- 0.00 0.06 0.00 1 0.00 50.00 main
- 0.00 0.06 0.00 1 0.00 0.00 memcpy
- 0.00 0.06 0.00 1 0.00 10.11 print
- 0.00 0.06 0.00 1 0.00 0.00 profil
- 0.00 0.06 0.00 1 0.00 50.00 report
- ...
-
-The functions are sorted by first by decreasing run-time spent in them,
-then by decreasing number of calls, then alphabetically by name. The
-functions `mcount' and `profil' are part of the profiling apparatus and
-appear in every flat profile; their time gives a measure of the amount
-of overhead due to profiling.
-
- Just before the column headers, a statement appears indicating how
-much time each sample counted as. This "sampling period" estimates the
-margin of error in each of the time figures. A time figure that is not
-much larger than this is not reliable. In this example, each sample
-counted as 0.01 seconds, suggesting a 100 Hz sampling rate. The
-program's total execution time was 0.06 seconds, as indicated by the
-`cumulative seconds' field. Since each sample counted for 0.01
-seconds, this means only six samples were taken during the run. Two of
-the samples occurred while the program was in the `open' function, as
-indicated by the `self seconds' field. Each of the other four samples
-occurred one each in `offtime', `memccpy', `write', and `mcount'.
-Since only six samples were taken, none of these values can be regarded
-as particularly reliable. In another run, the `self seconds' field for
-`mcount' might well be `0.00' or `0.02'. *Note Sampling Error::, for a
-complete discussion.
-
- The remaining functions in the listing (those whose `self seconds'
-field is `0.00') didn't appear in the histogram samples at all.
-However, the call graph indicated that they were called, so therefore
-they are listed, sorted in decreasing order by the `calls' field.
-Clearly some time was spent executing these functions, but the paucity
-of histogram samples prevents any determination of how much time each
-took.
-
- Here is what the fields in each line mean:
-
-`% time'
- This is the percentage of the total execution time your program
- spent in this function. These should all add up to 100%.
-
-`cumulative seconds'
- This is the cumulative total number of seconds the computer spent
- executing this functions, plus the time spent in all the functions
- above this one in this table.
-
-`self seconds'
- This is the number of seconds accounted for by this function alone.
- The flat profile listing is sorted first by this number.
-
-`calls'
- This is the total number of times the function was called. If the
- function was never called, or the number of times it was called
- cannot be determined (probably because the function was not
- compiled with profiling enabled), the "calls" field is blank.
-
-`self ms/call'
- This represents the average number of milliseconds spent in this
- function per call, if this function is profiled. Otherwise, this
- field is blank for this function.
-
-`total ms/call'
- This represents the average number of milliseconds spent in this
- function and its descendants per call, if this function is
- profiled. Otherwise, this field is blank for this function. This
- is the only field in the flat profile that uses call graph
- analysis.
-
-`name'
- This is the name of the function. The flat profile is sorted by
- this field alphabetically after the "self seconds" and "calls"
- fields are sorted.
-
-
-File: gprof.info, Node: Call Graph, Next: Line-by-line, Prev: Flat Profile, Up: Output
-
-The Call Graph
-==============
-
- The "call graph" shows how much time was spent in each function and
-its children. From this information, you can find functions that,
-while they themselves may not have used much time, called other
-functions that did use unusual amounts of time.
-
- Here is a sample call from a small program. This call came from the
-same `gprof' run as the flat profile example in the previous chapter.
-
- granularity: each sample hit covers 2 byte(s) for 20.00% of 0.05 seconds
-
- index % time self children called name
- <spontaneous>
- [1] 100.0 0.00 0.05 start [1]
- 0.00 0.05 1/1 main [2]
- 0.00 0.00 1/2 on_exit [28]
- 0.00 0.00 1/1 exit [59]
- -----------------------------------------------
- 0.00 0.05 1/1 start [1]
- [2] 100.0 0.00 0.05 1 main [2]
- 0.00 0.05 1/1 report [3]
- -----------------------------------------------
- 0.00 0.05 1/1 main [2]
- [3] 100.0 0.00 0.05 1 report [3]
- 0.00 0.03 8/8 timelocal [6]
- 0.00 0.01 1/1 print [9]
- 0.00 0.01 9/9 fgets [12]
- 0.00 0.00 12/34 strncmp <cycle 1> [40]
- 0.00 0.00 8/8 lookup [20]
- 0.00 0.00 1/1 fopen [21]
- 0.00 0.00 8/8 chewtime [24]
- 0.00 0.00 8/16 skipspace [44]
- -----------------------------------------------
- [4] 59.8 0.01 0.02 8+472 <cycle 2 as a whole> [4]
- 0.01 0.02 244+260 offtime <cycle 2> [7]
- 0.00 0.00 236+1 tzset <cycle 2> [26]
- -----------------------------------------------
-
- The lines full of dashes divide this table into "entries", one for
-each function. Each entry has one or more lines.
-
- In each entry, the primary line is the one that starts with an index
-number in square brackets. The end of this line says which function
-the entry is for. The preceding lines in the entry describe the
-callers of this function and the following lines describe its
-subroutines (also called "children" when we speak of the call graph).
-
- The entries are sorted by time spent in the function and its
-subroutines.
-
- The internal profiling function `mcount' (*note Flat Profile::) is
-never mentioned in the call graph.
-
-* Menu:
-
-* Primary:: Details of the primary line's contents.
-* Callers:: Details of caller-lines' contents.
-* Subroutines:: Details of subroutine-lines' contents.
-* Cycles:: When there are cycles of recursion,
- such as `a' calls `b' calls `a'...
-
-
-File: gprof.info, Node: Primary, Next: Callers, Up: Call Graph
-
-The Primary Line
-----------------
-
- The "primary line" in a call graph entry is the line that describes
-the function which the entry is about and gives the overall statistics
-for this function.
-
- For reference, we repeat the primary line from the entry for function
-`report' in our main example, together with the heading line that shows
-the names of the fields:
-
- index % time self children called name
- ...
- [3] 100.0 0.00 0.05 1 report [3]
-
- Here is what the fields in the primary line mean:
-
-`index'
- Entries are numbered with consecutive integers. Each function
- therefore has an index number, which appears at the beginning of
- its primary line.
-
- Each cross-reference to a function, as a caller or subroutine of
- another, gives its index number as well as its name. The index
- number guides you if you wish to look for the entry for that
- function.
-
-`% time'
- This is the percentage of the total time that was spent in this
- function, including time spent in subroutines called from this
- function.
-
- The time spent in this function is counted again for the callers of
- this function. Therefore, adding up these percentages is
- meaningless.
-
-`self'
- This is the total amount of time spent in this function. This
- should be identical to the number printed in the `seconds' field
- for this function in the flat profile.
-
-`children'
- This is the total amount of time spent in the subroutine calls
- made by this function. This should be equal to the sum of all the
- `self' and `children' entries of the children listed directly
- below this function.
-
-`called'
- This is the number of times the function was called.
-
- If the function called itself recursively, there are two numbers,
- separated by a `+'. The first number counts non-recursive calls,
- and the second counts recursive calls.
-
- In the example above, the function `report' was called once from
- `main'.
-
-`name'
- This is the name of the current function. The index number is
- repeated after it.
-
- If the function is part of a cycle of recursion, the cycle number
- is printed between the function's name and the index number (*note
- Cycles::). For example, if function `gnurr' is part of cycle
- number one, and has index number twelve, its primary line would be
- end like this:
-
- gnurr <cycle 1> [12]
-
-
-File: gprof.info, Node: Callers, Next: Subroutines, Prev: Primary, Up: Call Graph
-
-Lines for a Function's Callers
-------------------------------
-
- A function's entry has a line for each function it was called by.
-These lines' fields correspond to the fields of the primary line, but
-their meanings are different because of the difference in context.
-
- For reference, we repeat two lines from the entry for the function
-`report', the primary line and one caller-line preceding it, together
-with the heading line that shows the names of the fields:
-
- index % time self children called name
- ...
- 0.00 0.05 1/1 main [2]
- [3] 100.0 0.00 0.05 1 report [3]
-
- Here are the meanings of the fields in the caller-line for `report'
-called from `main':
-
-`self'
- An estimate of the amount of time spent in `report' itself when it
- was called from `main'.
-
-`children'
- An estimate of the amount of time spent in subroutines of `report'
- when `report' was called from `main'.
-
- The sum of the `self' and `children' fields is an estimate of the
- amount of time spent within calls to `report' from `main'.
-
-`called'
- Two numbers: the number of times `report' was called from `main',
- followed by the total number of non-recursive calls to `report'
- from all its callers.
-
-`name and index number'
- The name of the caller of `report' to which this line applies,
- followed by the caller's index number.
-
- Not all functions have entries in the call graph; some options to
- `gprof' request the omission of certain functions. When a caller
- has no entry of its own, it still has caller-lines in the entries
- of the functions it calls.
-
- If the caller is part of a recursion cycle, the cycle number is
- printed between the name and the index number.
-
- If the identity of the callers of a function cannot be determined, a
-dummy caller-line is printed which has `<spontaneous>' as the "caller's
-name" and all other fields blank. This can happen for signal handlers.
-
-
-File: gprof.info, Node: Subroutines, Next: Cycles, Prev: Callers, Up: Call Graph
-
-Lines for a Function's Subroutines
-----------------------------------
-
- A function's entry has a line for each of its subroutines--in other
-words, a line for each other function that it called. These lines'
-fields correspond to the fields of the primary line, but their meanings
-are different because of the difference in context.
-
- For reference, we repeat two lines from the entry for the function
-`main', the primary line and a line for a subroutine, together with the
-heading line that shows the names of the fields:
-
- index % time self children called name
- ...
- [2] 100.0 0.00 0.05 1 main [2]
- 0.00 0.05 1/1 report [3]
-
- Here are the meanings of the fields in the subroutine-line for `main'
-calling `report':
-
-`self'
- An estimate of the amount of time spent directly within `report'
- when `report' was called from `main'.
-
-`children'
- An estimate of the amount of time spent in subroutines of `report'
- when `report' was called from `main'.
-
- The sum of the `self' and `children' fields is an estimate of the
- total time spent in calls to `report' from `main'.
-
-`called'
- Two numbers, the number of calls to `report' from `main' followed
- by the total number of non-recursive calls to `report'. This
- ratio is used to determine how much of `report''s `self' and
- `children' time gets credited to `main'. *Note Assumptions::.
-
-`name'
- The name of the subroutine of `main' to which this line applies,
- followed by the subroutine's index number.
-
- If the caller is part of a recursion cycle, the cycle number is
- printed between the name and the index number.
-
-
-File: gprof.info, Node: Cycles, Prev: Subroutines, Up: Call Graph
-
-How Mutually Recursive Functions Are Described
-----------------------------------------------
-
- The graph may be complicated by the presence of "cycles of
-recursion" in the call graph. A cycle exists if a function calls
-another function that (directly or indirectly) calls (or appears to
-call) the original function. For example: if `a' calls `b', and `b'
-calls `a', then `a' and `b' form a cycle.
-
- Whenever there are call paths both ways between a pair of functions,
-they belong to the same cycle. If `a' and `b' call each other and `b'
-and `c' call each other, all three make one cycle. Note that even if
-`b' only calls `a' if it was not called from `a', `gprof' cannot
-determine this, so `a' and `b' are still considered a cycle.
-
- The cycles are numbered with consecutive integers. When a function
-belongs to a cycle, each time the function name appears in the call
-graph it is followed by `<cycle NUMBER>'.
-
- The reason cycles matter is that they make the time values in the
-call graph paradoxical. The "time spent in children" of `a' should
-include the time spent in its subroutine `b' and in `b''s
-subroutines--but one of `b''s subroutines is `a'! How much of `a''s
-time should be included in the children of `a', when `a' is indirectly
-recursive?
-
- The way `gprof' resolves this paradox is by creating a single entry
-for the cycle as a whole. The primary line of this entry describes the
-total time spent directly in the functions of the cycle. The
-"subroutines" of the cycle are the individual functions of the cycle,
-and all other functions that were called directly by them. The
-"callers" of the cycle are the functions, outside the cycle, that
-called functions in the cycle.
-
- Here is an example portion of a call graph which shows a cycle
-containing functions `a' and `b'. The cycle was entered by a call to
-`a' from `main'; both `a' and `b' called `c'.
-
- index % time self children called name
- ----------------------------------------
- 1.77 0 1/1 main [2]
- [3] 91.71 1.77 0 1+5 <cycle 1 as a whole> [3]
- 1.02 0 3 b <cycle 1> [4]
- 0.75 0 2 a <cycle 1> [5]
- ----------------------------------------
- 3 a <cycle 1> [5]
- [4] 52.85 1.02 0 0 b <cycle 1> [4]
- 2 a <cycle 1> [5]
- 0 0 3/6 c [6]
- ----------------------------------------
- 1.77 0 1/1 main [2]
- 2 b <cycle 1> [4]
- [5] 38.86 0.75 0 1 a <cycle 1> [5]
- 3 b <cycle 1> [4]
- 0 0 3/6 c [6]
- ----------------------------------------
-
-(The entire call graph for this program contains in addition an entry
-for `main', which calls `a', and an entry for `c', with callers `a' and
-`b'.)
-
- index % time self children called name
- <spontaneous>
- [1] 100.00 0 1.93 0 start [1]
- 0.16 1.77 1/1 main [2]
- ----------------------------------------
- 0.16 1.77 1/1 start [1]
- [2] 100.00 0.16 1.77 1 main [2]
- 1.77 0 1/1 a <cycle 1> [5]
- ----------------------------------------
- 1.77 0 1/1 main [2]
- [3] 91.71 1.77 0 1+5 <cycle 1 as a whole> [3]
- 1.02 0 3 b <cycle 1> [4]
- 0.75 0 2 a <cycle 1> [5]
- 0 0 6/6 c [6]
- ----------------------------------------
- 3 a <cycle 1> [5]
- [4] 52.85 1.02 0 0 b <cycle 1> [4]
- 2 a <cycle 1> [5]
- 0 0 3/6 c [6]
- ----------------------------------------
- 1.77 0 1/1 main [2]
- 2 b <cycle 1> [4]
- [5] 38.86 0.75 0 1 a <cycle 1> [5]
- 3 b <cycle 1> [4]
- 0 0 3/6 c [6]
- ----------------------------------------
- 0 0 3/6 b <cycle 1> [4]
- 0 0 3/6 a <cycle 1> [5]
- [6] 0.00 0 0 6 c [6]
- ----------------------------------------
-
- The `self' field of the cycle's primary line is the total time spent
-in all the functions of the cycle. It equals the sum of the `self'
-fields for the individual functions in the cycle, found in the entry in
-the subroutine lines for these functions.
-
- The `children' fields of the cycle's primary line and subroutine
-lines count only subroutines outside the cycle. Even though `a' calls
-`b', the time spent in those calls to `b' is not counted in `a''s
-`children' time. Thus, we do not encounter the problem of what to do
-when the time in those calls to `b' includes indirect recursive calls
-back to `a'.
-
- The `children' field of a caller-line in the cycle's entry estimates
-the amount of time spent _in the whole cycle_, and its other
-subroutines, on the times when that caller called a function in the
-cycle.
-
- The `calls' field in the primary line for the cycle has two numbers:
-first, the number of times functions in the cycle were called by
-functions outside the cycle; second, the number of times they were
-called by functions in the cycle (including times when a function in
-the cycle calls itself). This is a generalization of the usual split
-into non-recursive and recursive calls.
-
- The `calls' field of a subroutine-line for a cycle member in the
-cycle's entry says how many time that function was called from
-functions in the cycle. The total of all these is the second number in
-the primary line's `calls' field.
-
- In the individual entry for a function in a cycle, the other
-functions in the same cycle can appear as subroutines and as callers.
-These lines show how many times each function in the cycle called or
-was called from each other function in the cycle. The `self' and
-`children' fields in these lines are blank because of the difficulty of
-defining meanings for them when recursion is going on.
-
diff --git a/gnu/usr.bin/binutils/gprof/gprof.info-2 b/gnu/usr.bin/binutils/gprof/gprof.info-2
deleted file mode 100644
index 6cdfda58698..00000000000
--- a/gnu/usr.bin/binutils/gprof/gprof.info-2
+++ /dev/null
@@ -1,760 +0,0 @@
-This is gprof.info, produced by makeinfo version 4.0 from gprof.texi.
-
-START-INFO-DIR-ENTRY
-* gprof: (gprof). Profiling your program's execution
-END-INFO-DIR-ENTRY
-
- This file documents the gprof profiler of the GNU system.
-
- Copyright (C) 1988, 92, 97, 98, 99, 2000 Free Software Foundation,
-Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions.
-
-
-File: gprof.info, Node: Line-by-line, Next: Annotated Source, Prev: Call Graph, Up: Output
-
-Line-by-line Profiling
-======================
-
- `gprof''s `-l' option causes the program to perform "line-by-line"
-profiling. In this mode, histogram samples are assigned not to
-functions, but to individual lines of source code. The program usually
-must be compiled with a `-g' option, in addition to `-pg', in order to
-generate debugging symbols for tracking source code lines.
-
- The flat profile is the most useful output table in line-by-line
-mode. The call graph isn't as useful as normal, since the current
-version of `gprof' does not propagate call graph arcs from source code
-lines to the enclosing function. The call graph does, however, show
-each line of code that called each function, along with a count.
-
- Here is a section of `gprof''s output, without line-by-line
-profiling. Note that `ct_init' accounted for four histogram hits, and
-13327 calls to `init_block'.
-
- Flat profile:
-
- Each sample counts as 0.01 seconds.
- % cumulative self self total
- time seconds seconds calls us/call us/call name
- 30.77 0.13 0.04 6335 6.31 6.31 ct_init
-
-
- Call graph (explanation follows)
-
-
- granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
-
- index % time self children called name
-
- 0.00 0.00 1/13496 name_too_long
- 0.00 0.00 40/13496 deflate
- 0.00 0.00 128/13496 deflate_fast
- 0.00 0.00 13327/13496 ct_init
- [7] 0.0 0.00 0.00 13496 init_block
-
- Now let's look at some of `gprof''s output from the same program run,
-this time with line-by-line profiling enabled. Note that `ct_init''s
-four histogram hits are broken down into four lines of source code -
-one hit occurred on each of lines 349, 351, 382 and 385. In the call
-graph, note how `ct_init''s 13327 calls to `init_block' are broken down
-into one call from line 396, 3071 calls from line 384, 3730 calls from
-line 385, and 6525 calls from 387.
-
- Flat profile:
-
- Each sample counts as 0.01 seconds.
- % cumulative self
- time seconds seconds calls name
- 7.69 0.10 0.01 ct_init (trees.c:349)
- 7.69 0.11 0.01 ct_init (trees.c:351)
- 7.69 0.12 0.01 ct_init (trees.c:382)
- 7.69 0.13 0.01 ct_init (trees.c:385)
-
-
- Call graph (explanation follows)
-
-
- granularity: each sample hit covers 4 byte(s) for 7.69% of 0.13 seconds
-
- % time self children called name
-
- 0.00 0.00 1/13496 name_too_long (gzip.c:1440)
- 0.00 0.00 1/13496 deflate (deflate.c:763)
- 0.00 0.00 1/13496 ct_init (trees.c:396)
- 0.00 0.00 2/13496 deflate (deflate.c:727)
- 0.00 0.00 4/13496 deflate (deflate.c:686)
- 0.00 0.00 5/13496 deflate (deflate.c:675)
- 0.00 0.00 12/13496 deflate (deflate.c:679)
- 0.00 0.00 16/13496 deflate (deflate.c:730)
- 0.00 0.00 128/13496 deflate_fast (deflate.c:654)
- 0.00 0.00 3071/13496 ct_init (trees.c:384)
- 0.00 0.00 3730/13496 ct_init (trees.c:385)
- 0.00 0.00 6525/13496 ct_init (trees.c:387)
- [6] 0.0 0.00 0.00 13496 init_block (trees.c:408)
-
-
-File: gprof.info, Node: Annotated Source, Prev: Line-by-line, Up: Output
-
-The Annotated Source Listing
-============================
-
- `gprof''s `-A' option triggers an annotated source listing, which
-lists the program's source code, each function labeled with the number
-of times it was called. You may also need to specify the `-I' option,
-if `gprof' can't find the source code files.
-
- Compiling with `gcc ... -g -pg -a' augments your program with
-basic-block counting code, in addition to function counting code. This
-enables `gprof' to determine how many times each line of code was
-executed. For example, consider the following function, taken from
-gzip, with line numbers added:
-
- 1 ulg updcrc(s, n)
- 2 uch *s;
- 3 unsigned n;
- 4 {
- 5 register ulg c;
- 6
- 7 static ulg crc = (ulg)0xffffffffL;
- 8
- 9 if (s == NULL) {
- 10 c = 0xffffffffL;
- 11 } else {
- 12 c = crc;
- 13 if (n) do {
- 14 c = crc_32_tab[...];
- 15 } while (--n);
- 16 }
- 17 crc = c;
- 18 return c ^ 0xffffffffL;
- 19 }
-
- `updcrc' has at least five basic-blocks. One is the function
-itself. The `if' statement on line 9 generates two more basic-blocks,
-one for each branch of the `if'. A fourth basic-block results from the
-`if' on line 13, and the contents of the `do' loop form the fifth
-basic-block. The compiler may also generate additional basic-blocks to
-handle various special cases.
-
- A program augmented for basic-block counting can be analyzed with
-`gprof -l -A'. I also suggest use of the `-x' option, which ensures
-that each line of code is labeled at least once. Here is `updcrc''s
-annotated source listing for a sample `gzip' run:
-
- ulg updcrc(s, n)
- uch *s;
- unsigned n;
- 2 ->{
- register ulg c;
-
- static ulg crc = (ulg)0xffffffffL;
-
- 2 -> if (s == NULL) {
- 1 -> c = 0xffffffffL;
- 1 -> } else {
- 1 -> c = crc;
- 1 -> if (n) do {
- 26312 -> c = crc_32_tab[...];
- 26312,1,26311 -> } while (--n);
- }
- 2 -> crc = c;
- 2 -> return c ^ 0xffffffffL;
- 2 ->}
-
- In this example, the function was called twice, passing once through
-each branch of the `if' statement. The body of the `do' loop was
-executed a total of 26312 times. Note how the `while' statement is
-annotated. It began execution 26312 times, once for each iteration
-through the loop. One of those times (the last time) it exited, while
-it branched back to the beginning of the loop 26311 times.
-
-
-File: gprof.info, Node: Inaccuracy, Next: How do I?, Prev: Output, Up: Top
-
-Inaccuracy of `gprof' Output
-****************************
-
-* Menu:
-
-* Sampling Error:: Statistical margins of error
-* Assumptions:: Estimating children times
-
-
-File: gprof.info, Node: Sampling Error, Next: Assumptions, Up: Inaccuracy
-
-Statistical Sampling Error
-==========================
-
- The run-time figures that `gprof' gives you are based on a sampling
-process, so they are subject to statistical inaccuracy. If a function
-runs only a small amount of time, so that on the average the sampling
-process ought to catch that function in the act only once, there is a
-pretty good chance it will actually find that function zero times, or
-twice.
-
- By contrast, the number-of-calls and basic-block figures are derived
-by counting, not sampling. They are completely accurate and will not
-vary from run to run if your program is deterministic.
-
- The "sampling period" that is printed at the beginning of the flat
-profile says how often samples are taken. The rule of thumb is that a
-run-time figure is accurate if it is considerably bigger than the
-sampling period.
-
- The actual amount of error can be predicted. For N samples, the
-_expected_ error is the square-root of N. For example, if the sampling
-period is 0.01 seconds and `foo''s run-time is 1 second, N is 100
-samples (1 second/0.01 seconds), sqrt(N) is 10 samples, so the expected
-error in `foo''s run-time is 0.1 seconds (10*0.01 seconds), or ten
-percent of the observed value. Again, if the sampling period is 0.01
-seconds and `bar''s run-time is 100 seconds, N is 10000 samples,
-sqrt(N) is 100 samples, so the expected error in `bar''s run-time is 1
-second, or one percent of the observed value. It is likely to vary
-this much _on the average_ from one profiling run to the next.
-(_Sometimes_ it will vary more.)
-
- This does not mean that a small run-time figure is devoid of
-information. If the program's _total_ run-time is large, a small
-run-time for one function does tell you that that function used an
-insignificant fraction of the whole program's time. Usually this means
-it is not worth optimizing.
-
- One way to get more accuracy is to give your program more (but
-similar) input data so it will take longer. Another way is to combine
-the data from several runs, using the `-s' option of `gprof'. Here is
-how:
-
- 1. Run your program once.
-
- 2. Issue the command `mv gmon.out gmon.sum'.
-
- 3. Run your program again, the same as before.
-
- 4. Merge the new data in `gmon.out' into `gmon.sum' with this command:
-
- gprof -s EXECUTABLE-FILE gmon.out gmon.sum
-
- 5. Repeat the last two steps as often as you wish.
-
- 6. Analyze the cumulative data using this command:
-
- gprof EXECUTABLE-FILE gmon.sum > OUTPUT-FILE
-
-
-File: gprof.info, Node: Assumptions, Prev: Sampling Error, Up: Inaccuracy
-
-Estimating `children' Times
-===========================
-
- Some of the figures in the call graph are estimates--for example, the
-`children' time values and all the the time figures in caller and
-subroutine lines.
-
- There is no direct information about these measurements in the
-profile data itself. Instead, `gprof' estimates them by making an
-assumption about your program that might or might not be true.
-
- The assumption made is that the average time spent in each call to
-any function `foo' is not correlated with who called `foo'. If `foo'
-used 5 seconds in all, and 2/5 of the calls to `foo' came from `a',
-then `foo' contributes 2 seconds to `a''s `children' time, by
-assumption.
-
- This assumption is usually true enough, but for some programs it is
-far from true. Suppose that `foo' returns very quickly when its
-argument is zero; suppose that `a' always passes zero as an argument,
-while other callers of `foo' pass other arguments. In this program,
-all the time spent in `foo' is in the calls from callers other than `a'.
-But `gprof' has no way of knowing this; it will blindly and incorrectly
-charge 2 seconds of time in `foo' to the children of `a'.
-
- We hope some day to put more complete data into `gmon.out', so that
-this assumption is no longer needed, if we can figure out how. For the
-nonce, the estimated figures are usually more useful than misleading.
-
-
-File: gprof.info, Node: How do I?, Next: Incompatibilities, Prev: Inaccuracy, Up: Top
-
-Answers to Common Questions
-***************************
-
-How do I find which lines in my program were executed the most times?
- Compile your program with basic-block counting enabled, run it,
- then use the following pipeline:
-
- gprof -l -C OBJFILE | sort -k 3 -n -r
-
- This listing will show you the lines in your code executed most
- often, but not necessarily those that consumed the most time.
-
-How do I find which lines in my program called a particular function?
- Use `gprof -l' and lookup the function in the call graph. The
- callers will be broken down by function and line number.
-
-How do I analyze a program that runs for less than a second?
- Try using a shell script like this one:
-
- for i in `seq 1 100`; do
- fastprog
- mv gmon.out gmon.out.$i
- done
-
- gprof -s fastprog gmon.out.*
-
- gprof fastprog gmon.sum
-
- If your program is completely deterministic, all the call counts
- will be simple multiples of 100 (i.e. a function called once in
- each run will appear with a call count of 100).
-
-
-File: gprof.info, Node: Incompatibilities, Next: Details, Prev: How do I?, Up: Top
-
-Incompatibilities with Unix `gprof'
-***********************************
-
- GNU `gprof' and Berkeley Unix `gprof' use the same data file
-`gmon.out', and provide essentially the same information. But there
-are a few differences.
-
- * GNU `gprof' uses a new, generalized file format with support for
- basic-block execution counts and non-realtime histograms. A magic
- cookie and version number allows `gprof' to easily identify new
- style files. Old BSD-style files can still be read. *Note File
- Format::.
-
- * For a recursive function, Unix `gprof' lists the function as a
- parent and as a child, with a `calls' field that lists the number
- of recursive calls. GNU `gprof' omits these lines and puts the
- number of recursive calls in the primary line.
-
- * When a function is suppressed from the call graph with `-e', GNU
- `gprof' still lists it as a subroutine of functions that call it.
-
- * GNU `gprof' accepts the `-k' with its argument in the form
- `from/to', instead of `from to'.
-
- * In the annotated source listing, if there are multiple basic
- blocks on the same line, GNU `gprof' prints all of their counts,
- separated by commas.
-
- * The blurbs, field widths, and output formats are different. GNU
- `gprof' prints blurbs after the tables, so that you can see the
- tables without skipping the blurbs.
-
-
-File: gprof.info, Node: Details, Prev: Incompatibilities, Up: Top
-
-Details of Profiling
-********************
-
-* Menu:
-
-* Implementation:: How a program collects profiling information
-* File Format:: Format of `gmon.out' files
-* Internals:: `gprof''s internal operation
-* Debugging:: Using `gprof''s `-d' option
-
-
-File: gprof.info, Node: Implementation, Next: File Format, Up: Details
-
-Implementation of Profiling
-===========================
-
- Profiling works by changing how every function in your program is
-compiled so that when it is called, it will stash away some information
-about where it was called from. From this, the profiler can figure out
-what function called it, and can count how many times it was called.
-This change is made by the compiler when your program is compiled with
-the `-pg' option, which causes every function to call `mcount' (or
-`_mcount', or `__mcount', depending on the OS and compiler) as one of
-its first operations.
-
- The `mcount' routine, included in the profiling library, is
-responsible for recording in an in-memory call graph table both its
-parent routine (the child) and its parent's parent. This is typically
-done by examining the stack frame to find both the address of the
-child, and the return address in the original parent. Since this is a
-very machine-dependent operation, `mcount' itself is typically a short
-assembly-language stub routine that extracts the required information,
-and then calls `__mcount_internal' (a normal C function) with two
-arguments - `frompc' and `selfpc'. `__mcount_internal' is responsible
-for maintaining the in-memory call graph, which records `frompc',
-`selfpc', and the number of times each of these call arcs was traversed.
-
- GCC Version 2 provides a magical function
-(`__builtin_return_address'), which allows a generic `mcount' function
-to extract the required information from the stack frame. However, on
-some architectures, most notably the SPARC, using this builtin can be
-very computationally expensive, and an assembly language version of
-`mcount' is used for performance reasons.
-
- Number-of-calls information for library routines is collected by
-using a special version of the C library. The programs in it are the
-same as in the usual C library, but they were compiled with `-pg'. If
-you link your program with `gcc ... -pg', it automatically uses the
-profiling version of the library.
-
- Profiling also involves watching your program as it runs, and
-keeping a histogram of where the program counter happens to be every
-now and then. Typically the program counter is looked at around 100
-times per second of run time, but the exact frequency may vary from
-system to system.
-
- This is done is one of two ways. Most UNIX-like operating systems
-provide a `profil()' system call, which registers a memory array with
-the kernel, along with a scale factor that determines how the program's
-address space maps into the array. Typical scaling values cause every
-2 to 8 bytes of address space to map into a single array slot. On
-every tick of the system clock (assuming the profiled program is
-running), the value of the program counter is examined and the
-corresponding slot in the memory array is incremented. Since this is
-done in the kernel, which had to interrupt the process anyway to handle
-the clock interrupt, very little additional system overhead is required.
-
- However, some operating systems, most notably Linux 2.0 (and
-earlier), do not provide a `profil()' system call. On such a system,
-arrangements are made for the kernel to periodically deliver a signal
-to the process (typically via `setitimer()'), which then performs the
-same operation of examining the program counter and incrementing a slot
-in the memory array. Since this method requires a signal to be
-delivered to user space every time a sample is taken, it uses
-considerably more overhead than kernel-based profiling. Also, due to
-the added delay required to deliver the signal, this method is less
-accurate as well.
-
- A special startup routine allocates memory for the histogram and
-either calls `profil()' or sets up a clock signal handler. This
-routine (`monstartup') can be invoked in several ways. On Linux
-systems, a special profiling startup file `gcrt0.o', which invokes
-`monstartup' before `main', is used instead of the default `crt0.o'.
-Use of this special startup file is one of the effects of using `gcc
-... -pg' to link. On SPARC systems, no special startup files are used.
-Rather, the `mcount' routine, when it is invoked for the first time
-(typically when `main' is called), calls `monstartup'.
-
- If the compiler's `-a' option was used, basic-block counting is also
-enabled. Each object file is then compiled with a static array of
-counts, initially zero. In the executable code, every time a new
-basic-block begins (i.e. when an `if' statement appears), an extra
-instruction is inserted to increment the corresponding count in the
-array. At compile time, a paired array was constructed that recorded
-the starting address of each basic-block. Taken together, the two
-arrays record the starting address of every basic-block, along with the
-number of times it was executed.
-
- The profiling library also includes a function (`mcleanup') which is
-typically registered using `atexit()' to be called as the program
-exits, and is responsible for writing the file `gmon.out'. Profiling
-is turned off, various headers are output, and the histogram is
-written, followed by the call-graph arcs and the basic-block counts.
-
- The output from `gprof' gives no indication of parts of your program
-that are limited by I/O or swapping bandwidth. This is because samples
-of the program counter are taken at fixed intervals of the program's
-run time. Therefore, the time measurements in `gprof' output say
-nothing about time that your program was not running. For example, a
-part of the program that creates so much data that it cannot all fit in
-physical memory at once may run very slowly due to thrashing, but
-`gprof' will say it uses little time. On the other hand, sampling by
-run time has the advantage that the amount of load due to other users
-won't directly affect the output you get.
-
-
-File: gprof.info, Node: File Format, Next: Internals, Prev: Implementation, Up: Details
-
-Profiling Data File Format
-==========================
-
- The old BSD-derived file format used for profile data does not
-contain a magic cookie that allows to check whether a data file really
-is a `gprof' file. Furthermore, it does not provide a version number,
-thus rendering changes to the file format almost impossible. GNU
-`gprof' uses a new file format that provides these features. For
-backward compatibility, GNU `gprof' continues to support the old
-BSD-derived format, but not all features are supported with it. For
-example, basic-block execution counts cannot be accommodated by the old
-file format.
-
- The new file format is defined in header file `gmon_out.h'. It
-consists of a header containing the magic cookie and a version number,
-as well as some spare bytes available for future extensions. All data
-in a profile data file is in the native format of the host on which the
-profile was collected. GNU `gprof' adapts automatically to the
-byte-order in use.
-
- In the new file format, the header is followed by a sequence of
-records. Currently, there are three different record types: histogram
-records, call-graph arc records, and basic-block execution count
-records. Each file can contain any number of each record type. When
-reading a file, GNU `gprof' will ensure records of the same type are
-compatible with each other and compute the union of all records. For
-example, for basic-block execution counts, the union is simply the sum
-of all execution counts for each basic-block.
-
-Histogram Records
------------------
-
- Histogram records consist of a header that is followed by an array of
-bins. The header contains the text-segment range that the histogram
-spans, the size of the histogram in bytes (unlike in the old BSD
-format, this does not include the size of the header), the rate of the
-profiling clock, and the physical dimension that the bin counts
-represent after being scaled by the profiling clock rate. The physical
-dimension is specified in two parts: a long name of up to 15 characters
-and a single character abbreviation. For example, a histogram
-representing real-time would specify the long name as "seconds" and the
-abbreviation as "s". This feature is useful for architectures that
-support performance monitor hardware (which, fortunately, is becoming
-increasingly common). For example, under DEC OSF/1, the "uprofile"
-command can be used to produce a histogram of, say, instruction cache
-misses. In this case, the dimension in the histogram header could be
-set to "i-cache misses" and the abbreviation could be set to "1"
-(because it is simply a count, not a physical dimension). Also, the
-profiling rate would have to be set to 1 in this case.
-
- Histogram bins are 16-bit numbers and each bin represent an equal
-amount of text-space. For example, if the text-segment is one thousand
-bytes long and if there are ten bins in the histogram, each bin
-represents one hundred bytes.
-
-Call-Graph Records
-------------------
-
- Call-graph records have a format that is identical to the one used in
-the BSD-derived file format. It consists of an arc in the call graph
-and a count indicating the number of times the arc was traversed during
-program execution. Arcs are specified by a pair of addresses: the
-first must be within caller's function and the second must be within
-the callee's function. When performing profiling at the function
-level, these addresses can point anywhere within the respective
-function. However, when profiling at the line-level, it is better if
-the addresses are as close to the call-site/entry-point as possible.
-This will ensure that the line-level call-graph is able to identify
-exactly which line of source code performed calls to a function.
-
-Basic-Block Execution Count Records
------------------------------------
-
- Basic-block execution count records consist of a header followed by a
-sequence of address/count pairs. The header simply specifies the
-length of the sequence. In an address/count pair, the address
-identifies a basic-block and the count specifies the number of times
-that basic-block was executed. Any address within the basic-address can
-be used.
-
-
-File: gprof.info, Node: Internals, Next: Debugging, Prev: File Format, Up: Details
-
-`gprof''s Internal Operation
-============================
-
- Like most programs, `gprof' begins by processing its options.
-During this stage, it may building its symspec list
-(`sym_ids.c:sym_id_add'), if options are specified which use symspecs.
-`gprof' maintains a single linked list of symspecs, which will
-eventually get turned into 12 symbol tables, organized into six
-include/exclude pairs - one pair each for the flat profile
-(INCL_FLAT/EXCL_FLAT), the call graph arcs (INCL_ARCS/EXCL_ARCS),
-printing in the call graph (INCL_GRAPH/EXCL_GRAPH), timing propagation
-in the call graph (INCL_TIME/EXCL_TIME), the annotated source listing
-(INCL_ANNO/EXCL_ANNO), and the execution count listing
-(INCL_EXEC/EXCL_EXEC).
-
- After option processing, `gprof' finishes building the symspec list
-by adding all the symspecs in `default_excluded_list' to the exclude
-lists EXCL_TIME and EXCL_GRAPH, and if line-by-line profiling is
-specified, EXCL_FLAT as well. These default excludes are not added to
-EXCL_ANNO, EXCL_ARCS, and EXCL_EXEC.
-
- Next, the BFD library is called to open the object file, verify that
-it is an object file, and read its symbol table (`core.c:core_init'),
-using `bfd_canonicalize_symtab' after mallocing an appropriately sized
-array of symbols. At this point, function mappings are read (if the
-`--file-ordering' option has been specified), and the core text space
-is read into memory (if the `-c' option was given).
-
- `gprof''s own symbol table, an array of Sym structures, is now built.
-This is done in one of two ways, by one of two routines, depending on
-whether line-by-line profiling (`-l' option) has been enabled. For
-normal profiling, the BFD canonical symbol table is scanned. For
-line-by-line profiling, every text space address is examined, and a new
-symbol table entry gets created every time the line number changes. In
-either case, two passes are made through the symbol table - one to
-count the size of the symbol table required, and the other to actually
-read the symbols. In between the two passes, a single array of type
-`Sym' is created of the appropriate length. Finally,
-`symtab.c:symtab_finalize' is called to sort the symbol table and
-remove duplicate entries (entries with the same memory address).
-
- The symbol table must be a contiguous array for two reasons. First,
-the `qsort' library function (which sorts an array) will be used to
-sort the symbol table. Also, the symbol lookup routine
-(`symtab.c:sym_lookup'), which finds symbols based on memory address,
-uses a binary search algorithm which requires the symbol table to be a
-sorted array. Function symbols are indicated with an `is_func' flag.
-Line number symbols have no special flags set. Additionally, a symbol
-can have an `is_static' flag to indicate that it is a local symbol.
-
- With the symbol table read, the symspecs can now be translated into
-Syms (`sym_ids.c:sym_id_parse'). Remember that a single symspec can
-match multiple symbols. An array of symbol tables (`syms') is created,
-each entry of which is a symbol table of Syms to be included or
-excluded from a particular listing. The master symbol table and the
-symspecs are examined by nested loops, and every symbol that matches a
-symspec is inserted into the appropriate syms table. This is done
-twice, once to count the size of each required symbol table, and again
-to build the tables, which have been malloced between passes. From now
-on, to determine whether a symbol is on an include or exclude symspec
-list, `gprof' simply uses its standard symbol lookup routine on the
-appropriate table in the `syms' array.
-
- Now the profile data file(s) themselves are read
-(`gmon_io.c:gmon_out_read'), first by checking for a new-style
-`gmon.out' header, then assuming this is an old-style BSD `gmon.out' if
-the magic number test failed.
-
- New-style histogram records are read by `hist.c:hist_read_rec'. For
-the first histogram record, allocate a memory array to hold all the
-bins, and read them in. When multiple profile data files (or files
-with multiple histogram records) are read, the starting address, ending
-address, number of bins and sampling rate must match between the
-various histograms, or a fatal error will result. If everything
-matches, just sum the additional histograms into the existing in-memory
-array.
-
- As each call graph record is read (`call_graph.c:cg_read_rec'), the
-parent and child addresses are matched to symbol table entries, and a
-call graph arc is created by `cg_arcs.c:arc_add', unless the arc fails
-a symspec check against INCL_ARCS/EXCL_ARCS. As each arc is added, a
-linked list is maintained of the parent's child arcs, and of the child's
-parent arcs. Both the child's call count and the arc's call count are
-incremented by the record's call count.
-
- Basic-block records are read (`basic_blocks.c:bb_read_rec'), but
-only if line-by-line profiling has been selected. Each basic-block
-address is matched to a corresponding line symbol in the symbol table,
-and an entry made in the symbol's bb_addr and bb_calls arrays. Again,
-if multiple basic-block records are present for the same address, the
-call counts are cumulative.
-
- A gmon.sum file is dumped, if requested (`gmon_io.c:gmon_out_write').
-
- If histograms were present in the data files, assign them to symbols
-(`hist.c:hist_assign_samples') by iterating over all the sample bins
-and assigning them to symbols. Since the symbol table is sorted in
-order of ascending memory addresses, we can simple follow along in the
-symbol table as we make our pass over the sample bins. This step
-includes a symspec check against INCL_FLAT/EXCL_FLAT. Depending on the
-histogram scale factor, a sample bin may span multiple symbols, in
-which case a fraction of the sample count is allocated to each symbol,
-proportional to the degree of overlap. This effect is rare for normal
-profiling, but overlaps are more common during line-by-line profiling,
-and can cause each of two adjacent lines to be credited with half a
-hit, for example.
-
- If call graph data is present, `cg_arcs.c:cg_assemble' is called.
-First, if `-c' was specified, a machine-dependent routine (`find_call')
-scans through each symbol's machine code, looking for subroutine call
-instructions, and adding them to the call graph with a zero call count.
-A topological sort is performed by depth-first numbering all the
-symbols (`cg_dfn.c:cg_dfn'), so that children are always numbered less
-than their parents, then making a array of pointers into the symbol
-table and sorting it into numerical order, which is reverse topological
-order (children appear before parents). Cycles are also detected at
-this point, all members of which are assigned the same topological
-number. Two passes are now made through this sorted array of symbol
-pointers. The first pass, from end to beginning (parents to children),
-computes the fraction of child time to propagate to each parent and a
-print flag. The print flag reflects symspec handling of
-INCL_GRAPH/EXCL_GRAPH, with a parent's include or exclude (print or no
-print) property being propagated to its children, unless they
-themselves explicitly appear in INCL_GRAPH or EXCL_GRAPH. A second
-pass, from beginning to end (children to parents) actually propagates
-the timings along the call graph, subject to a check against
-INCL_TIME/EXCL_TIME. With the print flag, fractions, and timings now
-stored in the symbol structures, the topological sort array is now
-discarded, and a new array of pointers is assembled, this time sorted
-by propagated time.
-
- Finally, print the various outputs the user requested, which is now
-fairly straightforward. The call graph (`cg_print.c:cg_print') and
-flat profile (`hist.c:hist_print') are regurgitations of values already
-computed. The annotated source listing
-(`basic_blocks.c:print_annotated_source') uses basic-block information,
-if present, to label each line of code with call counts, otherwise only
-the function call counts are presented.
-
- The function ordering code is marginally well documented in the
-source code itself (`cg_print.c'). Basically, the functions with the
-most use and the most parents are placed first, followed by other
-functions with the most use, followed by lower use functions, followed
-by unused functions at the end.
-
-
-File: gprof.info, Node: Debugging, Prev: Internals, Up: Details
-
-Debugging `gprof'
------------------
-
- If `gprof' was compiled with debugging enabled, the `-d' option
-triggers debugging output (to stdout) which can be helpful in
-understanding its operation. The debugging number specified is
-interpreted as a sum of the following options:
-
-2 - Topological sort
- Monitor depth-first numbering of symbols during call graph analysis
-
-4 - Cycles
- Shows symbols as they are identified as cycle heads
-
-16 - Tallying
- As the call graph arcs are read, show each arc and how the total
- calls to each function are tallied
-
-32 - Call graph arc sorting
- Details sorting individual parents/children within each call graph
- entry
-
-64 - Reading histogram and call graph records
- Shows address ranges of histograms as they are read, and each call
- graph arc
-
-128 - Symbol table
- Reading, classifying, and sorting the symbol table from the object
- file. For line-by-line profiling (`-l' option), also shows line
- numbers being assigned to memory addresses.
-
-256 - Static call graph
- Trace operation of `-c' option
-
-512 - Symbol table and arc table lookups
- Detail operation of lookup routines
-
-1024 - Call graph propagation
- Shows how function times are propagated along the call graph
-
-2048 - Basic-blocks
- Shows basic-block records as they are read from profile data (only
- meaningful with `-l' option)
-
-4096 - Symspecs
- Shows symspec-to-symbol pattern matching operation
-
-8192 - Annotate source
- Tracks operation of `-A' option
-
-