aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <jkingdon@engr.sgi.com>1993-04-21 22:21:41 +0000
committerJim Kingdon <jkingdon@engr.sgi.com>1993-04-21 22:21:41 +0000
commit98ef6f318811424f774af31d52f171b2eecfe48c (patch)
tree217d49bb86a40e900513aff5c62d076ec2e8dc11
parent31258e4f6f1a275df7153c6e5ef5a83f8b12946d (diff)
downloadgdb-98ef6f318811424f774af31d52f171b2eecfe48c.zip
gdb-98ef6f318811424f774af31d52f171b2eecfe48c.tar.gz
gdb-98ef6f318811424f774af31d52f171b2eecfe48c.tar.bz2
* stabs.texinfo (Parameters): More on "local parameters".
-rw-r--r--gdb/doc/ChangeLog4
-rw-r--r--gdb/doc/stabs.texinfo26
2 files changed, 19 insertions, 11 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 44a1ace..8559917 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,7 @@
+Wed Apr 21 15:18:47 1993 Jim Kingdon (kingdon@cygnus.com)
+
+ * stabs.texinfo (Parameters): More on "local parameters".
+
Mon Apr 19 08:00:51 1993 Jim Kingdon (kingdon@cygnus.com)
* stabs.texinfo (Parameters): Re-do "local parameters" section.
diff --git a/gdb/doc/stabs.texinfo b/gdb/doc/stabs.texinfo
index 6d3f411..56af513 100644
--- a/gdb/doc/stabs.texinfo
+++ b/gdb/doc/stabs.texinfo
@@ -1007,17 +1007,21 @@ handle either one. Symbol type @samp{C_RPSYM} is used with @samp{R} and
@samp{N_RSYM} is used with @samp{P}.
There is another case similar to an argument in a register, which is an
-argument which is actually stored as a local variable. The only case I
-know of where this happens is when the argument was passed in a register
-and then the compiler stores it as a local variable. In this case the
-compiler would probably be much better off claiming that it's in a
-register, but at least in one case this isn't done. Some compilers are
-said to use the pair of symbols approach described above ("arg:p"
-followed by "arg:"), but I don't which if any. GCC, at least on the
-960, uses a @samp{p} symbol descriptor for this case but uses
-@samp{N_LSYM} instead of @samp{N_PSYM} to distinguish it. In this case
-the value of the symbol is an offset relative to the local variables for
-that function, not relative to the arguments.
+argument which is actually stored as a local variable. Sometimes this
+happens when the argument was passed in a register and then the compiler
+stores it as a local variable. If possible, the compiler should claim
+that it's in a register, but this isn't always done. Some compilers use
+the pair of symbols approach described above ("arg:p" followed by
+"arg:"); this includes gcc1 (not gcc2) on the sparc when passing a small
+structure and gcc2 when the argument type is float and it is passed as a
+double and converted to float by the prologue (in the latter case the
+type of the "arg:p" symbol is double and the type of the "arg:" symbol
+is float). GCC, at least on the 960, uses a single @samp{p} symbol
+descriptor for an argument which is stored as a local variable but uses
+@samp{N_LSYM} instead of @samp{N_PSYM}. In this case the value of the
+symbol is an offset relative to the local variables for that function,
+not relative to the arguments (on some machines those are the same
+thing, but not on all).
As a simple example, the code