https://bugs.kde.org/show_bug.cgi?id=384729

            Bug ID: 384729
           Summary: __libc_freeres inhibits cross-platform valgrind
           Product: valgrind
           Version: 3.13.0
          Platform: Fedora RPMs
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: memcheck
          Assignee: jsew...@acm.org
          Reporter: jrei...@bitwagon.com
  Target Milestone: ---

vgpreload_core-arm-linux.so from valgrind-3.13.0-6.fc27.armv7hl demands that
the symbol __libc_freeres exist [typically found in GNU libc.so.6], which
prevents that particular valgrind from checking apps whose libraries do not
have such a symbol, such as the libraries used by Android.  Many Android apps
run just fine on Linux (using the Android runtime linker, libc, libm, libdl,
etc.), and valgrind should be able to check them.

The complaint from one Android app is:
libc: CANNOT LINK EXECUTABLE "./my_app": cannot locate symbol "__libc_freeres"
referenced by "/usr/lib/valgrind/vgpreload_core-arm-inux.so"...

So, do not reference __libc_freeres directly.  Make it a Weak reference (check
the pointer value; if 0 then do not use it), or do an explicit lookup
equivalent to dlsym(handle, "__libc_freeres").

===== readelf --relocs /usr/lib/valgrind/vgpreload_core-arm-linux.so
Relocation section '.rel.plt' at offset 0x3d0 contains 4 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
0001100c  00000316 R_ARM_JUMP_SLOT   00000000   __cxa_finalize
00011010  00000416 R_ARM_JUMP_SLOT   00000000   _ZN9__gnu_cxx9__freere
00011014  00000616 R_ARM_JUMP_SLOT   00000000   __libc_freeres
00011018  00000816 R_ARM_JUMP_SLOT   00000000   __gmon_start__
=====

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to