|
From: Bart V. A. <bar...@gm...> - 2007-11-29 20:55:18
|
Hello,
One of the Valgrind core features drd depends on for operating
correctly is the ability to recognize .got.plt sections. (This is
necessary to suppress data race reports on these sections.) It seems
like these sections are recognized correctly on AMD64, but not on
i386: when I insert the statement below in drd_instrument(), the drd
tool does not halt on this assert statement, although every
dynamically linked executable has a .got.plt section.
tl_assert(VG_(seginfo_sect_kind)(st->Ist.IMark.addr) != Vg_SectPLT);
Can anyone give me some advice where to start looking for the cause of
this phenomenon ?
More details:
$ uname -a
Linux ... 2.6.16.53-0.8-default #1 Fri Aug 31 13:07:27 UTC 2007 i686
i686 i386 GNU/Linux
$ VALGRIND_LIB=$PWD/.in_place coregrind/valgrind --tool=exp-drd
exp-drd/tests/fp_race -m
(false positives are reported on the .got.plt sections, while no data
races should be reported)
$ objdump -x exp-drd/tests/fp_race | grep plt
9 .rel.plt 00000060 08048464 08048464 00000464 2**2
11 .plt 000000d0 080484dc 080484dc 000004dc 2**2
21 .got.plt 0000003c 08049c0c 08049c0c 00000c0c 2**2
08048464 l d .rel.plt 00000000 .rel.plt
080484dc l d .plt 00000000 .plt
08049c0c l d .got.plt 00000000 .got.plt
08049c0c l O .got.plt 00000000 .hidden
_GLOBAL_OFFSET_TABLE_
--
Regards,
Bart Van Assche.
|