diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-06-17 13:05:54 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-06-17 13:05:54 +0000 |
commit | d945b22b8d5bb462f49562a6fec2202b44cbcfde (patch) | |
tree | 22bc8784a037d4b0cfa19fb8c9ca1a0567bf8d46 | |
parent | 4c55d5ef205f46e2f89478269ab90427ddbf691c (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/eh-common.h | 5 | ||||
-rw-r--r-- | gcc/except.c | 5 |
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); |