This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Overlapping EH regions
- To: dave at hiauly1 dot hia dot nrc dot ca (John David Anglin)
- Subject: Re: Overlapping EH regions
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Thu, 26 Oct 2000 18:12:10 -0400 (EDT)
- Cc: gcc-bugs at gcc dot gnu dot org
> The second problem is the following. I couldn't immediately see how
> it is related to using DONT_USE_BUILTIN_SETJMP. The following error
> occurs compiling libio/iostream.cc:
>
> /xxx/gnu/gcc-2.97/objdir/gcc/g++ -B/xxx/gnu/gcc-2.97/objdir/gcc/ -nostdinc++ -isystem /xxx/gnu/gcc-2.97/libstdc++ -isystem /xxx/gnu/gcc-2.97/libstdc++/std -isystem /xxx/gnu/gcc-2.97/libstdc++/stl -isystem /xxx/gnu/gcc-2.97/libio -isystem /xxx/gnu/gcc-2.97/objdir/hppa1.1-hp-hpux10.20/libio -L/xxx/gnu/gcc-2.97/objdir/hppa1.1-hp-hpux10.20/libstdc++ -B/usr/local/hppa1.1-hp-hpux10.20/bin/ -B/usr/local/hppa1.1-hp-hpux10.20/lib/ -isystem /usr/local/hppa1.1-hp-hpux10.20/include -c -O3 -fno-implicit-templates -I. -I../../../libio -nostdinc++ ../../../libio/iostream.cc
> ../../../libio/iostream.cc: In constructor `iostream::iostream(streambuf *,
> ostream *)':
> ../../../libio/iostream.cc:1038: Internal compiler error in , at except.c:2785
The above is definitely related to DONT_USE_BUILTIN_SETJMP. The problem
goes away if I revert this patch:
--- pa.h Wed Oct 25 16:55:50 2000
+++ pa.h.new Wed Oct 25 17:14:29 2000
@@ -1985,6 +1985,11 @@
of the return address. */ \
(GEN_INT (-4))
+/* FIXME: builtin_setjmp/builtin_longjmp don't manage the data linkage
+ table pointer register, r19, correctly. Thus, they don't work in
+ shared libraries. Don't use these two builtins for now. */
+#define DONT_USE_BUILTIN_SETJMP 1
+
/* The number of Pmode words for the setjmp buffer. */
#define JMP_BUF_SIZE 50
I thought the problem might be that current_function_has_nonlocal_label
and nonlocal_goto_handler_labels weren't being handled correctly for
this case. I added
/* Tell flow about the strange goings on. Putting `label' on
`nonlocal_goto_handler_labels' to indicates that function
calls may traverse the arc back to this label. */
current_function_has_nonlocal_label = 1;
nonlocal_goto_handler_labels
= gen_rtx_EXPR_LIST (VOIDmode, label, nonlocal_goto_handler_labels);
to jumpif_rtx in except.c but this didn't resolve the problem.
Any thoughts on the matter? There must be something else that differs
between the two modes.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)