diff options
author | Andrew MacLeod <amacleod@cygnus.com> | 1998-06-17 13:05:54 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-06-17 13:05:54 +0000 |
commit | 3301dc51911505b0c7e9b60160ddf6666bd31424 (patch) | |
tree | 22bc8784a037d4b0cfa19fb8c9ca1a0567bf8d46 /gcc | |
parent | 33f264afdaf61ef056db4c94d210c60a50460eca (diff) | |
download | gcc-3301dc51911505b0c7e9b60160ddf6666bd31424.zip gcc-3301dc51911505b0c7e9b60160ddf6666bd31424.tar.gz gcc-3301dc51911505b0c7e9b60160ddf6666bd31424.tar.bz2 |
eh-common.h (struct eh_context): Add comment for hidden use of field dynamic_handler_chain.
* 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.
From-SVN: r20540
Diffstat (limited to 'gcc')
-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 a8c08dc..18888da 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 51ecf31..c16d66a 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 e76f21c..c5c7259 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); |