This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

"unable to detect exception model"


Hi all again...

today, before delving into the Loki library, I tried to understand
something more of the problems I'm still experiencing with Gcc3.1 and
cin (PR2523) as of 3.1 20010417 (Yasir, can you confirm that, on the
contrary, Gcc3.0 works well for you too?)

Vane hope...

I tried therefore to decouple core language (in particular eh) from
libstdc++ issues: I downloaded libstdc++-92, plugged it into Gcc3.0
20010416, and tried to rebuild everything. Unfortunately the configure
stopped, being unable to detect the exception model... In fact, at
variance with branch's libstdc++, mainline libstdc++ and libstdc++-92
check (by grepping) for 2 possible exception model: the old "sjlj" or
the new "call frame". Neither is found in the testcase assembler
produced by my out-of-the-box Gcc3.0... (see att1 & att2).

So, I reasoned, if I configure Gcc with --enable-sjlj-exceptions...
Indeed, libstdc++-v3 configure found the sjlj-related bits
in testcase assembler. However, it looks like in the actual source code
sjlj exceptions are not supported anymore and the compilation stopped
with an error (att3) :(.

What I'm doing wrong?? It is really impossible to build a working
libstdc++-v3 without the new exception model?? In other terms: it is
presently impossible to test a new incarnation of libstdc++-v3 by using
"only" Gcc3.0 ??

If  in the next few hours no one will point out a stupid error in my
strategy ;) I will file a GNATS configure-related PR...

P.


-----------
Att1:

struct S { ~S(); };
void bar();
void foo()
{
  S s;
  bar();
}

-----------
Att2:

file "exc_test.C"
.globl __rethrow
 .text
 .align 16
.globl _Z3foov
 .type _Z3foov,@function
_Z3foov:
.LFB1:
.LEHB3:
 pushl %ebp
.LCFI0:
 movl %esp, %ebp
.LCFI1:
 subl $8, %esp
.LCFI2:
 call _Z3barv
.LEHE3:
 subl $12, %esp
 leal -1(%ebp), %eax
 pushl %eax
.LCFI3:
 call _ZN1SD1Ev
 addl $16, %esp
 jmp .L6
 .p2align 4,,7
.L3:
.LEHB5:
 subl $12, %esp
 leal -1(%ebp), %eax
 pushl %eax
 call _ZN1SD1Ev
 addl $16, %esp
 subl $12, %esp
 pushl $.LRTH3
 call __rethrow
 .p2align 4,,7
.L5:
.LEHE5:
.LCFI4:
 call _ZSt9terminatev
 .p2align 4,,7
.L6:
 movl %ebp, %esp
 popl %ebp
 ret
.LFE1:
.Lfe1:
 .size _Z3foov,.Lfe1-_Z3foov
 .section .gcc_except_table,"aw",@progbits
 .align 4
__EXCEPTION_TABLE__:
 .long -2
 .value 4
 .value 1
.LRTH0:
.LRTH3:
 .long .LEHB3
 .long .LEHE3
 .long .L3
 .long 0

.LRTH5:
 .long .LEHB5
 .long .LEHE5
 .long .L5
 .long 0

.LRTH1:
 .long -1


 .section .eh_frame,"aw",@progbits
__FRAME_BEGIN__:
 .4byte .LLCIE1
.LSCIE1:
 .4byte 0x0
 .byte 0x1
 .string "eh"

 .4byte __EXCEPTION_TABLE__
 .byte 0x1
 .byte 0x7c
 .byte 0x8
 .byte 0xc
 .byte 0x4
 .byte 0x4
 .byte 0x88
 .byte 0x1
 .align 4
.LECIE1:
 .set .LLCIE1,.LECIE1-.LSCIE1
 .4byte .LLFDE1
.LSFDE1:
 .4byte .LSFDE1-__FRAME_BEGIN__
 .4byte .LFB1
 .4byte .LFE1-.LFB1
 .byte 0x4
 .4byte .LCFI0-.LFB1
 .byte 0xe
 .byte 0x8
 .byte 0x85
 .byte 0x2
 .byte 0x4
 .4byte .LCFI1-.LCFI0
 .byte 0xd
 .byte 0x5
 .byte 0x4
 .4byte .LCFI3-.LCFI1
 .byte 0x2e
 .byte 0x10
 .byte 0x4
 .4byte .LCFI4-.LCFI3
 .byte 0x2e
 .byte 0x0
 .align 4
.LEFDE1:
 .set .LLFDE1,.LEFDE1-.LSFDE1
 .ident "GCC: (GNU) 3.0 20010416 (prerelease)"

-------------
Att3:

In file included from
../../../../gcc-20010416/libstdc++-v3/libsupc++/eh_alloc.cc:37:
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:32:20:
unwind.h: No such file or directory
In file included from
../../../../gcc-20010416/libstdc++-v3/libsupc++/eh_alloc.cc:37:
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:68:
'_Unwind_Exception'
   is used as a type, but is not defined as a type.
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:99:
`_Unwind_Exception'
   was not declared in this scope
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:99: parse
error
   before `)' token
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:112:
`_Unwind_Exception'
   was not declared in this scope
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:112: parse
error
   before `)' token
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:127: syntax
error    before `=' token
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:139: parse
error
   before `,' token
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:144: parse
error
   before `,' token
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:156:
`_Unwind_Exception'
   was not declared in this scope
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:156: `exc'
was not
   declared in this scope
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:157:
`__cxxabiv1::__get_exception_header_from_ue'
   declared as an `inline' variable
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:157: syntax
error    before `{' token
In file included from ../../../../gcc-20010416/gcc/gthr.h:102,
                 from
../../../../gcc-20010416/libstdc++-v3/libsupc++/eh_alloc.cc:38:
../../../../gcc-20010416/gcc/gthr-single.h:211: parse error before `
   __attribute__'
../../../../gcc-20010416/gcc/gthr-single.h: In function `int
   __gthread_mutex_lock(...)':
../../../../gcc-20010416/gcc/gthr-single.h:217: parse error before `
   __attribute__'
../../../../gcc-20010416/gcc/gthr-single.h:217: cannot declare static
function
   inside another function
../../../../gcc-20010416/gcc/gthr-single.h: In function `int
   __gthread_mutex_trylock(...)':
../../../../gcc-20010416/gcc/gthr-single.h:223: parse error before `
   __attribute__'
../../../../gcc-20010416/gcc/gthr-single.h:223: cannot declare static
function
   inside another function
../../../../gcc-20010416/libstdc++-v3/libsupc++/eh_alloc.cc: At top
level:
../../../../gcc-20010416/libstdc++-v3/libsupc++/unwind-cxx.h:157:
warning: `

__cxxabiv1::__cxa_exception*__cxxabiv1::__get_exception_header_from_ue'
   defined but not used
make[3]: *** [eh_alloc.lo] Error 1
make[3]: Leaving directory
`/home/paolo/Gcc-Test/gcc-build-20010416/i686-pc-linux-gnu/libstdc++-v3/libsupc++'

make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory
`/home/paolo/Gcc-Test/gcc-build-20010416/i686-pc-linux-gnu/libstdc++-v3'

make[1]: *** [all-recursive-am] Error 2
make[1]: Leaving directory
`/home/paolo/Gcc-Test/gcc-build-20010416/i686-pc-linux-gnu/libstdc++-v3'

make: *** [all-target-libstdc++-v3] Error 2




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]