summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@l3000.localdomain>2009-10-13 13:43:46 -0400
committerSøren Sandmann Pedersen <ssp@l3000.localdomain>2009-10-13 13:43:49 -0400
commitf922d1f612cc99af7436f37245dd8d02a07c3258 (patch)
tree358be1d2b85314733267fa8661e6d30460d939d9
parentc733863d5d617d9234b28d954905b67a53b83553 (diff)
Add unwind-info.txtunwind
-rw-r--r--unwind-info.txt45
1 files changed, 45 insertions, 0 deletions
diff --git a/unwind-info.txt b/unwind-info.txt
new file mode 100644
index 0000000..62bf4ac
--- /dev/null
+++ b/unwind-info.txt
@@ -0,0 +1,45 @@
+Unwind information is defined in two very similar, but subtly
+different formats. One is the eh_frame format, then other is the
+debug_frame format.
+
+Both formats have the concept of CIEs and FDEs. These can be
+dynamically distinguished.
+
+
+.eh_frame
+
+The .eh_frame section is organized as a CIE followed by one or more
+FDEs.
+
+In this format, the CIE pointer/FDE is always 4 bytes, whereas in the
+debug_frame version it is 8 bytes if the initial length indicated a 64
+bit description.
+
+
+ .eh_frame DWARF 2 DWARF 3
+header: .eh_frame_hdr not used not used
+
+CIE:
+
+Length 32+ext 32 bits 32+ext
+CIE id 32 bits [=0] 32 bits [=-1] 32/64 d.o. ext [=-1]
+version 32 bits [=1] ubyte [=1] ubyte [=3]
+augstring string string string
+
+eh data 32/64 do arch n/a n/a
+ only if eh in
+ aug
+
+code alignf uleb128 uleb128 uleb128
+data alignf sleb128 sleb128 sleb128
+return register ? ubyte uleb128
+
+aug length if z in aug, n/a n/a
+ uleb128
+aug data block
+
+instructions variable variable variable
+padding nops nops nops
+
+
+FDE