Uh oh... we passed a Cat into func(), but it won't eat rats. Should you overload func() so it takes a Cat*? If you have to derive more animals from Animal they would all need their own func().
The solution is to make eat() from the Animal class a virtual function:
Error running Valgrind on Gentoo Linux: the strlen problem
If you have ever tried to install Valgrind on Gentoo Linux you may have come across this error when you try to run the program:
==20032== Memcheck, a memory error detector ==20032== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==20032== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==20032== Command: ./1.x ==20032==
valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strlen valgrind: in an object with soname matching: ld-linux-x86-64.so.2 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-x86-64.so.2 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Cannot continue -- exiting now. Sorry.
As it turns out, this is a common error but the internet is awash with
confusing information so I will try to help by explain what I did to get
it working.
You don't need to reinstall Valgrind. It's fine. But what you do need to
do is re-install glibc but with special options enabled. Open up the
make.conf file in vi or your favourite editor: