diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2007-05-17 17:27:26 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2007-05-17 17:27:26 +0000 |
commit | 4b7d318b85051503fae2b758837f2bd56c0bd37c (patch) | |
tree | cc5c1d32a0ef7b70c7a2209136bb1b5956a8aaa5 /gas/doc | |
parent | 30618a1e611122545b53916334c5ad8ee3656f1f (diff) | |
download | gdb-4b7d318b85051503fae2b758837f2bd56c0bd37c.zip gdb-4b7d318b85051503fae2b758837f2bd56c0bd37c.tar.gz gdb-4b7d318b85051503fae2b758837f2bd56c0bd37c.tar.bz2 |
2007-05-17 H.J. Lu <hongjiu.lu@intel.com>
PR gas/4517
2003-06-05 Michal Ludvig <mludvig@suse.cz>
* as.texinfo: Document new directives: .cfi_restore,
.cfi_undefined, .cfi_same_value, .cfi_return_column,
.cfi_remember_state and .cfi_restore_state.
2007-05-17 H.J. Lu <hongjiu.lu@intel.com>
2003-06-05 Michal Ludvig <mludvig@suse.cz>
* testsuite/gas/cfi/cfi-x86_64.s: Test new directives
and different writings of registers and numbers.
* testsuite/gas/cfi/cfi-x86_64.d: Updated pattern to
match the above change.
Diffstat (limited to 'gas/doc')
-rw-r--r-- | gas/doc/as.texinfo | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index ac61d2b..ce6a18f 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -3790,7 +3790,7 @@ Some machine configurations provide additional directives. * Byte:: @code{.byte @var{expressions}} * Comm:: @code{.comm @var{symbol} , @var{length} } -* CFI directives:: @code{.cfi_startproc}, @code{.cfi_endproc}, etc. +* CFI directives:: @code{.cfi_startproc [simple]}, @code{.cfi_endproc}, etc. * Data:: @code{.data @var{subsection}} @ifset COFF @@ -4109,14 +4109,16 @@ The syntax for @code{.comm} differs slightly on the HPPA. The syntax is @end ifset @node CFI directives -@section @code{.cfi_startproc} +@section @code{.cfi_startproc [simple]} @cindex @code{cfi_startproc} directive @code{.cfi_startproc} is used at the beginning of each function that should have an entry in @code{.eh_frame}. It initializes some internal -data structures and emits architecture dependent initial CFI instructions. -Don't forget to close the function by +data structures. Don't forget to close the function by @code{.cfi_endproc}. +Unless @code{.cfi_startproc} is used along with parameter @code{simple} +it also emits some architecture dependent initial CFI instructions. + @section @code{.cfi_endproc} @cindex @code{cfi_endproc} directive @code{.cfi_endproc} is used at the end of a function where it closes its @@ -4172,6 +4174,31 @@ using the known displacement of the CFA register from the CFA. This is often easier to use, because the number will match the code it's annotating. +@section @code{.cfi_register @var{register1}, @var{register2}} +Previous value of @var{register1} is saved in register @var{register2}. + +@section @code{.cfi_restore @var{register}} +@code{.cfi_restore} says that the rule for @var{register} is now the +same as it was at the beginning of the function, after all initial +instruction added by @code{.cfi_startproc} were executed. + +@section @code{.cfi_undefined @var{register}} +From now on the previous value of @var{register} can't be restored anymore. + +@section @code{.cfi_same_value @var{register}} +Current value of @var{register} is the same like in the previous frame, +i.e. no restoration needed. + +@section @code{.cfi_remember_state}, +First save all current rules for all registers by @code{.cfi_remember_state}, +then totally screw them up by subsequent @code{.cfi_*} directives and when +everything is hopelessly bad, use @code{.cfi_restore_state} to restore +the previous saved state. + +@section @code{.cfi_return_column @var{register}} +Change return column @var{register}, i.e. the return address is either +directly in @var{register} or can be accessed by rules for @var{register}. + @section @code{.cfi_signal_frame} Mark current function as signal trampoline. |