This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Valgrind on AM335x

Hi All,

I have cross compiled valgrind-3.8.1 for am335x processor by using the arm toolchain provided in TI-SDK-5.0.4. But when i try to run this application on my target board,

i am getting the below mentioned error:

root@am335x-evm:~# ./valgrind --tool=memcheck --leak-check=yes --show-reachable=
yes --num-callers=20 --track-fds=yes ./memory_leak          
==1905== Memcheck, a memory error detector
==1905== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==1905== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==1905== Command: ./memory_leak
==1905==

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:      memcpy
valgrind:  in an object with soname matching:   ld-linux.so.3
valgrind:  was not found whilst processing
valgrind:  symbols from the object with soname: ld-linux.so.3
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.

From the below mentioned link, i came to know that, valgrind is supported in armv7a based processor.

http://e2e.ti.com/support/embedded/linux/f/354/t/93606.aspx

Please let me know the solution of the above mentioned issue.

Regards,

Ravi Chobey

  • Hi All,

    I have tried to sort the issue mentioned above, by trying to install the "glic-debug" related ipks, but still while executing the above mentioned program i am getting the same error.Please check the error for your reference:

    root@am335x-evm:/# cd valgrind_ipks/
    root@am335x-evm:/valgrind_ipks# ls
    glibc-dbg_2.12.2-r10.6_armv7a.ipk
    glibc-extra-nss_2.12.2-r10.6_armv7a.ipk
    libc6-dev_2.12.2-r10.6_armv7a.ipk
    libc6_2.12.2-r10.6_armv7a.ipk
    libsegfault_2.12.2-r10.6_armv7a.ipk
    libthread-db1_2.12.2-r10.6_armv7a.ipk


    root@am335x-evm:/valgrind_ipks# opkg install libsegfault_2.12.2-r10.6_armv7a.ipk
     Installing libsegfault (2.12.2-r10.6) to root...
    Configuring libsegfault.


    root@am335x-evm:/valgrind_ipks# opkg install libthread-db1_2.12.2-r10.6_armv7a.i
    pk
    Installing libthread-db1 (2.12.2-r10.6) to root...
    Configuring libthread-db1.


    root@am335x-evm:/valgrind_ipks# opkg install libc6_2.12.2-r10.6_armv7a.ipk
    Installing libc6 (2.12.2-r10.6) to root...
    Configuring libc6.


    root@am335x-evm:/valgrind_ipks# opkg install libc6-dev_2.12.2-r10.6_armv7a.ipk
    Installing libc6-dev (2.12.2-r10.6) to root...
    Collected errors:
     * satisfy_dependencies_for: Cannot satisfy the following dependencies for libc6-dev:
     *      glibc-extra-nss *
     * opkg_install_cmd: Cannot install package libc6-dev.


    root@am335x-evm:/valgrind_ipks# opkg install glibc-extra-nss_2.12.2-r10.6_armv7a
    .ipk
    Installing glibc-extra-nss (2.12.2-r10.6) to root...
    Configuring glibc-extra-nss.


    root@am335x-evm:/valgrind_ipks# opkg install libc6-dev_2.12.2-r10.6_armv7a.ipk
    Installing libc6-dev (2.12.2-r10.6) to root...
    Configuring libc6-dev.


    root@am335x-evm:/valgrind_ipks# opkg install glibc-dbg_2.12.2-r10.6_armv7a.ipk
    Installing glibc-dbg (2.12.2-r10.6) to root...
    glibc-dbg: unsatisfied recommendation for libsegfault-dbg
    glibc-dbg: unsatisfied recommendation for glibc-extra-nss-dbg
    glibc-dbg: unsatisfied recommendation for glibc-thread-db-dbg
    Configuring glibc-dbg.

    root@am335x-evm:~# ls
    memory_leak  valgrind
    root@am335x-evm:~# ./valgrind ./memory_leak
    ==1644== Memcheck, a memory error detector
    ==1644== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
    ==1644== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
    ==1644== Command: ./memory_leak
    ==1644==

    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:      memcpy
    valgrind:  in an object with soname matching:   ld-linux.so.3
    valgrind:  was not found whilst processing
    valgrind:  symbols from the object with soname: ld-linux.so.3
    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.

    Please support in sorting this issue.

    Regards,

    Ravi

  • I know this thread is old, but I thought I would post a fix in case anyone else comes across this.

    This issue is gone in SDK 6.0. It has a newer version of ld-linux (although I'm not sure that's why this is fixed).

    If using one of the SDK 5.x filesystems, the following thread suggests commenting out a couple references to memcpy and strlen in coregrind/m_redir.c

    For details, take a look at this thread:
    http://sourceforge.net/p/valgrind/mailman/message/30887009/

  • Hi,
    I am also facing same issue.
    i done code as suggested in "sourceforge.net/.../30887009" but still observing the same issue.
    Can someone please help me how i can resolve the same.

    My board configuration as
    root@k2l-evm:/root/Valgrind/cross_compile/bin# uname -a
    Linux k2l-evm 3.10.10 #1 SMP Thu May 7 19:41:12 KST 2015 armv7l GNU/Linux

    root@k2l-evm:/root/Valgrind/cross_compile/bin# valgrind --leak-check=yes --gen-suppressions=yes ./a.out
    ==2830== Memcheck, a memory error detector
    ==2830== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
    ==2830== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
    ==2830== Command: ./a.out
    ==2830==

    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: strcmp
    valgrind: in an object with soname matching: ld-linux-armhf.so.3
    valgrind: was not found whilst processing
    valgrind: symbols from the object with soname: ld-linux-armhf.so.3
    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.

    root@k2l-evm:/root/Valgrind/cross_compile/bin#
  • Issue was resolved.
    Thanks
  • How did you resolve the issue?  I'm running into the same thing.  And I'm wondering if it's because I have a stripped dynamic linker, ld-linux-armhf.so.3.

  • Please refer to the below link for resolving this: