All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] glibc: package the stub .a libaries into glibc-dev
@ 2021-08-17 22:29 Ross Burton
  2021-08-17 23:46 ` [OE-core] " Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Ross Burton @ 2021-08-17 22:29 UTC (permalink / raw)
  To: openembedded-core

In glibc 2.34, the libraries libpthread, libdl, libutil, libanl have
been integrated into libc. To retain compatibility with old binaries the
shared libaries are still shipped but are empty, and to keep software
building there are empty static libraries.

However, these static libraries get packaged into glibc-staticdev (as
they should be), but by this design they should be in glibc-dev.

https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/recipes-core/glibc/glibc-package.inc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index 3026aec9b6f..56fbf8b08ce 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -22,6 +22,7 @@ ARCH_DYNAMIC_LOADER = ""
 ARCH_DYNAMIC_LOADER:aarch64 = "ld-linux-${TARGET_ARCH}.so.1"
 libc_baselibs:append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
 INSANE_SKIP:${PN}:append:aarch64 = " libdir"
+INSANE_SKIP:${PN}-dev += "staticdev"
 
 FILES:${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
 RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
@@ -38,7 +39,7 @@ FILES:sln = "${base_sbindir}/sln"
 FILES:${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
 FILES:libsotruss = "${libdir}/audit/sotruss-lib.so"
 FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
-FILES:${PN}-dev += "${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
+FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
 RDEPENDS:${PN}-dev = "linux-libc-headers-dev"
 FILES:${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
 FILES:nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_unitdir}/system/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] glibc: package the stub .a libaries into glibc-dev
  2021-08-17 22:29 [PATCH] glibc: package the stub .a libaries into glibc-dev Ross Burton
@ 2021-08-17 23:46 ` Khem Raj
  2021-08-18  0:40   ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2021-08-17 23:46 UTC (permalink / raw)
  To: Ross Burton; +Cc: Patches and discussions about the oe-core layer

On Tue, Aug 17, 2021 at 3:29 PM Ross Burton <ross@burtonini.com> wrote:
>
> In glibc 2.34, the libraries libpthread, libdl, libutil, libanl have
> been integrated into libc. To retain compatibility with old binaries the
> shared libaries are still shipped but are empty, and to keep software
> building there are empty static libraries.
>
> However, these static libraries get packaged into glibc-staticdev (as
> they should be), but by this design they should be in glibc-dev.
>
> https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html
>

this patch is ok.

> Signed-off-by: Ross Burton <ross.burton@arm.com>
> ---
>  meta/recipes-core/glibc/glibc-package.inc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
> index 3026aec9b6f..56fbf8b08ce 100644
> --- a/meta/recipes-core/glibc/glibc-package.inc
> +++ b/meta/recipes-core/glibc/glibc-package.inc
> @@ -22,6 +22,7 @@ ARCH_DYNAMIC_LOADER = ""
>  ARCH_DYNAMIC_LOADER:aarch64 = "ld-linux-${TARGET_ARCH}.so.1"
>  libc_baselibs:append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
>  INSANE_SKIP:${PN}:append:aarch64 = " libdir"
> +INSANE_SKIP:${PN}-dev += "staticdev"
>
>  FILES:${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
>  RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
> @@ -38,7 +39,7 @@ FILES:sln = "${base_sbindir}/sln"
>  FILES:${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
>  FILES:libsotruss = "${libdir}/audit/sotruss-lib.so"
>  FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
> -FILES:${PN}-dev += "${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
> +FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
>  RDEPENDS:${PN}-dev = "linux-libc-headers-dev"
>  FILES:${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
>  FILES:nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_unitdir}/system/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \
> --
> 2.32.0
>
>
> 
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] glibc: package the stub .a libaries into glibc-dev
  2021-08-17 23:46 ` [OE-core] " Khem Raj
@ 2021-08-18  0:40   ` Khem Raj
  2021-08-18  7:00     ` Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2021-08-18  0:40 UTC (permalink / raw)
  To: Ross Burton; +Cc: Patches and discussions about the oe-core layer

hmm I am seeing pseudo build failures on master-next on all arches see
[1].  I wonder if this is related

https://errors.yoctoproject.org/Errors/Details/601473/

On Tue, Aug 17, 2021 at 4:46 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> On Tue, Aug 17, 2021 at 3:29 PM Ross Burton <ross@burtonini.com> wrote:
> >
> > In glibc 2.34, the libraries libpthread, libdl, libutil, libanl have
> > been integrated into libc. To retain compatibility with old binaries the
> > shared libaries are still shipped but are empty, and to keep software
> > building there are empty static libraries.
> >
> > However, these static libraries get packaged into glibc-staticdev (as
> > they should be), but by this design they should be in glibc-dev.
> >
> > https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html
> >
>
> this patch is ok.
>
> > Signed-off-by: Ross Burton <ross.burton@arm.com>
> > ---
> >  meta/recipes-core/glibc/glibc-package.inc | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
> > index 3026aec9b6f..56fbf8b08ce 100644
> > --- a/meta/recipes-core/glibc/glibc-package.inc
> > +++ b/meta/recipes-core/glibc/glibc-package.inc
> > @@ -22,6 +22,7 @@ ARCH_DYNAMIC_LOADER = ""
> >  ARCH_DYNAMIC_LOADER:aarch64 = "ld-linux-${TARGET_ARCH}.so.1"
> >  libc_baselibs:append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
> >  INSANE_SKIP:${PN}:append:aarch64 = " libdir"
> > +INSANE_SKIP:${PN}-dev += "staticdev"
> >
> >  FILES:${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
> >  RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
> > @@ -38,7 +39,7 @@ FILES:sln = "${base_sbindir}/sln"
> >  FILES:${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
> >  FILES:libsotruss = "${libdir}/audit/sotruss-lib.so"
> >  FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
> > -FILES:${PN}-dev += "${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
> > +FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
> >  RDEPENDS:${PN}-dev = "linux-libc-headers-dev"
> >  FILES:${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
> >  FILES:nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_unitdir}/system/nscd* ${sysconfdir}/tmpfiles.d/nscd.conf \
> > --
> > 2.32.0
> >
> >
> > 
> >

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] glibc: package the stub .a libaries into glibc-dev
  2021-08-18  0:40   ` Khem Raj
@ 2021-08-18  7:00     ` Richard Purdie
  2021-08-18 13:42       ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Richard Purdie @ 2021-08-18  7:00 UTC (permalink / raw)
  To: Khem Raj, Ross Burton; +Cc: Patches and discussions about the oe-core layer

On Tue, 2021-08-17 at 17:40 -0700, Khem Raj wrote:
> hmm I am seeing pseudo build failures on master-next on all arches see
> [1].  I wonder if this is related
> 
> https://errors.yoctoproject.org/Errors/Details/601473/

I think that would be an issue with my patch in master-next to try and fix
other pseudo issues with 2.34 hosts.

Basically we need pseudo to work with older glibc where the dlsym/dlvsym/dlerror
functions are in libdl. This is because libpseudo may be loaded against host binaries
which were not linked with glibc 2.34 but something older.

To do that, we need to inject older versioning but the version to use is arch 
specific. I have a patch covering 32/64 bit x86 and arm but I haven't got further
than that:


++#if defined (__aarch64__)
++#define DLSYMVER "2.17"
++#define DLSYMVER2 "2.17"
++#elif defined(__i386__)
++#define DLSYMVER "2.0"
++#define DLSYMVER2 "2.1"
++#else
++#define DLSYMVER "2.2.5"
++#define DLSYMVER2 "2.2.5"
++#endif
++
++__asm__(".symver dlerror,dlerror@GLIBC_" DLSYMVER);
++__asm__(".symver dlvsym,dlvsym@GLIBC_" DLSYMVER2);
++__asm__(".symver dlsym,dlsym@GLIBC_" DLSYMVER);


I may need help finishing this off for other arches people are building it for. So far
I was using this as a test to see if this would even work!

Cheers,

Richard


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] glibc: package the stub .a libaries into glibc-dev
  2021-08-18  7:00     ` Richard Purdie
@ 2021-08-18 13:42       ` Khem Raj
  2021-08-18 17:16         ` Richard Purdie
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2021-08-18 13:42 UTC (permalink / raw)
  To: Richard Purdie
  Cc: Patches and discussions about the oe-core layer, Ross Burton

[-- Attachment #1: Type: text/plain, Size: 1699 bytes --]

On Wed, Aug 18, 2021 at 12:00 AM Richard Purdie <
richard.purdie@linuxfoundation.org> wrote:

> On Tue, 2021-08-17 at 17:40 -0700, Khem Raj wrote:
> > hmm I am seeing pseudo build failures on master-next on all arches see
> > [1].  I wonder if this is related
> >
> > https://errors.yoctoproject.org/Errors/Details/601473/
>
> I think that would be an issue with my patch in master-next to try and fix
> other pseudo issues with 2.34 hosts.
>
> Basically we need pseudo to work with older glibc where the
> dlsym/dlvsym/dlerror
> functions are in libdl. This is because libpseudo may be loaded against
> host binaries
> which were not linked with glibc 2.34 but something older.
>
> To do that, we need to inject older versioning but the version to use is
> arch
> specific. I have a patch covering 32/64 bit x86 and arm but I haven't got
> further
> than that:
>
>
> ++#if defined (__aarch64__)
> ++#define DLSYMVER "2.17"
> ++#define DLSYMVER2 "2.17"
> ++#elif defined(__i386__)
> ++#define DLSYMVER "2.0"
> ++#define DLSYMVER2 "2.1"
> ++#else
> ++#define DLSYMVER "2.2.5"
> ++#define DLSYMVER2 "2.2.5"
> ++#endif
> ++
> ++__asm__(".symver dlerror,dlerror@GLIBC_" DLSYMVER);
> ++__asm__(".symver dlvsym,dlvsym@GLIBC_" DLSYMVER2);
> ++__asm__(".symver dlsym,dlsym@GLIBC_" DLSYMVER);
>
>
> I may need help finishing this off for other arches people are building it
> for. So far
> I was using this as a test to see if this would even work!


I think we should disable building pseudo for targets which are not used as
build hosts so essentially your patch is good with another addition of
compatible host string


>
> Cheers,
>
> Richard
>
>

[-- Attachment #2: Type: text/html, Size: 2454 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [OE-core] [PATCH] glibc: package the stub .a libaries into glibc-dev
  2021-08-18 13:42       ` Khem Raj
@ 2021-08-18 17:16         ` Richard Purdie
  0 siblings, 0 replies; 6+ messages in thread
From: Richard Purdie @ 2021-08-18 17:16 UTC (permalink / raw)
  To: Khem Raj; +Cc: Patches and discussions about the oe-core layer, Ross Burton

On Wed, 2021-08-18 at 06:42 -0700, Khem Raj wrote:
> 
> 
> On Wed, Aug 18, 2021 at 12:00 AM Richard Purdie <richard.purdie@linuxfoundation.org> wrote:
> > On Tue, 2021-08-17 at 17:40 -0700, Khem Raj wrote:
> > > hmm I am seeing pseudo build failures on master-next on all arches see
> > > [1].  I wonder if this is related
> > > 
> > > https://errors.yoctoproject.org/Errors/Details/601473/
> > 
> > I think that would be an issue with my patch in master-next to try and fix
> > other pseudo issues with 2.34 hosts.
> > 
> > Basically we need pseudo to work with older glibc where the dlsym/dlvsym/dlerror
> > functions are in libdl. This is because libpseudo may be loaded against host binaries
> > which were not linked with glibc 2.34 but something older.
> > 
> > To do that, we need to inject older versioning but the version to use is arch 
> > specific. I have a patch covering 32/64 bit x86 and arm but I haven't got further
> > than that:
> > 
> > 
> > ++#if defined (__aarch64__)
> > ++#define DLSYMVER "2.17"
> > ++#define DLSYMVER2 "2.17"
> > ++#elif defined(__i386__)
> > ++#define DLSYMVER "2.0"
> > ++#define DLSYMVER2 "2.1"
> > ++#else
> > ++#define DLSYMVER "2.2.5"
> > ++#define DLSYMVER2 "2.2.5"
> > ++#endif
> > ++
> > ++__asm__(".symver dlerror,dlerror@GLIBC_" DLSYMVER);
> > ++__asm__(".symver dlvsym,dlvsym@GLIBC_" DLSYMVER2);
> > ++__asm__(".symver dlsym,dlsym@GLIBC_" DLSYMVER);
> > 
> > 
> > I may need help finishing this off for other arches people are building it for. So far
> > I was using this as a test to see if this would even work!
> > 
> 
> 
> I think we should disable building pseudo for targets which are not used as build hosts so essentially your
> patch is good with another addition of compatible host string 

I've improved the patch a bit and I think it should work in most places we build 
things now. Patch is on the list.

Cheers,

Richard



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-08-18 17:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-17 22:29 [PATCH] glibc: package the stub .a libaries into glibc-dev Ross Burton
2021-08-17 23:46 ` [OE-core] " Khem Raj
2021-08-18  0:40   ` Khem Raj
2021-08-18  7:00     ` Richard Purdie
2021-08-18 13:42       ` Khem Raj
2021-08-18 17:16         ` Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.