aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin v. Löwis <loewis@informatik.hu-berlin.de>1998-10-23 02:25:09 +0000
committerMartin v. Löwis <loewis@gcc.gnu.org>1998-10-23 02:25:09 +0000
commitccb5954fea236ccb5e521b1d644962959daced28 (patch)
tree8de7b0e0f6baf363461b76aac8545fa6d298aebc /gcc
parent8d3f83d25c6c9a51b28469352e77e5bb969486d8 (diff)
downloadgcc-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')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/frame.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5f6faa2..64d18b4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Fri Oct 23 11:19:06 1998 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * frame.c: Somewhat explain `FDE'.
+ Suggested by Brendan Kehoe
+
Fri Oct 23 00:56:11 1998 Jason Merrill <jason@yorick.cygnus.com>
* expr.c (pending_chain): Move up.
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. */