summaryrefslogtreecommitdiff
path: root/gcc/unwind-pe.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-12 18:42:45 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-05-12 18:42:45 +0000
commit73eaf1ba572d0f5c415459c0b5290104e8a953a8 (patch)
treece9974611e5f1cdf18d989728b95ed19cf47ca2d /gcc/unwind-pe.h
parentd0a7822b32f81948b7989aaa65441a22e4b97fbe (diff)
downloadgcc-73eaf1ba572d0f5c415459c0b5290104e8a953a8.tar.gz
Add per-function commentary.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42003 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/unwind-pe.h')
-rw-r--r--gcc/unwind-pe.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/unwind-pe.h b/gcc/unwind-pe.h
index 9eda448b432..f940342b03d 100644
--- a/gcc/unwind-pe.h
+++ b/gcc/unwind-pe.h
@@ -42,6 +42,11 @@
#define DW_EH_PE_funcrel 0x40
#define DW_EH_PE_indirect 0x80
+
+
+/* Given an encoding, return the number of bytes the format occupies.
+ This is only defined for fixed-size encodings, and so does not
+ include leb128. */
static unsigned int
size_of_encoded_value (unsigned char encoding)
@@ -63,6 +68,11 @@ size_of_encoded_value (unsigned char encoding)
abort ();
}
+/* Given an encoding and an _Unwind_Context, return the base to which
+ the encoding is relative. This base may then be passed to
+ read_encoded_value_with_base for use when the _Unwind_Context is
+ not available. */
+
static _Unwind_Ptr
base_of_encoded_value (unsigned char encoding, _Unwind_Context *context)
{
@@ -85,6 +95,10 @@ base_of_encoded_value (unsigned char encoding, _Unwind_Context *context)
abort ();
}
+/* Load an encoded value from memory at P. The value is returned in VAL;
+ The function returns P incremented past the value. BASE is as given
+ by base_of_encoded_value for this encoding in the appropriate context. */
+
static const unsigned char *
read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
const unsigned char *p, _Unwind_Ptr *val)
@@ -186,6 +200,9 @@ read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
return p;
}
+/* Like read_encoded_value_with_base, but get the base from the context
+ rather than providing it directly. */
+
static inline const unsigned char *
read_encoded_value (_Unwind_Context *context, unsigned char encoding,
const unsigned char *p, _Unwind_Ptr *val)
@@ -195,12 +212,17 @@ read_encoded_value (_Unwind_Context *context, unsigned char encoding,
p, val);
}
+/* Read an unsigned leb128 value from P, store the value in VAL, return
+ P incremented past the value. */
+
static inline const unsigned char *
read_uleb128 (const unsigned char *p, _Unwind_Ptr *val)
{
return read_encoded_value_with_base (DW_EH_PE_uleb128, 0, p, val);
}
+/* Similar, but read a signed leb128 value. */
+
static inline const unsigned char *
read_sleb128 (const unsigned char *p, _Unwind_Ptr *val)
{