* stabs.texinfo (Procedures): Improve stuff on nested functions.
authorJim Kingdon <jkingdon@engr.sgi.com>
Fri, 30 Jul 1993 23:31:14 +0000 (23:31 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Fri, 30 Jul 1993 23:31:14 +0000 (23:31 +0000)
gdb/doc/ChangeLog
gdb/doc/stabs.texinfo

index a6cd43bab25048893b02cfe181555c57a8db77e3..d1c214be0d21ff5b43b5692fc8dd7f22c75436b1 100644 (file)
@@ -1,3 +1,7 @@
+Fri Jul 30 18:26:21 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
+
+       * stabs.texinfo (Procedures): Improve stuff on nested functions.
+
 Thu Jul 29 15:10:58 1993  Roland H. Pesch  (pesch@fowanton.cygnus.com)
 
        * remote.texi: (MIPS Remote) clearer doc for set/show timeout,
index 624be71055a7ecfed8f31386d244baba390e075e..09083eb1772a572ce341f7032de8ec0a6f231bca 100644 (file)
@@ -528,12 +528,39 @@ type information.
 For any of the above symbol descriptors, after the symbol descriptor and
 the type information, there is optionally a comma, followed by the name
 of the procedure, followed by a comma, followed by a name specifying the
-scope.  The first name is local to the scope specified.  I assume then
-that the name of the symbol (before the @samp{:}), if specified, is some
-sort of global name.  I assume the name specifying the scope is the name
-of a function specifying that scope.  This feature is an AIX extension,
-and this information is based on the manual; I haven't actually tried
-it.
+scope.  The first name is local to the scope specified, and seems to be
+redundant with the name of the symbol (before the @samp{:}).  The name
+specifying the scope is the name of a procedure specifying that scope.
+This feature is used by @sc{gcc}, and presumably Pascal, Modula-2, etc.,
+compilers, for nested functions.
+
+If procedures are nested more than one level deep, only the immediately
+containing scope is specified, for example:
+
+@example
+int
+foo (int x)
+@{
+  int bar (int y)
+    @{
+      int baz (int z)
+       @{
+         return x + y + z;
+       @}
+      return baz (x + 2 * y);
+    @}
+  return x + bar (3 * x);
+@}
+@end example
+
+@noindent
+produces the stabs:
+
+@example
+.stabs "baz:f1,baz,bar",36,0,0,_baz.15         # 36 == N_FUN
+.stabs "bar:f1,bar,foo",36,0,0,_bar.12
+.stabs "foo:F1",36,0,0,_foo
+@end example
 
 The stab representing a procedure is located immediately following the
 code of the procedure.  This stab is in turn directly followed by a