------- Comment #3 from dave at hiauly1 dot hia dot nrc dot ca 2006-11-05 18:49 ------- Subject: Re: FAIL: g++.dg/compat/eh/unexpected1 cp_compat_x_tst.o-cp_compat_y_tst.o execute
> I think these all are caused by bugs in binutils after the following patch: > http://gcc.gnu.org/ml/gcc-cvs/2006-10/msg00787.html At the moment, I don't quite see the connection. Looking at cxa_vec, the program aborts in base_of_encoded_value: Breakpoint 1, base_of_encoded_value (encoding=<value optimized out>, context=0xc04f6ea8) at /home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/../gcc/unwind-pe.h:122 122 __gxx_abort (); (gdb) bt #0 base_of_encoded_value (encoding=<value optimized out>, context=0xc04f6ea8) at /home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/../gcc/unwind-pe.h:122 #1 0x40243e18 in parse_lsda_header (context=0xc04f6ea8, p=0x40173001 "ELF\001\002\001\003", info=0xc04f749c) at /home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/../gcc/unwind-pe.h:286 #2 0x4024431c in __gxx_personality_v0 (version=<value optimized out>, actions=1, exception_class=<value optimized out>, ue_header=0x14090, context=0xc04f6ea8) at ../../../../gcc/libstdc++-v3/libsupc++/eh_personality.cc:435 #3 0x4024431c in __gxx_personality_v0 (version=<value optimized out>, actions=1, exception_class=<value optimized out>, ue_header=0x14090, context=0xc04f6ea8) at ../../../../gcc/libstdc++-v3/libsupc++/eh_personality.cc:435 The encoding passed to base_of_encoded_value is 0x7F. This value arises in parsing the lsda header. // Find @LPStart, the base to which landing pad offsets are relative. lpstart_encoding = *p++; We have this context: (gdb) p *context $17 = {reg = {0x0, 0x0, 0xc04f6c2c, 0xc04f6c40, 0xc04f6c84, 0xc04f6c80, 0xc04f73d4, 0xc04f73d0, 0xc04f73cc, 0xc04f73c8, 0xc04f73c4, 0xc04f73c0, 0xc04f73bc, 0xc04f73b8, 0xc04f73b4, 0xc04f73b0, 0xc04f73ac, 0xc04f73a8, 0xc04f73a4, 0x0, 0xc04f7394, 0xc04f7398, 0xc04f739c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc04f73a0, 0x0 <repeats 16 times>, 0xc04f7430, 0xc04f7434, 0xc04f7428, 0xc04f742c, 0xc04f7420, 0xc04f7424, 0xc04f7418, 0xc04f741c, 0xc04f7410, 0xc04f7414, 0xc04f7408, 0xc04f740c, 0xc04f7400, 0xc04f7404, 0xc04f73f8, 0xc04f73fc, 0xc04f73f0, 0xc04f73f4, 0xc04f73e8, 0xc04f73ec, 0x0 <repeats 22 times>}, cfa = 0xc04f6c40, ra = 0x40246f00, lsda = 0x40173000, bases = {tbase = 0x0, dbase = 0x0, func = 0x40246e7c}, args_size = 0, signal_frame = 0 '\0', by_value = '\0' <repeats 89 times>} (gdb) x/20x p 0x40173000: 0x7f454c46 0x01020103 0x00000000 0x00000000 0x40173010: 0x0003000f 0x00000001 0x00042a40 0x00000034 0x40173020: 0x00496290 0x00000210 0x00340020 0x00040028 0x40173030: 0x00260023 0x00000001 0x00000000 0x00000000 0x40173040: 0x00000000 0x000f7de4 0x000f7de4 0x00000005 Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29661