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

--- Comment #4 from Paul Floyd <pjfl...@wanadoo.fr> ---
Trying to see where the redir is going wrong and thinking that there is an
iFunc.

On RHEL, for instance, libc contains plenty:
nm /lib64/libc.so.6 | grep " i "
...
000000000008b100 i strcat
...

Just came accross this
https://maskray.me/blog/2021-01-18-gnu-indirect-function

And according to
https://github.com/freebsd/freebsd-src/blob/main/lib/libc/amd64/string/stpcpy.S
and
https://github.com/freebsd/freebsd-src/blob/main/lib/libc/amd64/amd64_archlevel.h
FreeBSD now has GNU indirect functions.

That means that vg_preloaded.c needs to change from

#elif defined(VGO_freebsd)

// nothing specific currently

#elif defined(VGO_solaris)

to containing something like the Linux version:

void * VG_NOTIFY_ON_LOAD(ifunc_wrapper) (void)
{
    OrigFn fn;
    Addr result = 0;
    Addr fnentry;

    /* Call the original indirect function and get it's result */
    VALGRIND_GET_ORIG_FN(fn);
    CALL_FN_W_v(result, fn);

    fnentry = result;

    VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__ADD_IFUNC_TARGET,
                                    fn.nraddr, fnentry, 0, 0, 0);
    return (void*)result;
}

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

Reply via email to