summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-06-17 13:05:54 +0000
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>1998-06-17 13:05:54 +0000
commitd945b22b8d5bb462f49562a6fec2202b44cbcfde (patch)
tree22bc8784a037d4b0cfa19fb8c9ca1a0567bf8d46
parent4c55d5ef205f46e2f89478269ab90427ddbf691c (diff)
downloadgcc-d945b22b8d5bb462f49562a6fec2202b44cbcfde.tar.gz
* eh-common.h (struct eh_context): Add comment for hidden use of
field dynamic_handler_chain. * except.c (get_dynamic_handler_chain): Comment on, and use the correct offset of the dynamic_handler_chain field. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20540 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/eh-common.h5
-rw-r--r--gcc/except.c5
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8c08dc2a0d..18888da7aad 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Wed Jun 17 15:57:48 EDT 1998 Andrew MacLeod (amacleod@cygnus.com)
+
+ * eh-common.h (struct eh_context): Add comment for hidden use of
+ field dynamic_handler_chain.
+ * except.c (get_dynamic_handler_chain): Comment on, and use the
+ correct offset of the dynamic_handler_chain field.
+
1998-06-17 12:46:56 1998 Jim Wilson <wilson@cygnus.com>
* mips/iris6.h (LINK_SPEC): Add -woff 131.
diff --git a/gcc/eh-common.h b/gcc/eh-common.h
index 51ecf31470e..c16d66a5008 100644
--- a/gcc/eh-common.h
+++ b/gcc/eh-common.h
@@ -20,7 +20,10 @@
/* The handler_label field MUST be the first field in this structure. The
__throw() library routine expects uses __eh_stub() from except.c, which
- simply dereferences the context pointer to get the handler */
+ simply dereferences the context pointer to get the handler.
+ The routine get_dynamic_handler_chain() also has a dependancy on
+ the location of 'dynamic_handler_chain'. If its location is changed,
+ that routine must be modified as well. */
struct eh_context
{
diff --git a/gcc/except.c b/gcc/except.c
index e76f21c2b84..c5c725992d2 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1017,7 +1017,10 @@ get_dynamic_handler_chain ()
rtx ehc, dhc, result;
ehc = get_eh_context ();
- dhc = ehc;
+
+ /* This is the offset of dynamic_handler_chain in the eh_context struct
+ declared in eh-common.h. If its location is change, change this offset */
+ dhc = plus_constant (ehc, GET_MODE_SIZE (Pmode));
result = copy_to_reg (dhc);