diff options
| author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-10 20:28:12 +0000 |
|---|---|---|
| committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-10 20:28:12 +0000 |
| commit | 039b7dc7874a73ca4619949d864480d0675d6f57 (patch) | |
| tree | f1a1c63dd54a53c776548d53d77f15f05f6926ee | |
| parent | 4019846bb0622471c2fe2bbffd456b1dfc970f67 (diff) | |
| download | ppe42-gcc-039b7dc7874a73ca4619949d864480d0675d6f57.tar.gz ppe42-gcc-039b7dc7874a73ca4619949d864480d0675d6f57.zip | |
Fix too small buffer problem found by ia64 port.
* except.c (start_dynamic_handler): Compute size using
STACK_SAVEAREA_MODE.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29275 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/except.c | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0e52036b0b4..f174de13e19 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Sep 10 13:21:21 1999 Jim Wilson <wilson@cygnus.com> + + * except.c (start_dynamic_handler): Compute size using + STACK_SAVEAREA_MODE. + Fri Sep 10 16:01:23 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * protoize.c: Remove various __STDC__ and POSIX hacks. Don't diff --git a/gcc/except.c b/gcc/except.c index f74d8fbf09f..d36fec673e7 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -1273,9 +1273,14 @@ start_dynamic_handler () #ifndef DONT_USE_BUILTIN_SETJMP /* The number of Pmode words for the setjmp buffer, when using the - builtin setjmp/longjmp, see expand_builtin, case - BUILT_IN_LONGJMP. */ - size = 5; + builtin setjmp/longjmp, see expand_builtin, case BUILT_IN_LONGJMP. */ + /* We use 2 words here before calling expand_builtin_setjmp. + expand_builtin_setjmp uses 2 words, and then calls emit_stack_save. + emit_stack_save needs space of size STACK_SAVEAREA_MODE (SAVE_NONLOCAL). + Subtract one, because the assign_stack_local call below adds 1. */ + size = (2 + 2 + (GET_MODE_SIZE (STACK_SAVEAREA_MODE (SAVE_NONLOCAL)) + / GET_MODE_SIZE (Pmode)) + - 1); #else #ifdef JMP_BUF_SIZE size = JMP_BUF_SIZE; |

