diff options
author | Martin v. Löwis <loewis@informatik.hu-berlin.de> | 1998-10-23 02:25:09 +0000 |
---|---|---|
committer | Martin v. Löwis <loewis@gcc.gnu.org> | 1998-10-23 02:25:09 +0000 |
commit | ccb5954fea236ccb5e521b1d644962959daced28 (patch) | |
tree | 8de7b0e0f6baf363461b76aac8545fa6d298aebc /gcc/frame.c | |
parent | 8d3f83d25c6c9a51b28469352e77e5bb969486d8 (diff) | |
download | gcc-ccb5954fea236ccb5e521b1d644962959daced28.zip gcc-ccb5954fea236ccb5e521b1d644962959daced28.tar.gz gcc-ccb5954fea236ccb5e521b1d644962959daced28.tar.bz2 |
frame.c: Somewhat explain `FDE'.
* frame.c: Somewhat explain `FDE'.
Suggested by Brendan Kehoe
From-SVN: r23243
Diffstat (limited to 'gcc/frame.c')
-rw-r--r-- | gcc/frame.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/frame.c b/gcc/frame.c index b3d30c8..ab803c9 100644 --- a/gcc/frame.c +++ b/gcc/frame.c @@ -71,6 +71,25 @@ typedef unsigned int uaddr __attribute__ ((mode (pointer))); typedef int saddr __attribute__ ((mode (pointer))); typedef unsigned char ubyte; +/* Terminology: + CIE - Common Information Element + FDE - Frame Descriptor Element + + There is one per function, and it describes where the function code + is located, and what the register lifetimes and stack layout are + within the function. + + The data structures are defined in the DWARF specfication, although + not in a very readable way (see LITERATURE). + + Every time an exception is thrown, the code needs to locate the FDE + for the current function, and starts to look for exception regions + from that FDE. This works in a two-level search: + a) in a linear search, find the shared image (i.e. DLL) containing + the PC + b) using the FDE table for that shared object, locate the FDE using + binary search (which requires the sorting). */ + /* The first few fields of a CIE. The CIE_id field is 0 for a CIE, to distinguish it from a valid FDE. FDEs are aligned to an addressing unit boundary, but the fields within are unaligned. */ |