On Fri, Mar 15, 2024 at 7:29 AM Richard Purdie <richard.pur...@linuxfoundation.org> wrote: > > With newer glibc versions, pthread was merged into the main library so there > is > no longer any need to link with -lpthread. On newer systems this means that > linker > flag is dropped from places like pkgconfig .pc files. If uninative then uses > this > newer library on an older system, the flag is missing and linker errors about > missing > symbols occur. > > Adding the linkage unconditionally to our uninative linking flags avoids that > problem > at a potential cost of slight over linking. >
There is another unintended consequence of linking pthreads unconditionally on older versions where certain functions which are required to be thread-safe are implemented as weak stubs in libc so single threaded programs do not incur the cost of ensuring thread safety, but when pthread it linked in, it will replace these stubs with thread safe versions which are correct in muti-threaded env but incur performance cost. I do not know how much of this is going to impact the uninative stuff but I thought I would mention it for reference. > Signed-off-by: Richard Purdie <richard.pur...@linuxfoundation.org> > --- > meta/classes-global/uninative.bbclass | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/meta/classes-global/uninative.bbclass > b/meta/classes-global/uninative.bbclass > index 9b8b4565dd4..d05b61c48eb 100644 > --- a/meta/classes-global/uninative.bbclass > +++ b/meta/classes-global/uninative.bbclass > @@ -143,8 +143,8 @@ def enable_uninative(d): > d.setVar("NATIVELSBSTRING", "universal%s" % > oe.utils.host_gcc_version(d)) > d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp") > d.appendVarFlag("SSTATEPOSTUNPACKFUNCS", "vardepvalueexclude", "| > uninative_changeinterp") > - d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined > -Wl,--dynamic-linker=${UNINATIVE_LOADER}") > - d.appendVarFlag("BUILD_LDFLAGS", "vardepvalueexclude", "| > -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER}") > + d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined > -Wl,--dynamic-linker=${UNINATIVE_LOADER} -Wl,-lpthread") > + d.appendVarFlag("BUILD_LDFLAGS", "vardepvalueexclude", "| > -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER} > -Wl,-lpthread") > d.appendVarFlag("BUILD_LDFLAGS", "vardepsexclude", > "UNINATIVE_LOADER") > d.prependVar("PATH", > "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:") > > -- > 2.40.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#197141): https://lists.openembedded.org/g/openembedded-core/message/197141 Mute This Topic: https://lists.openembedded.org/mt/104948451/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-