I feel this could have something to do with the GLOB_DAT/COPY relocations of the clobbered int type _ZTIi. So I checked my objects. My executable has the following entries:
Code: Select all
.rel.dyn
0804edf8 00000b05 R_386_COPY 0804edf8 _ZTIi
.dynsym
11: 0804edf8 8 OBJECT WEAK DEFAULT 18 _ZTIi
.symtab
231: 0804edf8 8 OBJECT WEAK DEFAULT 18 _ZTIi
Code: Select all
.rel.dyn
00016d68 0000b901 R_386_32 00016d7c _ZTIi => after load 0x080A4D68
00016d78 0000b901 R_386_32 00016d7c _ZTIi => after load 0x080A4D78
0001d58c 0000b906 R_386_GLOB_DAT 00016d7c _ZTIi => after load 0x080AB58C
.dynsm
185: 00016d7c 8 OBJECT WEAK DEFAULT 10 _ZTIi => after load 0x080A4D7C
.symtab
501: 00016d7c 8 OBJECT WEAK DEFAULT 10 _ZTIi => after load 0x080A4D7C
1. Apply R_386_32 relocations in shared object by copying value 0x0804EDF8 (position of _ZTIi in the executable) to addresses 0x080A4D68 and 0x080A4D78
2. Apply R_386_GLOB_DAT relocation in shared object by copying value 0x0804EDF8 (position of _ZTIi in the executable) to the position 0x080AB58C (offset from GLOB_DAT)
3. Apply R_386_COPY relocation in executable by copying 8 bytes from 0x080A4D7C (position of _ZTIi in the shared library) to the position 0x0804EDF8 (position of _ZTIi in the executable)
Is this way of performing the GLOB_DAT/COPY relocations correct? If it is, what else could cause the runtime to call abort() when throwing the exception?
Thanks in advance!!