This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/23278] New: SJLJ-exceptions broken
- From: "jacob dot navia at ants dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Aug 2005 19:50:55 -0000
- Subject: [Bug c++/23278] New: SJLJ-exceptions broken
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
We have a program (c++) that needs c++ SJLJ exceptions. We have built all
compilers from 3.3.1 to 3.3.6 and they all have the same bug:
In the first throw that the program does, we get an exception in the runtime
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1166014832 (LWP 24573)]
parse_lsda_header (context=0x457f6978,
p=0xd5a0400000 <Address 0xd5a0400000 out of bounds>, info=0x457f6900)
at ../../../../gcc-3.3.6/libstdc++-v3/libsupc++/eh_personality.cc:62
62 lpstart_encoding = *p++;
The variable p has a wrong address: 0xd5a0400000. This address is NOT completely
random however. It is always the address of a function, in this case :
.gnu.linkonce.d._ZTV18QueryRowLimitCheck
0x0000000000d5a040 0x330 ../Debug/libdatabaselibrary.a(GenerateWhere.o)
0x0000000000d5a040 _ZTV18QueryRowLimitCheck
I gathered that from the map file.
In different versions of the compiler the specific function changes, but the
overall pattern is the same:
The high 32 bits of the address are filled with the low 32 bits of the address
of a function.
A bug somewhere???????
WHERE????
I have been working already almost a week in this and I get nowhere. Please
help.
Thanks in advance
jacob
--
Summary: SJLJ-exceptions broken
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jacob dot navia at ants dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: gcc-3.3.3 to gcc-3.3.6
GCC target triplet: amd64
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23278