The solution is to rebuild my testing program:
$ gcc main.c
$ valgrind ./a.out 
==19235== Memcheck, a memory error detector
==19235== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==19235== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==19235== Command: ./a.out
==19235== 
hello world
==19235== 
==19235== HEAP SUMMARY:
==19235==     in use at exit: 0 bytes in 0 blocks
==19235==   total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
==19235== 
==19235== All heap blocks were freed -- no leaks are possible
==19235== 
==19235== For counts of detected and suppressed errors, rerun with: -v
==19235== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Problem solved.

On Thu, 24 Aug 2017 07:52:08 +0000
YuGiOhJCJ Mailing-List via Valgrind-users 
<valgrind-users@lists.sourceforge.net> wrote:

> Hello,
> 
> I have recently built my own package of glibc instead of using the one 
> provided by my operating system.
> 
> The result is that valgrind is now complaining:
> ---
> $ valgrind ./a.out 
> ==1445== Memcheck, a memory error detector
> ==1445== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
> ==1445== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
> ==1445== Command: ./a.out
> ==1445== 
> 
> 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.so.2
> valgrind:  was not found whilst processing
> valgrind:  symbols from the object with soname: ld-linux.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.
> ---
> 
> It seems that valgrind requires to not strip the dynamic linker.
> It's true that in my glibc package, I have stripped it:
> ---
> $ file /lib64/ld-2.26.so 
> /lib64/ld-2.26.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), 
> dynamically linked, stripped
> ---
> 
> So, I have rebuilt my own package of glibc without stripping the dynamic 
> linker.
> Here, you can see, it is no longer stripped:
> ---
> $ file /lib64/ld-2.26.so 
> /lib64/ld-2.26.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), 
> dynamically linked, not stripped
> ---
> 
> However, valgrind is still complaining:
> ---
> $ valgrind ./a.out 
> ==1445== Memcheck, a memory error detector
> ==1445== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
> ==1445== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
> ==1445== Command: ./a.out
> ==1445== 
> 
> 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.so.2
> valgrind:  was not found whilst processing
> valgrind:  symbols from the object with soname: ld-linux.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.
> ---
> 
> Why valgrind is still complaining please?
> 
> Thank you.
> Best regards.
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Valgrind-users mailing list
> Valgrind-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/valgrind-users

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to