aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@gnu.org>2009-08-07 00:02:34 +0200
committerThomas Schwinge <tschwinge@gcc.gnu.org>2009-08-07 00:02:34 +0200
commit48c4de16460fcecdef33c59f2fdfdb40b4f829c9 (patch)
tree8dcdc5645e362db9fb80eb891461282868c75fa2
parentf36d140ec568d9474c1a991c3bab831c6d868fd6 (diff)
downloadgcc-48c4de16460fcecdef33c59f2fdfdb40b4f829c9.zip
gcc-48c4de16460fcecdef33c59f2fdfdb40b4f829c9.tar.gz
gcc-48c4de16460fcecdef33c59f2fdfdb40b4f829c9.tar.bz2
2009-08-06 Thomas Schwinge <tschwinge@gnu.org>
* gcc/doc/extend.texi (__builtin_extract_return_address) (__builtin_frob_return_address): Document. From-SVN: r150546
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/doc/extend.texi17
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 24920f0..879b9d1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-06 Thomas Schwinge <tschwinge@gnu.org>
+
+ * gcc/doc/extend.texi (__builtin_extract_return_address)
+ (__builtin_frob_return_address): Document.
+
2009-08-06 Paul Brook <paul@codesourcery.com>
* config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 3435e2c..c0fed80 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -5844,10 +5844,27 @@ of the stack has been reached, this function will return @code{0} or a
random value. In addition, @code{__builtin_frame_address} may be used
to determine if the top of the stack has been reached.
+Additional post-processing of the returned value may be needed, see
+@code{__builtin_extract_return_address}.
+
This function should only be used with a nonzero argument for debugging
purposes.
@end deftypefn
+@deftypefn {Built-in Function} {void *} __builtin_extract_return_address (void *@var{addr})
+The address as returned by @code{__builtin_return_address} may have to be fed
+through this function to get the actual encoded address. For example, on the
+31-bit S/390 platform the highest bit has to be masked out, or on SPARC
+platforms an offset has to be added for the true next instruction to be
+executed.
+
+If no fixup is needed, this function simply passes through @var{addr}.
+@end deftypefn
+
+@deftypefn {Built-in Function} {void *} __builtin_frob_return_address (void *@var{addr})
+This function does the reverse of @code{__builtin_extract_return_address}.
+@end deftypefn
+
@deftypefn {Built-in Function} {void *} __builtin_frame_address (unsigned int @var{level})
This function is similar to @code{__builtin_return_address}, but it
returns the address of the function frame rather than the return address