[Bug c++/29661] FAIL: g++.dg/compat/eh/unexpected1 cp_compat_x_tst.o-cp_compat_y_tst.o execute

dave at hiauly1 dot hia dot nrc dot ca gcc-bugzilla@gcc.gnu.org
Sun Nov 5 18:49:00 GMT 2006



------- 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



More information about the Gcc-bugs mailing list