From patchwork Thu Nov 19 18:31:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: valgrind: helgrind: Intercept libc functions From: Stacy Gaikovaia X-Patchwork-Id: 178064 Message-Id: <20201119183151.16752-1-stacy.gaikovaia@windriver.com> To: openembedded-core@lists.openembedded.org Date: Thu, 19 Nov 2020 10:31:51 -0800 From: Stacy Gaikovaia PTH_FUNC definition needs to be modified in order to intercept posix thread functions in both libc and libpthread. In order to handle this in helgrind, weak alias the pthread functions in glibc. This also prevents any need for a special case for musl, where these definitions aren't duplicated. See https://bugs.kde.org/show_bug.cgi?id=428909 for additional discussion. Signed-off-by: Paul Floyd Signed-off-by: Stacy Gaikovaia --- ...01-helgrind-Intercept-libc-functions.patch | 45 +++++++++++++++++++ .../valgrind/valgrind_3.16.1.bb | 1 + 2 files changed, 46 insertions(+) create mode 100644 meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#144826): https://lists.openembedded.org/g/openembedded-core/message/144826 Mute This Topic: https://lists.openembedded.org/mt/78371779/1003190 Group Owner: openembedded-core+owner@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mhalstead@linuxfoundation.org] -=-=-=-=-=-=-=-=-=-=-=- diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch b/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch new file mode 100644 index 0000000000..b3ab329bd8 --- /dev/null +++ b/meta/recipes-devtools/valgrind/valgrind/0001-helgrind-Intercept-libc-functions.patch @@ -0,0 +1,45 @@ +From d02cafce8dd29df0309935beefbfbca1d8e29862 Mon Sep 17 00:00:00 2001 +From: Paul Floyd +Date: Wed, 18 Nov 2020 12:49:20 -0400 +Subject: [PATCH] helgrind: Intercept libc functions + +Signed-off-by: Paul Floyd + +PTH_FUNC definition needs to be modified in order to +intercept posix threa functions in both libc and +libpthread. In order to handle this in helgrind, weak alias +the pthread functions in glibc. + +Signed-off-by: Stacy Gaikovaia + +--- + helgrind/hg_intercepts.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/helgrind/hg_intercepts.c b/helgrind/hg_intercepts.c +index a10c3a4a3..4b571bef9 100644 +--- a/helgrind/hg_intercepts.c ++++ b/helgrind/hg_intercepts.c +@@ -77,6 +77,11 @@ + /*--- ---*/ + /*----------------------------------------------------------------*/ + ++#define hg_expand(tok) #tok ++#define hg_str(tok) hg_expand(tok) ++# define hg_weak_alias(name, aliasname) \ ++ extern __typeof (name) aliasname __attribute__ ((weak, alias(hg_str(name)))) ++ + #if defined(VGO_solaris) + /* On Solaris, libpthread is just a filter library on top of libc. + * Threading and synchronization functions in runtime linker are not +@@ -93,6 +98,7 @@ + #else + #define PTH_FUNC(ret_ty, f, args...) \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args); \ ++ hg_weak_alias(I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f), I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBC_SONAME,f)); \ + ret_ty I_WRAP_SONAME_FNNAME_ZZ(VG_Z_LIBPTHREAD_SONAME,f)(args) + #define CREQ_PTHREAD_T pthread_t + #define SEM_ERROR errno +-- +2.17.1 + diff --git a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb index bcba55f327..5db181ac14 100644 --- a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb +++ b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb @@ -42,6 +42,7 @@ SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \ file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ file://0001-drd-Port-to-Fedora-33.patch \ file://0001-drd-musl-fix.patch \ + file://0001-helgrind-Intercept-libc-functions.patch \ " SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589" SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca"