From ccb5954fea236ccb5e521b1d644962959daced28 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Fri, 23 Oct 1998 02:25:09 +0000 Subject: [PATCH] frame.c: Somewhat explain `FDE'. * frame.c: Somewhat explain `FDE'. Suggested by Brendan Kehoe From-SVN: r23243 --- gcc/ChangeLog | 5 +++++ gcc/frame.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5f6faa2ddbd..64d18b41aa3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 23 11:19:06 1998 Martin v. Löwis + + * frame.c: Somewhat explain `FDE'. + Suggested by Brendan Kehoe + Fri Oct 23 00:56:11 1998 Jason Merrill * expr.c (pending_chain): Move up. diff --git a/gcc/frame.c b/gcc/frame.c index b3d30c86f5e..ab803c90168 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. */ -- 2.30.2