When i use valgrind (with memcheck tool), i always have error about ld.so Reproducible: Always Steps to Reproduce: 1. valgrind --tool=memcheck ./sampleprogram Actual Results: acetik@electron ~ % valgrind ./a.out ==10842== Memcheck, a memory error detector for x86-linux. ==10842== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al. ==10842== Using valgrind-2.2.0, a program supervision framework for x86-linux. ==10842== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al. ==10842== For more details, rerun with: -v ==10842== ==10842== Conditional jump or move depends on uninitialised value(s) ==10842== at 0x1B8ECF84: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E5DFF: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8F2F75: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E4C8E: (within /lib/ld-2.3.4.so) ==10842== ==10842== Conditional jump or move depends on uninitialised value(s) ==10842== at 0x1B8ECF8F: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E5DFF: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8F2F75: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E4C8E: (within /lib/ld-2.3.4.so) ==10842== ==10842== Conditional jump or move depends on uninitialised value(s) ==10842== at 0x1B8ED0E0: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E5DFF: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8F2F75: (within /lib/ld-2.3.4.so) ==10842== by 0x1B8E4C8E: (within /lib/ld-2.3.4.so) . . . etc . . . Expected Results: give only errors of the program * dev-util/valgrind Latest version available: 2.2.0-r1 Latest version installed: 2.2.0-r1 Portage 2.0.51-r8 (default-linux/x86/2004.3, gcc-3.4.3, glibc-2.3.4.20041102-r0, 2.6.9-gentoo-r4 i686) ================================================================= System uname: 2.6.9-gentoo-r4 i686 Intel(R) Pentium(R) M processor 1500MHz Gentoo Base System version 1.6.8 Python: dev-lang/python-2.3.4 [2.3.4 (#1, Oct 24 2004, 10:03:47)] dev-lang/python: 2.3.4 sys-devel/autoconf: 2.59-r6, 2.13 sys-devel/automake: 1.8.5-r2, 1.5, 1.4_p6, 1.6.3, 1.7.9, 1.9.3 sys-devel/binutils: 2.15.92.0.2-r2 sys-devel/libtool: 1.5.10-r2 virtual/os-headers: 2.6.8.1-r1 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer -funroll-loops" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer -funroll-loops" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms" GENTOO_MIRRORS="http://ftp.Belnet.be/linux/gentoo http://gentoo.osuosl.org http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="x86 X acl acpi alsa avi berkdb bitmap-fonts cdr crypt cups dvd encode esd fam font-server foomaticdb fortran gdbm gif gnome gphoto2 gpm gstreamer gtk gtk2 imagemagick imlib ipv6 java javascript jpeg libcaca libwww mad mikmod mmx mmx2 motif mozilla mpeg ncurses nls nptl oggvorbis opengl oss pam pdflib perl png python quicktime readline samba sdl spell sse ssl tcltk tcpd tiff truetype truetype-fonts type1-fonts xml2 xmms xprint xv xvid zlib"
I'm runing a non-nptl system but get similar errors. But this ain't the first valgrind version to yield such errors - it started quite a while ago... I got used to it and just ignore them - but it would really sweet to see them removed...
The reason that these messages show up is probably that glibc/ld is stripped. Valgrind's default suppression files for glibc specify the messages to suppress using function names. I'll check some more next week.
I double checked and what I said was correct. If you really want to suppress any warnings from ld for instance, you can write a suppression with lines like this one: obj:/lib/ld-2.3.4.so Or you could decide not to strip glibc and check if the default glibc suppression file does the job. Check the valgrind documentation on suppressing errors for more details: http://developer.kde.org/~sewardj/docs-2.2.0/coregrind_core.html#suppress Note: by suppressing everything from system libraries, you may mask bugs in your own programs. If you pass a string with uninitialised values to printf, valgrind will only tell you something is wrong when it is executing code in glibc. If you suppress everything from glibc, you won't get anything at all.
ok, how to tell glibc not to strip? or maybe even more preferably just not to strip 'ld' ?